diff --git a/docs/hugo/content/reference/_index.md b/docs/hugo/content/reference/_index.md index 22038f6e586..61e46b1ed86 100644 --- a/docs/hugo/content/reference/_index.md +++ b/docs/hugo/content/reference/_index.md @@ -198,13 +198,22 @@ These resource(s) are available for use in the current release of ASO. Different To install the CRDs for these resources, your ASO configuration must include `containerregistry.azure.com/*` as a one of the configured CRD patterns. See [CRD Management in ASO](https://azure.github.io/azure-service-operator/guide/crd-management/) for details on doing this for both [Helm](https://azure.github.io/azure-service-operator/guide/crd-management/#helm) and [YAML](https://azure.github.io/azure-service-operator/guide/crd-management/#yaml) based installations. +### Next Release + +Development of these new resources is complete and they will be available in the next release of ASO. + +| Resource | ARM Version | CRD Version | Supported From | Sample | +|---------------------|-------------|---------------|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------| +| Registry | 2023-07-01 | v1api20230701 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/containerregistry/v1api20230701/v1api20230701_registry.yaml) | +| RegistryReplication | 2023-07-01 | v1api20230701 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/containerregistry/v1api20230701/v1api20230701_registryreplication.yaml) | + ### Released These resource(s) are available for use in the current release of ASO. Different versions of a given resource reflect different versions of the Azure ARM API. -| Resource | ARM Version | CRD Version | Supported From | Sample | -|----------------------------------------------------------------------------------------------------------------------------------------------------------|-------------|---------------|----------------|----------------------------------------------------------------------------------------------------------------------------------| -| [Registry](https://azure.github.io/azure-service-operator/reference/containerregistry/v1api20210901/#containerregistry.azure.com/v1api20210901.Registry) | 2021-09-01 | v1api20210901 | v2.0.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/containerregistry/v1api/v1api20210901_registry.yaml) | +| Resource | ARM Version | CRD Version | Supported From | Sample | +|----------------------------------------------------------------------------------------------------------------------------------------------------------|-------------|---------------|----------------|------------------------------------------------------------------------------------------------------------------------------------------| +| [Registry](https://azure.github.io/azure-service-operator/reference/containerregistry/v1api20210901/#containerregistry.azure.com/v1api20210901.Registry) | 2021-09-01 | v1api20210901 | v2.0.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/containerregistry/v1api20210901/v1api20210901_registry.yaml) | ## ContainerService diff --git a/docs/hugo/content/reference/containerregistry/_index.md b/docs/hugo/content/reference/containerregistry/_index.md index 432cb6de42d..ab4cf016030 100644 --- a/docs/hugo/content/reference/containerregistry/_index.md +++ b/docs/hugo/content/reference/containerregistry/_index.md @@ -5,11 +5,20 @@ no_list: true --- To install the CRDs for these resources, your ASO configuration must include `containerregistry.azure.com/*` as a one of the configured CRD patterns. See [CRD Management in ASO](https://azure.github.io/azure-service-operator/guide/crd-management/) for details on doing this for both [Helm](https://azure.github.io/azure-service-operator/guide/crd-management/#helm) and [YAML](https://azure.github.io/azure-service-operator/guide/crd-management/#yaml) based installations. +### Next Release + +Development of these new resources is complete and they will be available in the next release of ASO. + +| Resource | ARM Version | CRD Version | Supported From | Sample | +|---------------------|-------------|---------------|----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------| +| Registry | 2023-07-01 | v1api20230701 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/containerregistry/v1api20230701/v1api20230701_registry.yaml) | +| RegistryReplication | 2023-07-01 | v1api20230701 | v2.12.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/containerregistry/v1api20230701/v1api20230701_registryreplication.yaml) | + ### Released These resource(s) are available for use in the current release of ASO. Different versions of a given resource reflect different versions of the Azure ARM API. -| Resource | ARM Version | CRD Version | Supported From | Sample | -|----------------------------------------------------------------------------------------------------------------------------------------------------------|-------------|---------------|----------------|----------------------------------------------------------------------------------------------------------------------------------| -| [Registry](https://azure.github.io/azure-service-operator/reference/containerregistry/v1api20210901/#containerregistry.azure.com/v1api20210901.Registry) | 2021-09-01 | v1api20210901 | v2.0.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/containerregistry/v1api/v1api20210901_registry.yaml) | +| Resource | ARM Version | CRD Version | Supported From | Sample | +|----------------------------------------------------------------------------------------------------------------------------------------------------------|-------------|---------------|----------------|------------------------------------------------------------------------------------------------------------------------------------------| +| [Registry](https://azure.github.io/azure-service-operator/reference/containerregistry/v1api20210901/#containerregistry.azure.com/v1api20210901.Registry) | 2021-09-01 | v1api20210901 | v2.0.0 | [View](https://github.com/Azure/azure-service-operator/tree/main/v2/samples/containerregistry/v1api20210901/v1api20210901_registry.yaml) | diff --git a/v2/api/containerregistry/customizations/registry_extension_types_gen.go b/v2/api/containerregistry/customizations/registry_extension_types_gen.go index b8f29922dbe..d890c980f9e 100644 --- a/v2/api/containerregistry/customizations/registry_extension_types_gen.go +++ b/v2/api/containerregistry/customizations/registry_extension_types_gen.go @@ -5,7 +5,9 @@ package customizations import ( v20210901 "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20210901" - storage "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20210901/storage" + v20210901s "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20210901/storage" + v20230701 "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20230701" + v20230701s "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20230701/storage" "github.com/Azure/azure-service-operator/v2/pkg/genruntime" ) @@ -16,5 +18,7 @@ type RegistryExtension struct { func (extension *RegistryExtension) GetExtendedResources() []genruntime.KubernetesResource { return []genruntime.KubernetesResource{ &v20210901.Registry{}, - &storage.Registry{}} + &v20210901s.Registry{}, + &v20230701.Registry{}, + &v20230701s.Registry{}} } diff --git a/v2/api/containerregistry/customizations/registry_replication_extension_types_gen.go b/v2/api/containerregistry/customizations/registry_replication_extension_types_gen.go new file mode 100644 index 00000000000..6a403811a1d --- /dev/null +++ b/v2/api/containerregistry/customizations/registry_replication_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 ( + v20230701 "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20230701" + storage "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20230701/storage" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" +) + +type RegistryReplicationExtension struct { +} + +// GetExtendedResources Returns the KubernetesResource slice for Resource versions +func (extension *RegistryReplicationExtension) GetExtendedResources() []genruntime.KubernetesResource { + return []genruntime.KubernetesResource{ + &v20230701.RegistryReplication{}, + &storage.RegistryReplication{}} +} diff --git a/v2/api/containerregistry/customizations/structure.txt b/v2/api/containerregistry/customizations/structure.txt index 416a84c200b..a0a1e21c3e6 100644 --- a/v2/api/containerregistry/customizations/structure.txt +++ b/v2/api/containerregistry/customizations/structure.txt @@ -2,3 +2,4 @@ github.com/Azure/azure-service-operator/v2/api/containerregistry/customizations ------------------------------------------------------------------------------- RegistryExtension: Object (0 properties) +RegistryReplicationExtension: Object (0 properties) diff --git a/v2/api/containerregistry/v1api20210901/registry_types_gen.go b/v2/api/containerregistry/v1api20210901/registry_types_gen.go index 0ad99f49e28..aadb050ad9d 100644 --- a/v2/api/containerregistry/v1api20210901/registry_types_gen.go +++ b/v2/api/containerregistry/v1api20210901/registry_types_gen.go @@ -53,22 +53,36 @@ var _ conversion.Convertible = &Registry{} // ConvertFrom populates our Registry from the provided hub Registry func (registry *Registry) ConvertFrom(hub conversion.Hub) error { - source, ok := hub.(*storage.Registry) - if !ok { - return fmt.Errorf("expected containerregistry/v1api20210901/storage/Registry but received %T instead", hub) + // intermediate variable for conversion + var source storage.Registry + + err := source.ConvertFrom(hub) + if err != nil { + return eris.Wrap(err, "converting from hub to source") + } + + err = registry.AssignProperties_From_Registry(&source) + if err != nil { + return eris.Wrap(err, "converting from source to registry") } - return registry.AssignProperties_From_Registry(source) + return nil } // ConvertTo populates the provided hub Registry from our Registry func (registry *Registry) ConvertTo(hub conversion.Hub) error { - destination, ok := hub.(*storage.Registry) - if !ok { - return fmt.Errorf("expected containerregistry/v1api20210901/storage/Registry but received %T instead", hub) + // intermediate variable for conversion + var destination storage.Registry + err := registry.AssignProperties_To_Registry(&destination) + if err != nil { + return eris.Wrap(err, "converting to destination from registry") + } + err = destination.ConvertTo(hub) + if err != nil { + return eris.Wrap(err, "converting from destination to hub") } - return registry.AssignProperties_To_Registry(destination) + return nil } // +kubebuilder:webhook:path=/mutate-containerregistry-azure-com-v1api20210901-registry,mutating=true,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=containerregistry.azure.com,resources=registries,verbs=create;update,versions=v1api20210901,name=default.v1api20210901.registries.containerregistry.azure.com,admissionReviewVersions=v1 @@ -114,17 +128,6 @@ func (registry *Registry) SecretDestinationExpressions() []*core.DestinationExpr return registry.Spec.OperatorSpec.SecretExpressions } -var _ genruntime.ImportableResource = &Registry{} - -// InitializeSpec initializes the spec for this resource from the given status -func (registry *Registry) InitializeSpec(status genruntime.ConvertibleStatus) error { - if s, ok := status.(*Registry_STATUS); ok { - return registry.Spec.Initialize_From_Registry_STATUS(s) - } - - return fmt.Errorf("expected Status of type Registry_STATUS but received %T instead", status) -} - var _ genruntime.KubernetesResource = &Registry{} // AzureName returns the Azure name of the resource @@ -1039,119 +1042,6 @@ func (registry *Registry_Spec) AssignProperties_To_Registry_Spec(destination *st return nil } -// Initialize_From_Registry_STATUS populates our Registry_Spec from the provided source Registry_STATUS -func (registry *Registry_Spec) Initialize_From_Registry_STATUS(source *Registry_STATUS) error { - - // AdminUserEnabled - if source.AdminUserEnabled != nil { - adminUserEnabled := *source.AdminUserEnabled - registry.AdminUserEnabled = &adminUserEnabled - } else { - registry.AdminUserEnabled = nil - } - - // DataEndpointEnabled - if source.DataEndpointEnabled != nil { - dataEndpointEnabled := *source.DataEndpointEnabled - registry.DataEndpointEnabled = &dataEndpointEnabled - } else { - registry.DataEndpointEnabled = nil - } - - // Encryption - if source.Encryption != nil { - var encryption EncryptionProperty - err := encryption.Initialize_From_EncryptionProperty_STATUS(source.Encryption) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_EncryptionProperty_STATUS() to populate field Encryption") - } - registry.Encryption = &encryption - } else { - registry.Encryption = nil - } - - // Identity - if source.Identity != nil { - var identity IdentityProperties - err := identity.Initialize_From_IdentityProperties_STATUS(source.Identity) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_IdentityProperties_STATUS() to populate field Identity") - } - registry.Identity = &identity - } else { - registry.Identity = nil - } - - // Location - registry.Location = genruntime.ClonePointerToString(source.Location) - - // NetworkRuleBypassOptions - if source.NetworkRuleBypassOptions != nil { - networkRuleBypassOption := genruntime.ToEnum(string(*source.NetworkRuleBypassOptions), registryProperties_NetworkRuleBypassOptions_Values) - registry.NetworkRuleBypassOptions = &networkRuleBypassOption - } else { - registry.NetworkRuleBypassOptions = nil - } - - // NetworkRuleSet - if source.NetworkRuleSet != nil { - var networkRuleSet NetworkRuleSet - err := networkRuleSet.Initialize_From_NetworkRuleSet_STATUS(source.NetworkRuleSet) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_NetworkRuleSet_STATUS() to populate field NetworkRuleSet") - } - registry.NetworkRuleSet = &networkRuleSet - } else { - registry.NetworkRuleSet = nil - } - - // Policies - if source.Policies != nil { - var policy Policies - err := policy.Initialize_From_Policies_STATUS(source.Policies) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_Policies_STATUS() to populate field Policies") - } - registry.Policies = &policy - } else { - registry.Policies = nil - } - - // PublicNetworkAccess - if source.PublicNetworkAccess != nil { - publicNetworkAccess := genruntime.ToEnum(string(*source.PublicNetworkAccess), registryProperties_PublicNetworkAccess_Values) - registry.PublicNetworkAccess = &publicNetworkAccess - } else { - registry.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") - } - registry.Sku = &sku - } else { - registry.Sku = nil - } - - // Tags - registry.Tags = genruntime.CloneMapOfStringToString(source.Tags) - - // ZoneRedundancy - if source.ZoneRedundancy != nil { - zoneRedundancy := genruntime.ToEnum(string(*source.ZoneRedundancy), registryProperties_ZoneRedundancy_Values) - registry.ZoneRedundancy = &zoneRedundancy - } else { - registry.ZoneRedundancy = nil - } - - // No error - return nil -} - // OriginalVersion returns the original API version used to create the resource. func (registry *Registry_Spec) OriginalVersion() string { return GroupVersion.Version @@ -2041,33 +1931,6 @@ func (property *EncryptionProperty) AssignProperties_To_EncryptionProperty(desti return nil } -// Initialize_From_EncryptionProperty_STATUS populates our EncryptionProperty from the provided source EncryptionProperty_STATUS -func (property *EncryptionProperty) Initialize_From_EncryptionProperty_STATUS(source *EncryptionProperty_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") - } - property.KeyVaultProperties = &keyVaultProperty - } else { - property.KeyVaultProperties = nil - } - - // Status - if source.Status != nil { - status := genruntime.ToEnum(string(*source.Status), encryptionProperty_Status_Values) - property.Status = &status - } else { - property.Status = nil - } - - // No error - return nil -} - type EncryptionProperty_STATUS struct { // KeyVaultProperties: Key vault properties. KeyVaultProperties *KeyVaultProperties_STATUS `json:"keyVaultProperties,omitempty"` @@ -2363,39 +2226,6 @@ func (properties *IdentityProperties) AssignProperties_To_IdentityProperties(des return nil } -// Initialize_From_IdentityProperties_STATUS populates our IdentityProperties from the provided source IdentityProperties_STATUS -func (properties *IdentityProperties) Initialize_From_IdentityProperties_STATUS(source *IdentityProperties_STATUS) error { - - // PrincipalId - properties.PrincipalId = genruntime.ClonePointerToString(source.PrincipalId) - - // TenantId - properties.TenantId = genruntime.ClonePointerToString(source.TenantId) - - // Type - if source.Type != nil { - typeVar := genruntime.ToEnum(string(*source.Type), identityProperties_Type_Values) - properties.Type = &typeVar - } else { - properties.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}) - } - properties.UserAssignedIdentities = userAssignedIdentityList - } else { - properties.UserAssignedIdentities = nil - } - - // No error - return nil -} - // Managed identity for the resource. type IdentityProperties_STATUS struct { // PrincipalId: The principal ID of resource identity. @@ -2701,39 +2531,6 @@ func (ruleSet *NetworkRuleSet) AssignProperties_To_NetworkRuleSet(destination *s return nil } -// Initialize_From_NetworkRuleSet_STATUS populates our NetworkRuleSet from the provided source NetworkRuleSet_STATUS -func (ruleSet *NetworkRuleSet) Initialize_From_NetworkRuleSet_STATUS(source *NetworkRuleSet_STATUS) error { - - // DefaultAction - if source.DefaultAction != nil { - defaultAction := genruntime.ToEnum(string(*source.DefaultAction), networkRuleSet_DefaultAction_Values) - ruleSet.DefaultAction = &defaultAction - } else { - ruleSet.DefaultAction = nil - } - - // IpRules - if source.IpRules != nil { - ipRuleList := make([]IPRule, len(source.IpRules)) - for ipRuleIndex, ipRuleItem := range source.IpRules { - // Shadow the loop variable to avoid aliasing - ipRuleItem := ipRuleItem - var ipRule IPRule - err := ipRule.Initialize_From_IPRule_STATUS(&ipRuleItem) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_IPRule_STATUS() to populate field IpRules") - } - ipRuleList[ipRuleIndex] = ipRule - } - ruleSet.IpRules = ipRuleList - } else { - ruleSet.IpRules = nil - } - - // No error - return nil -} - // The network rule set for a container registry. type NetworkRuleSet_STATUS struct { // DefaultAction: The default action of allow or deny when no other rules match. @@ -3100,61 +2897,6 @@ func (policies *Policies) AssignProperties_To_Policies(destination *storage.Poli return nil } -// Initialize_From_Policies_STATUS populates our Policies from the provided source Policies_STATUS -func (policies *Policies) Initialize_From_Policies_STATUS(source *Policies_STATUS) error { - - // ExportPolicy - if source.ExportPolicy != nil { - var exportPolicy ExportPolicy - err := exportPolicy.Initialize_From_ExportPolicy_STATUS(source.ExportPolicy) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_ExportPolicy_STATUS() to populate field ExportPolicy") - } - policies.ExportPolicy = &exportPolicy - } else { - policies.ExportPolicy = nil - } - - // QuarantinePolicy - if source.QuarantinePolicy != nil { - var quarantinePolicy QuarantinePolicy - err := quarantinePolicy.Initialize_From_QuarantinePolicy_STATUS(source.QuarantinePolicy) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_QuarantinePolicy_STATUS() to populate field QuarantinePolicy") - } - policies.QuarantinePolicy = &quarantinePolicy - } else { - policies.QuarantinePolicy = nil - } - - // RetentionPolicy - if source.RetentionPolicy != nil { - var retentionPolicy RetentionPolicy - err := retentionPolicy.Initialize_From_RetentionPolicy_STATUS(source.RetentionPolicy) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_RetentionPolicy_STATUS() to populate field RetentionPolicy") - } - policies.RetentionPolicy = &retentionPolicy - } else { - policies.RetentionPolicy = nil - } - - // TrustPolicy - if source.TrustPolicy != nil { - var trustPolicy TrustPolicy - err := trustPolicy.Initialize_From_TrustPolicy_STATUS(source.TrustPolicy) - if err != nil { - return eris.Wrap(err, "calling Initialize_From_TrustPolicy_STATUS() to populate field TrustPolicy") - } - policies.TrustPolicy = &trustPolicy - } else { - policies.TrustPolicy = nil - } - - // No error - return nil -} - // The policies for a container registry. type Policies_STATUS struct { // ExportPolicy: The export policy for a container registry. @@ -3706,21 +3448,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 - if source.Name != nil { - name := genruntime.ToEnum(string(*source.Name), sku_Name_Values) - sku.Name = &name - } else { - sku.Name = nil - } - - // No error - return nil -} - // The SKU of a container registry. type Sku_STATUS struct { // Name: The SKU name of the container registry. Required for registry creation. @@ -4186,21 +3913,6 @@ func (policy *ExportPolicy) AssignProperties_To_ExportPolicy(destination *storag return nil } -// Initialize_From_ExportPolicy_STATUS populates our ExportPolicy from the provided source ExportPolicy_STATUS -func (policy *ExportPolicy) Initialize_From_ExportPolicy_STATUS(source *ExportPolicy_STATUS) error { - - // Status - if source.Status != nil { - status := genruntime.ToEnum(string(*source.Status), exportPolicy_Status_Values) - policy.Status = &status - } else { - policy.Status = nil - } - - // No error - return nil -} - // The export policy for a container registry. type ExportPolicy_STATUS struct { // Status: The value that indicates whether the policy is enabled or not. @@ -4419,24 +4131,6 @@ func (rule *IPRule) AssignProperties_To_IPRule(destination *storage.IPRule) erro return nil } -// Initialize_From_IPRule_STATUS populates our IPRule from the provided source IPRule_STATUS -func (rule *IPRule) Initialize_From_IPRule_STATUS(source *IPRule_STATUS) error { - - // Action - if source.Action != nil { - action := genruntime.ToEnum(string(*source.Action), iPRule_Action_Values) - rule.Action = &action - } else { - rule.Action = nil - } - - // Value - rule.Value = genruntime.ClonePointerToString(source.Value) - - // No error - return nil -} - // IP rule with specific IP or IP range in CIDR format. type IPRule_STATUS struct { // Action: The action of IP ACL rule. @@ -4618,19 +4312,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 { - - // Identity - properties.Identity = genruntime.ClonePointerToString(source.Identity) - - // KeyIdentifier - properties.KeyIdentifier = genruntime.ClonePointerToString(source.KeyIdentifier) - - // No error - return nil -} - type KeyVaultProperties_STATUS struct { // Identity: The client id of the identity which will be used to access key vault. Identity *string `json:"identity,omitempty"` @@ -4876,21 +4557,6 @@ func (policy *QuarantinePolicy) AssignProperties_To_QuarantinePolicy(destination return nil } -// Initialize_From_QuarantinePolicy_STATUS populates our QuarantinePolicy from the provided source QuarantinePolicy_STATUS -func (policy *QuarantinePolicy) Initialize_From_QuarantinePolicy_STATUS(source *QuarantinePolicy_STATUS) error { - - // Status - if source.Status != nil { - status := genruntime.ToEnum(string(*source.Status), quarantinePolicy_Status_Values) - policy.Status = &status - } else { - policy.Status = nil - } - - // No error - return nil -} - // The quarantine policy for a container registry. type QuarantinePolicy_STATUS struct { // Status: The value that indicates whether the policy is enabled or not. @@ -5073,24 +4739,6 @@ func (policy *RetentionPolicy) AssignProperties_To_RetentionPolicy(destination * return nil } -// Initialize_From_RetentionPolicy_STATUS populates our RetentionPolicy from the provided source RetentionPolicy_STATUS -func (policy *RetentionPolicy) Initialize_From_RetentionPolicy_STATUS(source *RetentionPolicy_STATUS) error { - - // Days - policy.Days = genruntime.ClonePointerToInt(source.Days) - - // Status - if source.Status != nil { - status := genruntime.ToEnum(string(*source.Status), retentionPolicy_Status_Values) - policy.Status = &status - } else { - policy.Status = nil - } - - // No error - return nil -} - // The retention policy for a container registry. type RetentionPolicy_STATUS struct { // Days: The number of days to retain an untagged manifest after which it gets purged. @@ -5404,29 +5052,6 @@ func (policy *TrustPolicy) AssignProperties_To_TrustPolicy(destination *storage. return nil } -// Initialize_From_TrustPolicy_STATUS populates our TrustPolicy from the provided source TrustPolicy_STATUS -func (policy *TrustPolicy) Initialize_From_TrustPolicy_STATUS(source *TrustPolicy_STATUS) error { - - // Status - if source.Status != nil { - status := genruntime.ToEnum(string(*source.Status), trustPolicy_Status_Values) - policy.Status = &status - } else { - policy.Status = nil - } - - // Type - if source.Type != nil { - typeVar := genruntime.ToEnum(string(*source.Type), trustPolicy_Type_Values) - policy.Type = &typeVar - } else { - policy.Type = nil - } - - // No error - return nil -} - // The content trust policy for a container registry. type TrustPolicy_STATUS struct { // Status: The value that indicates whether the policy is enabled or not. diff --git a/v2/api/containerregistry/v1api20210901/registry_types_gen_test.go b/v2/api/containerregistry/v1api20210901/registry_types_gen_test.go index 25127c81af9..03a5137f6bd 100644 --- a/v2/api/containerregistry/v1api20210901/registry_types_gen_test.go +++ b/v2/api/containerregistry/v1api20210901/registry_types_gen_test.go @@ -5,7 +5,8 @@ package v1api20210901 import ( "encoding/json" - storage "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20210901/storage" + v20210901s "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20210901/storage" + v20230701s "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20230701/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -35,7 +36,7 @@ func RunPropertyAssignmentTestForEncryptionProperty(subject EncryptionProperty) copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.EncryptionProperty + var other v20210901s.EncryptionProperty err := copied.AssignProperties_To_EncryptionProperty(&other) if err != nil { return err.Error() @@ -151,7 +152,7 @@ func RunPropertyAssignmentTestForEncryptionProperty_STATUS(subject EncryptionPro copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.EncryptionProperty_STATUS + var other v20210901s.EncryptionProperty_STATUS err := copied.AssignProperties_To_EncryptionProperty_STATUS(&other) if err != nil { return err.Error() @@ -268,7 +269,7 @@ func RunPropertyAssignmentTestForExportPolicy(subject ExportPolicy) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ExportPolicy + var other v20210901s.ExportPolicy err := copied.AssignProperties_To_ExportPolicy(&other) if err != nil { return err.Error() @@ -370,7 +371,7 @@ func RunPropertyAssignmentTestForExportPolicy_STATUS(subject ExportPolicy_STATUS copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.ExportPolicy_STATUS + var other v20210901s.ExportPolicy_STATUS err := copied.AssignProperties_To_ExportPolicy_STATUS(&other) if err != nil { return err.Error() @@ -473,7 +474,7 @@ func RunPropertyAssignmentTestForIPRule(subject IPRule) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.IPRule + var other v20210901s.IPRule err := copied.AssignProperties_To_IPRule(&other) if err != nil { return err.Error() @@ -576,7 +577,7 @@ func RunPropertyAssignmentTestForIPRule_STATUS(subject IPRule_STATUS) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.IPRule_STATUS + var other v20210901s.IPRule_STATUS err := copied.AssignProperties_To_IPRule_STATUS(&other) if err != nil { return err.Error() @@ -679,7 +680,7 @@ func RunPropertyAssignmentTestForIdentityProperties(subject IdentityProperties) copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.IdentityProperties + var other v20210901s.IdentityProperties err := copied.AssignProperties_To_IdentityProperties(&other) if err != nil { return err.Error() @@ -801,7 +802,7 @@ func RunPropertyAssignmentTestForIdentityProperties_STATUS(subject IdentityPrope copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.IdentityProperties_STATUS + var other v20210901s.IdentityProperties_STATUS err := copied.AssignProperties_To_IdentityProperties_STATUS(&other) if err != nil { return err.Error() @@ -926,7 +927,7 @@ func RunPropertyAssignmentTestForKeyVaultProperties(subject KeyVaultProperties) copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.KeyVaultProperties + var other v20210901s.KeyVaultProperties err := copied.AssignProperties_To_KeyVaultProperties(&other) if err != nil { return err.Error() @@ -1029,7 +1030,7 @@ func RunPropertyAssignmentTestForKeyVaultProperties_STATUS(subject KeyVaultPrope copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.KeyVaultProperties_STATUS + var other v20210901s.KeyVaultProperties_STATUS err := copied.AssignProperties_To_KeyVaultProperties_STATUS(&other) if err != nil { return err.Error() @@ -1136,7 +1137,7 @@ func RunPropertyAssignmentTestForNetworkRuleSet(subject NetworkRuleSet) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.NetworkRuleSet + var other v20210901s.NetworkRuleSet err := copied.AssignProperties_To_NetworkRuleSet(&other) if err != nil { return err.Error() @@ -1252,7 +1253,7 @@ func RunPropertyAssignmentTestForNetworkRuleSet_STATUS(subject NetworkRuleSet_ST copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.NetworkRuleSet_STATUS + var other v20210901s.NetworkRuleSet_STATUS err := copied.AssignProperties_To_NetworkRuleSet_STATUS(&other) if err != nil { return err.Error() @@ -1369,7 +1370,7 @@ func RunPropertyAssignmentTestForPolicies(subject Policies) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.Policies + var other v20210901s.Policies err := copied.AssignProperties_To_Policies(&other) if err != nil { return err.Error() @@ -1474,7 +1475,7 @@ func RunPropertyAssignmentTestForPolicies_STATUS(subject Policies_STATUS) string copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.Policies_STATUS + var other v20210901s.Policies_STATUS err := copied.AssignProperties_To_Policies_STATUS(&other) if err != nil { return err.Error() @@ -1579,7 +1580,7 @@ func RunPropertyAssignmentTestForPrivateEndpointConnection_STATUS(subject Privat copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.PrivateEndpointConnection_STATUS + var other v20210901s.PrivateEndpointConnection_STATUS err := copied.AssignProperties_To_PrivateEndpointConnection_STATUS(&other) if err != nil { return err.Error() @@ -1682,7 +1683,7 @@ func RunPropertyAssignmentTestForQuarantinePolicy(subject QuarantinePolicy) stri copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.QuarantinePolicy + var other v20210901s.QuarantinePolicy err := copied.AssignProperties_To_QuarantinePolicy(&other) if err != nil { return err.Error() @@ -1784,7 +1785,7 @@ func RunPropertyAssignmentTestForQuarantinePolicy_STATUS(subject QuarantinePolic copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.QuarantinePolicy_STATUS + var other v20210901s.QuarantinePolicy_STATUS err := copied.AssignProperties_To_QuarantinePolicy_STATUS(&other) if err != nil { return err.Error() @@ -1888,7 +1889,7 @@ func RunResourceConversionTestForRegistry(subject Registry) string { copied := subject.DeepCopy() // Convert to our hub version - var hub storage.Registry + var hub v20230701s.Registry err := copied.ConvertTo(&hub) if err != nil { return err.Error() @@ -1930,7 +1931,7 @@ func RunPropertyAssignmentTestForRegistry(subject Registry) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.Registry + var other v20210901s.Registry err := copied.AssignProperties_To_Registry(&other) if err != nil { return err.Error() @@ -2033,7 +2034,7 @@ func RunPropertyAssignmentTestForRegistryOperatorSpec(subject RegistryOperatorSp copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.RegistryOperatorSpec + var other v20210901s.RegistryOperatorSpec err := copied.AssignProperties_To_RegistryOperatorSpec(&other) if err != nil { return err.Error() @@ -2130,7 +2131,7 @@ func RunPropertyAssignmentTestForRegistry_STATUS(subject Registry_STATUS) string copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.Registry_STATUS + var other v20210901s.Registry_STATUS err := copied.AssignProperties_To_Registry_STATUS(&other) if err != nil { return err.Error() @@ -2274,7 +2275,7 @@ func RunPropertyAssignmentTestForRegistry_Spec(subject Registry_Spec) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.Registry_Spec + var other v20210901s.Registry_Spec err := copied.AssignProperties_To_Registry_Spec(&other) if err != nil { return err.Error() @@ -2404,7 +2405,7 @@ func RunPropertyAssignmentTestForRetentionPolicy(subject RetentionPolicy) string copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.RetentionPolicy + var other v20210901s.RetentionPolicy err := copied.AssignProperties_To_RetentionPolicy(&other) if err != nil { return err.Error() @@ -2507,7 +2508,7 @@ func RunPropertyAssignmentTestForRetentionPolicy_STATUS(subject RetentionPolicy_ copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.RetentionPolicy_STATUS + var other v20210901s.RetentionPolicy_STATUS err := copied.AssignProperties_To_RetentionPolicy_STATUS(&other) if err != nil { return err.Error() @@ -2612,7 +2613,7 @@ func RunPropertyAssignmentTestForSku(subject Sku) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.Sku + var other v20210901s.Sku err := copied.AssignProperties_To_Sku(&other) if err != nil { return err.Error() @@ -2718,7 +2719,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 v20210901s.Sku_STATUS err := copied.AssignProperties_To_Sku_STATUS(&other) if err != nil { return err.Error() @@ -2829,7 +2830,7 @@ func RunPropertyAssignmentTestForStatus_STATUS(subject Status_STATUS) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.Status_STATUS + var other v20210901s.Status_STATUS err := copied.AssignProperties_To_Status_STATUS(&other) if err != nil { return err.Error() @@ -2933,7 +2934,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 v20210901s.SystemData_STATUS err := copied.AssignProperties_To_SystemData_STATUS(&other) if err != nil { return err.Error() @@ -3048,7 +3049,7 @@ func RunPropertyAssignmentTestForTrustPolicy(subject TrustPolicy) string { copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.TrustPolicy + var other v20210901s.TrustPolicy err := copied.AssignProperties_To_TrustPolicy(&other) if err != nil { return err.Error() @@ -3151,7 +3152,7 @@ func RunPropertyAssignmentTestForTrustPolicy_STATUS(subject TrustPolicy_STATUS) copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.TrustPolicy_STATUS + var other v20210901s.TrustPolicy_STATUS err := copied.AssignProperties_To_TrustPolicy_STATUS(&other) if err != nil { return err.Error() @@ -3254,7 +3255,7 @@ func RunPropertyAssignmentTestForUserAssignedIdentityDetails(subject UserAssigne copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.UserAssignedIdentityDetails + var other v20210901s.UserAssignedIdentityDetails err := copied.AssignProperties_To_UserAssignedIdentityDetails(&other) if err != nil { return err.Error() @@ -3351,7 +3352,7 @@ func RunPropertyAssignmentTestForUserIdentityProperties_STATUS(subject UserIdent copied := subject.DeepCopy() // Use AssignPropertiesTo() for the first stage of conversion - var other storage.UserIdentityProperties_STATUS + var other v20210901s.UserIdentityProperties_STATUS err := copied.AssignProperties_To_UserIdentityProperties_STATUS(&other) if err != nil { return err.Error() diff --git a/v2/api/containerregistry/v1api20210901/storage/registry_types_gen.go b/v2/api/containerregistry/v1api20210901/storage/registry_types_gen.go index 9c0714a6ebe..2845c64532a 100644 --- a/v2/api/containerregistry/v1api20210901/storage/registry_types_gen.go +++ b/v2/api/containerregistry/v1api20210901/storage/registry_types_gen.go @@ -4,6 +4,8 @@ package storage import ( + "fmt" + storage "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20230701/storage" "github.com/Azure/azure-service-operator/v2/pkg/genruntime" "github.com/Azure/azure-service-operator/v2/pkg/genruntime/conditions" "github.com/Azure/azure-service-operator/v2/pkg/genruntime/configmaps" @@ -12,14 +14,11 @@ import ( "github.com/rotisserie/eris" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/conversion" ) -// +kubebuilder:rbac:groups=containerregistry.azure.com,resources=registries,verbs=get;list;watch;create;update;patch;delete -// +kubebuilder:rbac:groups=containerregistry.azure.com,resources={registries/status,registries/finalizers},verbs=get;update;patch - // +kubebuilder:object:root=true // +kubebuilder:subresource:status -// +kubebuilder:storageversion // +kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" // +kubebuilder:printcolumn:name="Severity",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].severity" // +kubebuilder:printcolumn:name="Reason",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].reason" @@ -47,6 +46,28 @@ func (registry *Registry) SetConditions(conditions conditions.Conditions) { registry.Status.Conditions = conditions } +var _ conversion.Convertible = &Registry{} + +// ConvertFrom populates our Registry from the provided hub Registry +func (registry *Registry) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.Registry) + if !ok { + return fmt.Errorf("expected containerregistry/v1api20230701/storage/Registry but received %T instead", hub) + } + + return registry.AssignProperties_From_Registry(source) +} + +// ConvertTo populates the provided hub Registry from our Registry +func (registry *Registry) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.Registry) + if !ok { + return fmt.Errorf("expected containerregistry/v1api20230701/storage/Registry but received %T instead", hub) + } + + return registry.AssignProperties_To_Registry(destination) +} + var _ configmaps.Exporter = &Registry{} // ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property @@ -142,8 +163,75 @@ func (registry *Registry) SetStatus(status genruntime.ConvertibleStatus) error { return nil } -// Hub marks that this Registry is the hub type for conversion -func (registry *Registry) Hub() {} +// AssignProperties_From_Registry populates our Registry from the provided source Registry +func (registry *Registry) AssignProperties_From_Registry(source *storage.Registry) error { + + // ObjectMeta + registry.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec Registry_Spec + err := spec.AssignProperties_From_Registry_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Registry_Spec() to populate field Spec") + } + registry.Spec = spec + + // Status + var status Registry_STATUS + err = status.AssignProperties_From_Registry_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Registry_STATUS() to populate field Status") + } + registry.Status = status + + // Invoke the augmentConversionForRegistry interface (if implemented) to customize the conversion + var registryAsAny any = registry + if augmentedRegistry, ok := registryAsAny.(augmentConversionForRegistry); ok { + err := augmentedRegistry.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_Registry populates the provided destination Registry from our Registry +func (registry *Registry) AssignProperties_To_Registry(destination *storage.Registry) error { + + // ObjectMeta + destination.ObjectMeta = *registry.ObjectMeta.DeepCopy() + + // Spec + var spec storage.Registry_Spec + err := registry.Spec.AssignProperties_To_Registry_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Registry_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.Registry_STATUS + err = registry.Status.AssignProperties_To_Registry_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Registry_STATUS() to populate field Status") + } + destination.Status = status + + // Invoke the augmentConversionForRegistry interface (if implemented) to customize the conversion + var registryAsAny any = registry + if augmentedRegistry, ok := registryAsAny.(augmentConversionForRegistry); ok { + err := augmentedRegistry.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 (registry *Registry) OriginalGVK() *schema.GroupVersionKind { @@ -171,6 +259,11 @@ type APIVersion string const APIVersion_Value = APIVersion("2021-09-01") +type augmentConversionForRegistry interface { + AssignPropertiesFrom(src *storage.Registry) error + AssignPropertiesTo(dst *storage.Registry) error +} + // Storage version of v1api20210901.Registry_Spec type Registry_Spec struct { AdminUserEnabled *bool `json:"adminUserEnabled,omitempty"` @@ -204,20 +297,334 @@ var _ genruntime.ConvertibleSpec = &Registry_Spec{} // ConvertSpecFrom populates our Registry_Spec from the provided source func (registry *Registry_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { - if source == registry { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + src, ok := source.(*storage.Registry_Spec) + if ok { + // Populate our instance from source + return registry.AssignProperties_From_Registry_Spec(src) + } + + // Convert to an intermediate form + src = &storage.Registry_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") + } + + // Update our instance from src + err = registry.AssignProperties_From_Registry_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") } - return source.ConvertSpecTo(registry) + return nil } // ConvertSpecTo populates the provided destination from our Registry_Spec func (registry *Registry_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { - if destination == registry { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + dst, ok := destination.(*storage.Registry_Spec) + if ok { + // Populate destination from our instance + return registry.AssignProperties_To_Registry_Spec(dst) + } + + // Convert to an intermediate form + dst = &storage.Registry_Spec{} + err := registry.AssignProperties_To_Registry_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_Registry_Spec populates our Registry_Spec from the provided source Registry_Spec +func (registry *Registry_Spec) AssignProperties_From_Registry_Spec(source *storage.Registry_Spec) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // AdminUserEnabled + if source.AdminUserEnabled != nil { + adminUserEnabled := *source.AdminUserEnabled + registry.AdminUserEnabled = &adminUserEnabled + } else { + registry.AdminUserEnabled = nil + } + + // AzureName + registry.AzureName = source.AzureName + + // DataEndpointEnabled + if source.DataEndpointEnabled != nil { + dataEndpointEnabled := *source.DataEndpointEnabled + registry.DataEndpointEnabled = &dataEndpointEnabled + } else { + registry.DataEndpointEnabled = nil + } + + // Encryption + if source.Encryption != nil { + var encryption EncryptionProperty + err := encryption.AssignProperties_From_EncryptionProperty(source.Encryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_EncryptionProperty() to populate field Encryption") + } + registry.Encryption = &encryption + } else { + registry.Encryption = nil + } + + // Identity + if source.Identity != nil { + var identity IdentityProperties + err := identity.AssignProperties_From_IdentityProperties(source.Identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_IdentityProperties() to populate field Identity") + } + registry.Identity = &identity + } else { + registry.Identity = nil + } + + // Location + registry.Location = genruntime.ClonePointerToString(source.Location) + + // NetworkRuleBypassOptions + registry.NetworkRuleBypassOptions = genruntime.ClonePointerToString(source.NetworkRuleBypassOptions) + + // NetworkRuleSet + if source.NetworkRuleSet != nil { + var networkRuleSet NetworkRuleSet + err := networkRuleSet.AssignProperties_From_NetworkRuleSet(source.NetworkRuleSet) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_NetworkRuleSet() to populate field NetworkRuleSet") + } + registry.NetworkRuleSet = &networkRuleSet + } else { + registry.NetworkRuleSet = nil + } + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec RegistryOperatorSpec + err := operatorSpec.AssignProperties_From_RegistryOperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_RegistryOperatorSpec() to populate field OperatorSpec") + } + registry.OperatorSpec = &operatorSpec + } else { + registry.OperatorSpec = nil } - return destination.ConvertSpecFrom(registry) + // OriginalVersion + registry.OriginalVersion = source.OriginalVersion + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + registry.Owner = &owner + } else { + registry.Owner = nil + } + + // Policies + if source.Policies != nil { + var policy Policies + err := policy.AssignProperties_From_Policies(source.Policies) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Policies() to populate field Policies") + } + registry.Policies = &policy + } else { + registry.Policies = nil + } + + // PublicNetworkAccess + registry.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") + } + registry.Sku = &sku + } else { + registry.Sku = nil + } + + // Tags + registry.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // ZoneRedundancy + registry.ZoneRedundancy = genruntime.ClonePointerToString(source.ZoneRedundancy) + + // Update the property bag + if len(propertyBag) > 0 { + registry.PropertyBag = propertyBag + } else { + registry.PropertyBag = nil + } + + // Invoke the augmentConversionForRegistry_Spec interface (if implemented) to customize the conversion + var registryAsAny any = registry + if augmentedRegistry, ok := registryAsAny.(augmentConversionForRegistry_Spec); ok { + err := augmentedRegistry.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_Registry_Spec populates the provided destination Registry_Spec from our Registry_Spec +func (registry *Registry_Spec) AssignProperties_To_Registry_Spec(destination *storage.Registry_Spec) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(registry.PropertyBag) + + // AdminUserEnabled + if registry.AdminUserEnabled != nil { + adminUserEnabled := *registry.AdminUserEnabled + destination.AdminUserEnabled = &adminUserEnabled + } else { + destination.AdminUserEnabled = nil + } + + // AzureName + destination.AzureName = registry.AzureName + + // DataEndpointEnabled + if registry.DataEndpointEnabled != nil { + dataEndpointEnabled := *registry.DataEndpointEnabled + destination.DataEndpointEnabled = &dataEndpointEnabled + } else { + destination.DataEndpointEnabled = nil + } + + // Encryption + if registry.Encryption != nil { + var encryption storage.EncryptionProperty + err := registry.Encryption.AssignProperties_To_EncryptionProperty(&encryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_EncryptionProperty() to populate field Encryption") + } + destination.Encryption = &encryption + } else { + destination.Encryption = nil + } + + // Identity + if registry.Identity != nil { + var identity storage.IdentityProperties + err := registry.Identity.AssignProperties_To_IdentityProperties(&identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_IdentityProperties() to populate field Identity") + } + destination.Identity = &identity + } else { + destination.Identity = nil + } + + // Location + destination.Location = genruntime.ClonePointerToString(registry.Location) + + // NetworkRuleBypassOptions + destination.NetworkRuleBypassOptions = genruntime.ClonePointerToString(registry.NetworkRuleBypassOptions) + + // NetworkRuleSet + if registry.NetworkRuleSet != nil { + var networkRuleSet storage.NetworkRuleSet + err := registry.NetworkRuleSet.AssignProperties_To_NetworkRuleSet(&networkRuleSet) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_NetworkRuleSet() to populate field NetworkRuleSet") + } + destination.NetworkRuleSet = &networkRuleSet + } else { + destination.NetworkRuleSet = nil + } + + // OperatorSpec + if registry.OperatorSpec != nil { + var operatorSpec storage.RegistryOperatorSpec + err := registry.OperatorSpec.AssignProperties_To_RegistryOperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_RegistryOperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = registry.OriginalVersion + + // Owner + if registry.Owner != nil { + owner := registry.Owner.Copy() + destination.Owner = &owner + } else { + destination.Owner = nil + } + + // Policies + if registry.Policies != nil { + var policy storage.Policies + err := registry.Policies.AssignProperties_To_Policies(&policy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Policies() to populate field Policies") + } + destination.Policies = &policy + } else { + destination.Policies = nil + } + + // PublicNetworkAccess + destination.PublicNetworkAccess = genruntime.ClonePointerToString(registry.PublicNetworkAccess) + + // Sku + if registry.Sku != nil { + var sku storage.Sku + err := registry.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 + } + + // Tags + destination.Tags = genruntime.CloneMapOfStringToString(registry.Tags) + + // ZoneRedundancy + destination.ZoneRedundancy = genruntime.ClonePointerToString(registry.ZoneRedundancy) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForRegistry_Spec interface (if implemented) to customize the conversion + var registryAsAny any = registry + if augmentedRegistry, ok := registryAsAny.(augmentConversionForRegistry_Spec); ok { + err := augmentedRegistry.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil } // Storage version of v1api20210901.Registry_STATUS @@ -253,20 +660,424 @@ var _ genruntime.ConvertibleStatus = &Registry_STATUS{} // ConvertStatusFrom populates our Registry_STATUS from the provided source func (registry *Registry_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { - if source == registry { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + src, ok := source.(*storage.Registry_STATUS) + if ok { + // Populate our instance from source + return registry.AssignProperties_From_Registry_STATUS(src) + } + + // Convert to an intermediate form + src = &storage.Registry_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") + } + + // Update our instance from src + err = registry.AssignProperties_From_Registry_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") } - return source.ConvertStatusTo(registry) + return nil } // ConvertStatusTo populates the provided destination from our Registry_STATUS func (registry *Registry_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { - if destination == registry { - return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + dst, ok := destination.(*storage.Registry_STATUS) + if ok { + // Populate destination from our instance + return registry.AssignProperties_To_Registry_STATUS(dst) + } + + // Convert to an intermediate form + dst = &storage.Registry_STATUS{} + err := registry.AssignProperties_To_Registry_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_Registry_STATUS populates our Registry_STATUS from the provided source Registry_STATUS +func (registry *Registry_STATUS) AssignProperties_From_Registry_STATUS(source *storage.Registry_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // AdminUserEnabled + if source.AdminUserEnabled != nil { + adminUserEnabled := *source.AdminUserEnabled + registry.AdminUserEnabled = &adminUserEnabled + } else { + registry.AdminUserEnabled = nil + } + + // Conditions + registry.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) + + // CreationDate + registry.CreationDate = genruntime.ClonePointerToString(source.CreationDate) + + // DataEndpointEnabled + if source.DataEndpointEnabled != nil { + dataEndpointEnabled := *source.DataEndpointEnabled + registry.DataEndpointEnabled = &dataEndpointEnabled + } else { + registry.DataEndpointEnabled = nil + } + + // DataEndpointHostNames + registry.DataEndpointHostNames = genruntime.CloneSliceOfString(source.DataEndpointHostNames) + + // Encryption + if source.Encryption != nil { + var encryption EncryptionProperty_STATUS + err := encryption.AssignProperties_From_EncryptionProperty_STATUS(source.Encryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_EncryptionProperty_STATUS() to populate field Encryption") + } + registry.Encryption = &encryption + } else { + registry.Encryption = nil + } + + // Id + registry.Id = genruntime.ClonePointerToString(source.Id) + + // Identity + if source.Identity != nil { + var identity IdentityProperties_STATUS + err := identity.AssignProperties_From_IdentityProperties_STATUS(source.Identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_IdentityProperties_STATUS() to populate field Identity") + } + registry.Identity = &identity + } else { + registry.Identity = nil + } + + // Location + registry.Location = genruntime.ClonePointerToString(source.Location) + + // LoginServer + registry.LoginServer = genruntime.ClonePointerToString(source.LoginServer) + + // Name + registry.Name = genruntime.ClonePointerToString(source.Name) + + // NetworkRuleBypassOptions + registry.NetworkRuleBypassOptions = genruntime.ClonePointerToString(source.NetworkRuleBypassOptions) + + // NetworkRuleSet + if source.NetworkRuleSet != nil { + var networkRuleSet NetworkRuleSet_STATUS + err := networkRuleSet.AssignProperties_From_NetworkRuleSet_STATUS(source.NetworkRuleSet) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_NetworkRuleSet_STATUS() to populate field NetworkRuleSet") + } + registry.NetworkRuleSet = &networkRuleSet + } else { + registry.NetworkRuleSet = nil + } + + // Policies + if source.Policies != nil { + var policy Policies_STATUS + err := policy.AssignProperties_From_Policies_STATUS(source.Policies) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Policies_STATUS() to populate field Policies") + } + registry.Policies = &policy + } else { + registry.Policies = nil + } + + // PrivateEndpointConnections + if source.PrivateEndpointConnections != nil { + privateEndpointConnectionList := make([]PrivateEndpointConnection_STATUS, len(source.PrivateEndpointConnections)) + for privateEndpointConnectionIndex, privateEndpointConnectionItem := range source.PrivateEndpointConnections { + // Shadow the loop variable to avoid aliasing + privateEndpointConnectionItem := privateEndpointConnectionItem + var privateEndpointConnection PrivateEndpointConnection_STATUS + err := privateEndpointConnection.AssignProperties_From_PrivateEndpointConnection_STATUS(&privateEndpointConnectionItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_PrivateEndpointConnection_STATUS() to populate field PrivateEndpointConnections") + } + privateEndpointConnectionList[privateEndpointConnectionIndex] = privateEndpointConnection + } + registry.PrivateEndpointConnections = privateEndpointConnectionList + } else { + registry.PrivateEndpointConnections = nil + } + + // ProvisioningState + registry.ProvisioningState = genruntime.ClonePointerToString(source.ProvisioningState) + + // PublicNetworkAccess + registry.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") + } + registry.Sku = &sku + } else { + registry.Sku = nil + } + + // Status + if source.Status != nil { + var status Status_STATUS + err := status.AssignProperties_From_Status_STATUS(source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Status_STATUS() to populate field Status") + } + registry.Status = &status + } else { + registry.Status = 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") + } + registry.SystemData = &systemDatum + } else { + registry.SystemData = nil + } + + // Tags + registry.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // Type + registry.Type = genruntime.ClonePointerToString(source.Type) + + // ZoneRedundancy + registry.ZoneRedundancy = genruntime.ClonePointerToString(source.ZoneRedundancy) + + // Update the property bag + if len(propertyBag) > 0 { + registry.PropertyBag = propertyBag + } else { + registry.PropertyBag = nil + } + + // Invoke the augmentConversionForRegistry_STATUS interface (if implemented) to customize the conversion + var registryAsAny any = registry + if augmentedRegistry, ok := registryAsAny.(augmentConversionForRegistry_STATUS); ok { + err := augmentedRegistry.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_Registry_STATUS populates the provided destination Registry_STATUS from our Registry_STATUS +func (registry *Registry_STATUS) AssignProperties_To_Registry_STATUS(destination *storage.Registry_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(registry.PropertyBag) + + // AdminUserEnabled + if registry.AdminUserEnabled != nil { + adminUserEnabled := *registry.AdminUserEnabled + destination.AdminUserEnabled = &adminUserEnabled + } else { + destination.AdminUserEnabled = nil + } + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(registry.Conditions) + + // CreationDate + destination.CreationDate = genruntime.ClonePointerToString(registry.CreationDate) + + // DataEndpointEnabled + if registry.DataEndpointEnabled != nil { + dataEndpointEnabled := *registry.DataEndpointEnabled + destination.DataEndpointEnabled = &dataEndpointEnabled + } else { + destination.DataEndpointEnabled = nil + } + + // DataEndpointHostNames + destination.DataEndpointHostNames = genruntime.CloneSliceOfString(registry.DataEndpointHostNames) + + // Encryption + if registry.Encryption != nil { + var encryption storage.EncryptionProperty_STATUS + err := registry.Encryption.AssignProperties_To_EncryptionProperty_STATUS(&encryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_EncryptionProperty_STATUS() to populate field Encryption") + } + destination.Encryption = &encryption + } else { + destination.Encryption = nil + } + + // Id + destination.Id = genruntime.ClonePointerToString(registry.Id) + + // Identity + if registry.Identity != nil { + var identity storage.IdentityProperties_STATUS + err := registry.Identity.AssignProperties_To_IdentityProperties_STATUS(&identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_IdentityProperties_STATUS() to populate field Identity") + } + destination.Identity = &identity + } else { + destination.Identity = nil + } + + // Location + destination.Location = genruntime.ClonePointerToString(registry.Location) + + // LoginServer + destination.LoginServer = genruntime.ClonePointerToString(registry.LoginServer) + + // Name + destination.Name = genruntime.ClonePointerToString(registry.Name) + + // NetworkRuleBypassOptions + destination.NetworkRuleBypassOptions = genruntime.ClonePointerToString(registry.NetworkRuleBypassOptions) + + // NetworkRuleSet + if registry.NetworkRuleSet != nil { + var networkRuleSet storage.NetworkRuleSet_STATUS + err := registry.NetworkRuleSet.AssignProperties_To_NetworkRuleSet_STATUS(&networkRuleSet) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_NetworkRuleSet_STATUS() to populate field NetworkRuleSet") + } + destination.NetworkRuleSet = &networkRuleSet + } else { + destination.NetworkRuleSet = nil + } + + // Policies + if registry.Policies != nil { + var policy storage.Policies_STATUS + err := registry.Policies.AssignProperties_To_Policies_STATUS(&policy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Policies_STATUS() to populate field Policies") + } + destination.Policies = &policy + } else { + destination.Policies = nil + } + + // PrivateEndpointConnections + if registry.PrivateEndpointConnections != nil { + privateEndpointConnectionList := make([]storage.PrivateEndpointConnection_STATUS, len(registry.PrivateEndpointConnections)) + for privateEndpointConnectionIndex, privateEndpointConnectionItem := range registry.PrivateEndpointConnections { + // Shadow the loop variable to avoid aliasing + privateEndpointConnectionItem := privateEndpointConnectionItem + var privateEndpointConnection storage.PrivateEndpointConnection_STATUS + err := privateEndpointConnectionItem.AssignProperties_To_PrivateEndpointConnection_STATUS(&privateEndpointConnection) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_PrivateEndpointConnection_STATUS() to populate field PrivateEndpointConnections") + } + privateEndpointConnectionList[privateEndpointConnectionIndex] = privateEndpointConnection + } + destination.PrivateEndpointConnections = privateEndpointConnectionList + } else { + destination.PrivateEndpointConnections = nil + } + + // ProvisioningState + destination.ProvisioningState = genruntime.ClonePointerToString(registry.ProvisioningState) + + // PublicNetworkAccess + destination.PublicNetworkAccess = genruntime.ClonePointerToString(registry.PublicNetworkAccess) + + // Sku + if registry.Sku != nil { + var sku storage.Sku_STATUS + err := registry.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 + } + + // Status + if registry.Status != nil { + var status storage.Status_STATUS + err := registry.Status.AssignProperties_To_Status_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Status_STATUS() to populate field Status") + } + destination.Status = &status + } else { + destination.Status = nil + } + + // SystemData + if registry.SystemData != nil { + var systemDatum storage.SystemData_STATUS + err := registry.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(registry.Tags) + + // Type + destination.Type = genruntime.ClonePointerToString(registry.Type) + + // ZoneRedundancy + destination.ZoneRedundancy = genruntime.ClonePointerToString(registry.ZoneRedundancy) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForRegistry_STATUS interface (if implemented) to customize the conversion + var registryAsAny any = registry + if augmentedRegistry, ok := registryAsAny.(augmentConversionForRegistry_STATUS); ok { + err := augmentedRegistry.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } } - return destination.ConvertStatusFrom(registry) + // No error + return nil +} + +type augmentConversionForRegistry_Spec interface { + AssignPropertiesFrom(src *storage.Registry_Spec) error + AssignPropertiesTo(dst *storage.Registry_Spec) error +} + +type augmentConversionForRegistry_STATUS interface { + AssignPropertiesFrom(src *storage.Registry_STATUS) error + AssignPropertiesTo(dst *storage.Registry_STATUS) error } // Storage version of v1api20210901.EncryptionProperty @@ -276,6 +1087,86 @@ type EncryptionProperty struct { Status *string `json:"status,omitempty"` } +// AssignProperties_From_EncryptionProperty populates our EncryptionProperty from the provided source EncryptionProperty +func (property *EncryptionProperty) AssignProperties_From_EncryptionProperty(source *storage.EncryptionProperty) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // 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") + } + property.KeyVaultProperties = &keyVaultProperty + } else { + property.KeyVaultProperties = nil + } + + // Status + property.Status = genruntime.ClonePointerToString(source.Status) + + // Update the property bag + if len(propertyBag) > 0 { + property.PropertyBag = propertyBag + } else { + property.PropertyBag = nil + } + + // Invoke the augmentConversionForEncryptionProperty interface (if implemented) to customize the conversion + var propertyAsAny any = property + if augmentedProperty, ok := propertyAsAny.(augmentConversionForEncryptionProperty); ok { + err := augmentedProperty.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_EncryptionProperty populates the provided destination EncryptionProperty from our EncryptionProperty +func (property *EncryptionProperty) AssignProperties_To_EncryptionProperty(destination *storage.EncryptionProperty) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(property.PropertyBag) + + // KeyVaultProperties + if property.KeyVaultProperties != nil { + var keyVaultProperty storage.KeyVaultProperties + err := property.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 + } + + // Status + destination.Status = genruntime.ClonePointerToString(property.Status) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForEncryptionProperty interface (if implemented) to customize the conversion + var propertyAsAny any = property + if augmentedProperty, ok := propertyAsAny.(augmentConversionForEncryptionProperty); ok { + err := augmentedProperty.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20210901.EncryptionProperty_STATUS type EncryptionProperty_STATUS struct { KeyVaultProperties *KeyVaultProperties_STATUS `json:"keyVaultProperties,omitempty"` @@ -283,6 +1174,86 @@ type EncryptionProperty_STATUS struct { Status *string `json:"status,omitempty"` } +// AssignProperties_From_EncryptionProperty_STATUS populates our EncryptionProperty_STATUS from the provided source EncryptionProperty_STATUS +func (property *EncryptionProperty_STATUS) AssignProperties_From_EncryptionProperty_STATUS(source *storage.EncryptionProperty_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") + } + property.KeyVaultProperties = &keyVaultProperty + } else { + property.KeyVaultProperties = nil + } + + // Status + property.Status = genruntime.ClonePointerToString(source.Status) + + // Update the property bag + if len(propertyBag) > 0 { + property.PropertyBag = propertyBag + } else { + property.PropertyBag = nil + } + + // Invoke the augmentConversionForEncryptionProperty_STATUS interface (if implemented) to customize the conversion + var propertyAsAny any = property + if augmentedProperty, ok := propertyAsAny.(augmentConversionForEncryptionProperty_STATUS); ok { + err := augmentedProperty.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_EncryptionProperty_STATUS populates the provided destination EncryptionProperty_STATUS from our EncryptionProperty_STATUS +func (property *EncryptionProperty_STATUS) AssignProperties_To_EncryptionProperty_STATUS(destination *storage.EncryptionProperty_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(property.PropertyBag) + + // KeyVaultProperties + if property.KeyVaultProperties != nil { + var keyVaultProperty storage.KeyVaultProperties_STATUS + err := property.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 + } + + // Status + destination.Status = genruntime.ClonePointerToString(property.Status) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForEncryptionProperty_STATUS interface (if implemented) to customize the conversion + var propertyAsAny any = property + if augmentedProperty, ok := propertyAsAny.(augmentConversionForEncryptionProperty_STATUS); ok { + err := augmentedProperty.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20210901.IdentityProperties // Managed identity for the resource. type IdentityProperties struct { @@ -293,25 +1264,353 @@ type IdentityProperties struct { UserAssignedIdentities []UserAssignedIdentityDetails `json:"userAssignedIdentities,omitempty"` } -// Storage version of v1api20210901.IdentityProperties_STATUS -// Managed identity for the resource. -type IdentityProperties_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]UserIdentityProperties_STATUS `json:"userAssignedIdentities,omitempty"` -} +// AssignProperties_From_IdentityProperties populates our IdentityProperties from the provided source IdentityProperties +func (properties *IdentityProperties) AssignProperties_From_IdentityProperties(source *storage.IdentityProperties) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // PrincipalId + if propertyBag.Contains("PrincipalId") { + var principalId string + err := propertyBag.Pull("PrincipalId", &principalId) + if err != nil { + return eris.Wrap(err, "pulling 'PrincipalId' from propertyBag") + } + + properties.PrincipalId = &principalId + } else { + properties.PrincipalId = nil + } -// Storage version of v1api20210901.NetworkRuleSet -// The network rule set for a container registry. -type NetworkRuleSet struct { - DefaultAction *string `json:"defaultAction,omitempty"` - IpRules []IPRule `json:"ipRules,omitempty"` - PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` -} + // TenantId + if propertyBag.Contains("TenantId") { + var tenantId string + err := propertyBag.Pull("TenantId", &tenantId) + if err != nil { + return eris.Wrap(err, "pulling 'TenantId' from propertyBag") + } + + properties.TenantId = &tenantId + } else { + properties.TenantId = nil + } -// Storage version of v1api20210901.NetworkRuleSet_STATUS + // Type + properties.Type = genruntime.ClonePointerToString(source.Type) + + // UserAssignedIdentities + if source.UserAssignedIdentities != nil { + userAssignedIdentityList := make([]UserAssignedIdentityDetails, len(source.UserAssignedIdentities)) + for userAssignedIdentityIndex, userAssignedIdentityItem := range source.UserAssignedIdentities { + // Shadow the loop variable to avoid aliasing + userAssignedIdentityItem := userAssignedIdentityItem + var userAssignedIdentity UserAssignedIdentityDetails + err := userAssignedIdentity.AssignProperties_From_UserAssignedIdentityDetails(&userAssignedIdentityItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_UserAssignedIdentityDetails() to populate field UserAssignedIdentities") + } + userAssignedIdentityList[userAssignedIdentityIndex] = userAssignedIdentity + } + properties.UserAssignedIdentities = userAssignedIdentityList + } else { + properties.UserAssignedIdentities = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + properties.PropertyBag = propertyBag + } else { + properties.PropertyBag = nil + } + + // Invoke the augmentConversionForIdentityProperties interface (if implemented) to customize the conversion + var propertiesAsAny any = properties + if augmentedProperties, ok := propertiesAsAny.(augmentConversionForIdentityProperties); ok { + err := augmentedProperties.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_IdentityProperties populates the provided destination IdentityProperties from our IdentityProperties +func (properties *IdentityProperties) AssignProperties_To_IdentityProperties(destination *storage.IdentityProperties) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(properties.PropertyBag) + + // PrincipalId + if properties.PrincipalId != nil { + propertyBag.Add("PrincipalId", *properties.PrincipalId) + } else { + propertyBag.Remove("PrincipalId") + } + + // TenantId + if properties.TenantId != nil { + propertyBag.Add("TenantId", *properties.TenantId) + } else { + propertyBag.Remove("TenantId") + } + + // Type + destination.Type = genruntime.ClonePointerToString(properties.Type) + + // UserAssignedIdentities + if properties.UserAssignedIdentities != nil { + userAssignedIdentityList := make([]storage.UserAssignedIdentityDetails, len(properties.UserAssignedIdentities)) + for userAssignedIdentityIndex, userAssignedIdentityItem := range properties.UserAssignedIdentities { + // Shadow the loop variable to avoid aliasing + userAssignedIdentityItem := userAssignedIdentityItem + var userAssignedIdentity storage.UserAssignedIdentityDetails + err := userAssignedIdentityItem.AssignProperties_To_UserAssignedIdentityDetails(&userAssignedIdentity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_UserAssignedIdentityDetails() to populate field UserAssignedIdentities") + } + userAssignedIdentityList[userAssignedIdentityIndex] = userAssignedIdentity + } + destination.UserAssignedIdentities = userAssignedIdentityList + } else { + destination.UserAssignedIdentities = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForIdentityProperties interface (if implemented) to customize the conversion + var propertiesAsAny any = properties + if augmentedProperties, ok := propertiesAsAny.(augmentConversionForIdentityProperties); ok { + err := augmentedProperties.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20210901.IdentityProperties_STATUS +// Managed identity for the resource. +type IdentityProperties_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]UserIdentityProperties_STATUS `json:"userAssignedIdentities,omitempty"` +} + +// AssignProperties_From_IdentityProperties_STATUS populates our IdentityProperties_STATUS from the provided source IdentityProperties_STATUS +func (properties *IdentityProperties_STATUS) AssignProperties_From_IdentityProperties_STATUS(source *storage.IdentityProperties_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // PrincipalId + properties.PrincipalId = genruntime.ClonePointerToString(source.PrincipalId) + + // TenantId + properties.TenantId = genruntime.ClonePointerToString(source.TenantId) + + // Type + properties.Type = genruntime.ClonePointerToString(source.Type) + + // UserAssignedIdentities + if source.UserAssignedIdentities != nil { + userAssignedIdentityMap := make(map[string]UserIdentityProperties_STATUS, len(source.UserAssignedIdentities)) + for userAssignedIdentityKey, userAssignedIdentityValue := range source.UserAssignedIdentities { + // Shadow the loop variable to avoid aliasing + userAssignedIdentityValue := userAssignedIdentityValue + var userAssignedIdentity UserIdentityProperties_STATUS + err := userAssignedIdentity.AssignProperties_From_UserIdentityProperties_STATUS(&userAssignedIdentityValue) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_UserIdentityProperties_STATUS() to populate field UserAssignedIdentities") + } + userAssignedIdentityMap[userAssignedIdentityKey] = userAssignedIdentity + } + properties.UserAssignedIdentities = userAssignedIdentityMap + } else { + properties.UserAssignedIdentities = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + properties.PropertyBag = propertyBag + } else { + properties.PropertyBag = nil + } + + // Invoke the augmentConversionForIdentityProperties_STATUS interface (if implemented) to customize the conversion + var propertiesAsAny any = properties + if augmentedProperties, ok := propertiesAsAny.(augmentConversionForIdentityProperties_STATUS); ok { + err := augmentedProperties.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_IdentityProperties_STATUS populates the provided destination IdentityProperties_STATUS from our IdentityProperties_STATUS +func (properties *IdentityProperties_STATUS) AssignProperties_To_IdentityProperties_STATUS(destination *storage.IdentityProperties_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(properties.PropertyBag) + + // PrincipalId + destination.PrincipalId = genruntime.ClonePointerToString(properties.PrincipalId) + + // TenantId + destination.TenantId = genruntime.ClonePointerToString(properties.TenantId) + + // Type + destination.Type = genruntime.ClonePointerToString(properties.Type) + + // UserAssignedIdentities + if properties.UserAssignedIdentities != nil { + userAssignedIdentityMap := make(map[string]storage.UserIdentityProperties_STATUS, len(properties.UserAssignedIdentities)) + for userAssignedIdentityKey, userAssignedIdentityValue := range properties.UserAssignedIdentities { + // Shadow the loop variable to avoid aliasing + userAssignedIdentityValue := userAssignedIdentityValue + var userAssignedIdentity storage.UserIdentityProperties_STATUS + err := userAssignedIdentityValue.AssignProperties_To_UserIdentityProperties_STATUS(&userAssignedIdentity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_UserIdentityProperties_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 augmentConversionForIdentityProperties_STATUS interface (if implemented) to customize the conversion + var propertiesAsAny any = properties + if augmentedProperties, ok := propertiesAsAny.(augmentConversionForIdentityProperties_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 v1api20210901.NetworkRuleSet +// The network rule set for a container registry. +type NetworkRuleSet struct { + DefaultAction *string `json:"defaultAction,omitempty"` + IpRules []IPRule `json:"ipRules,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// AssignProperties_From_NetworkRuleSet populates our NetworkRuleSet from the provided source NetworkRuleSet +func (ruleSet *NetworkRuleSet) AssignProperties_From_NetworkRuleSet(source *storage.NetworkRuleSet) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // DefaultAction + ruleSet.DefaultAction = genruntime.ClonePointerToString(source.DefaultAction) + + // IpRules + if source.IpRules != nil { + ipRuleList := make([]IPRule, len(source.IpRules)) + for ipRuleIndex, ipRuleItem := range source.IpRules { + // Shadow the loop variable to avoid aliasing + ipRuleItem := ipRuleItem + var ipRule IPRule + err := ipRule.AssignProperties_From_IPRule(&ipRuleItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_IPRule() to populate field IpRules") + } + ipRuleList[ipRuleIndex] = ipRule + } + ruleSet.IpRules = ipRuleList + } else { + ruleSet.IpRules = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + ruleSet.PropertyBag = propertyBag + } else { + ruleSet.PropertyBag = nil + } + + // Invoke the augmentConversionForNetworkRuleSet interface (if implemented) to customize the conversion + var ruleSetAsAny any = ruleSet + if augmentedRuleSet, ok := ruleSetAsAny.(augmentConversionForNetworkRuleSet); ok { + err := augmentedRuleSet.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_NetworkRuleSet populates the provided destination NetworkRuleSet from our NetworkRuleSet +func (ruleSet *NetworkRuleSet) AssignProperties_To_NetworkRuleSet(destination *storage.NetworkRuleSet) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(ruleSet.PropertyBag) + + // DefaultAction + destination.DefaultAction = genruntime.ClonePointerToString(ruleSet.DefaultAction) + + // IpRules + if ruleSet.IpRules != nil { + ipRuleList := make([]storage.IPRule, len(ruleSet.IpRules)) + for ipRuleIndex, ipRuleItem := range ruleSet.IpRules { + // Shadow the loop variable to avoid aliasing + ipRuleItem := ipRuleItem + var ipRule storage.IPRule + err := ipRuleItem.AssignProperties_To_IPRule(&ipRule) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_IPRule() to populate field IpRules") + } + ipRuleList[ipRuleIndex] = ipRule + } + destination.IpRules = ipRuleList + } else { + destination.IpRules = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForNetworkRuleSet interface (if implemented) to customize the conversion + var ruleSetAsAny any = ruleSet + if augmentedRuleSet, ok := ruleSetAsAny.(augmentConversionForNetworkRuleSet); ok { + err := augmentedRuleSet.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +// Storage version of v1api20210901.NetworkRuleSet_STATUS // The network rule set for a container registry. type NetworkRuleSet_STATUS struct { DefaultAction *string `json:"defaultAction,omitempty"` @@ -319,6 +1618,98 @@ type NetworkRuleSet_STATUS struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } +// AssignProperties_From_NetworkRuleSet_STATUS populates our NetworkRuleSet_STATUS from the provided source NetworkRuleSet_STATUS +func (ruleSet *NetworkRuleSet_STATUS) AssignProperties_From_NetworkRuleSet_STATUS(source *storage.NetworkRuleSet_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // DefaultAction + ruleSet.DefaultAction = genruntime.ClonePointerToString(source.DefaultAction) + + // IpRules + if source.IpRules != nil { + ipRuleList := make([]IPRule_STATUS, len(source.IpRules)) + for ipRuleIndex, ipRuleItem := range source.IpRules { + // Shadow the loop variable to avoid aliasing + ipRuleItem := ipRuleItem + var ipRule IPRule_STATUS + err := ipRule.AssignProperties_From_IPRule_STATUS(&ipRuleItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_IPRule_STATUS() to populate field IpRules") + } + ipRuleList[ipRuleIndex] = ipRule + } + ruleSet.IpRules = ipRuleList + } else { + ruleSet.IpRules = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + ruleSet.PropertyBag = propertyBag + } else { + ruleSet.PropertyBag = nil + } + + // Invoke the augmentConversionForNetworkRuleSet_STATUS interface (if implemented) to customize the conversion + var ruleSetAsAny any = ruleSet + if augmentedRuleSet, ok := ruleSetAsAny.(augmentConversionForNetworkRuleSet_STATUS); ok { + err := augmentedRuleSet.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_NetworkRuleSet_STATUS populates the provided destination NetworkRuleSet_STATUS from our NetworkRuleSet_STATUS +func (ruleSet *NetworkRuleSet_STATUS) AssignProperties_To_NetworkRuleSet_STATUS(destination *storage.NetworkRuleSet_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(ruleSet.PropertyBag) + + // DefaultAction + destination.DefaultAction = genruntime.ClonePointerToString(ruleSet.DefaultAction) + + // IpRules + if ruleSet.IpRules != nil { + ipRuleList := make([]storage.IPRule_STATUS, len(ruleSet.IpRules)) + for ipRuleIndex, ipRuleItem := range ruleSet.IpRules { + // Shadow the loop variable to avoid aliasing + ipRuleItem := ipRuleItem + var ipRule storage.IPRule_STATUS + err := ipRuleItem.AssignProperties_To_IPRule_STATUS(&ipRule) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_IPRule_STATUS() to populate field IpRules") + } + ipRuleList[ipRuleIndex] = ipRule + } + destination.IpRules = ipRuleList + } else { + destination.IpRules = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForNetworkRuleSet_STATUS interface (if implemented) to customize the conversion + var ruleSetAsAny any = ruleSet + if augmentedRuleSet, ok := ruleSetAsAny.(augmentConversionForNetworkRuleSet_STATUS); ok { + err := augmentedRuleSet.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20210901.Policies // The policies for a container registry. type Policies struct { @@ -329,6 +1720,152 @@ type Policies struct { TrustPolicy *TrustPolicy `json:"trustPolicy,omitempty"` } +// AssignProperties_From_Policies populates our Policies from the provided source Policies +func (policies *Policies) AssignProperties_From_Policies(source *storage.Policies) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // ExportPolicy + if source.ExportPolicy != nil { + var exportPolicy ExportPolicy + err := exportPolicy.AssignProperties_From_ExportPolicy(source.ExportPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ExportPolicy() to populate field ExportPolicy") + } + policies.ExportPolicy = &exportPolicy + } else { + policies.ExportPolicy = nil + } + + // QuarantinePolicy + if source.QuarantinePolicy != nil { + var quarantinePolicy QuarantinePolicy + err := quarantinePolicy.AssignProperties_From_QuarantinePolicy(source.QuarantinePolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_QuarantinePolicy() to populate field QuarantinePolicy") + } + policies.QuarantinePolicy = &quarantinePolicy + } else { + policies.QuarantinePolicy = nil + } + + // RetentionPolicy + if source.RetentionPolicy != nil { + var retentionPolicy RetentionPolicy + err := retentionPolicy.AssignProperties_From_RetentionPolicy(source.RetentionPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_RetentionPolicy() to populate field RetentionPolicy") + } + policies.RetentionPolicy = &retentionPolicy + } else { + policies.RetentionPolicy = nil + } + + // TrustPolicy + if source.TrustPolicy != nil { + var trustPolicy TrustPolicy + err := trustPolicy.AssignProperties_From_TrustPolicy(source.TrustPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_TrustPolicy() to populate field TrustPolicy") + } + policies.TrustPolicy = &trustPolicy + } else { + policies.TrustPolicy = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + policies.PropertyBag = propertyBag + } else { + policies.PropertyBag = nil + } + + // Invoke the augmentConversionForPolicies interface (if implemented) to customize the conversion + var policiesAsAny any = policies + if augmentedPolicies, ok := policiesAsAny.(augmentConversionForPolicies); ok { + err := augmentedPolicies.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_Policies populates the provided destination Policies from our Policies +func (policies *Policies) AssignProperties_To_Policies(destination *storage.Policies) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(policies.PropertyBag) + + // ExportPolicy + if policies.ExportPolicy != nil { + var exportPolicy storage.ExportPolicy + err := policies.ExportPolicy.AssignProperties_To_ExportPolicy(&exportPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ExportPolicy() to populate field ExportPolicy") + } + destination.ExportPolicy = &exportPolicy + } else { + destination.ExportPolicy = nil + } + + // QuarantinePolicy + if policies.QuarantinePolicy != nil { + var quarantinePolicy storage.QuarantinePolicy + err := policies.QuarantinePolicy.AssignProperties_To_QuarantinePolicy(&quarantinePolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_QuarantinePolicy() to populate field QuarantinePolicy") + } + destination.QuarantinePolicy = &quarantinePolicy + } else { + destination.QuarantinePolicy = nil + } + + // RetentionPolicy + if policies.RetentionPolicy != nil { + var retentionPolicy storage.RetentionPolicy + err := policies.RetentionPolicy.AssignProperties_To_RetentionPolicy(&retentionPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_RetentionPolicy() to populate field RetentionPolicy") + } + destination.RetentionPolicy = &retentionPolicy + } else { + destination.RetentionPolicy = nil + } + + // TrustPolicy + if policies.TrustPolicy != nil { + var trustPolicy storage.TrustPolicy + err := policies.TrustPolicy.AssignProperties_To_TrustPolicy(&trustPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_TrustPolicy() to populate field TrustPolicy") + } + destination.TrustPolicy = &trustPolicy + } else { + destination.TrustPolicy = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForPolicies interface (if implemented) to customize the conversion + var policiesAsAny any = policies + if augmentedPolicies, ok := policiesAsAny.(augmentConversionForPolicies); ok { + err := augmentedPolicies.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20210901.Policies_STATUS // The policies for a container registry. type Policies_STATUS struct { @@ -339,6 +1876,152 @@ type Policies_STATUS struct { TrustPolicy *TrustPolicy_STATUS `json:"trustPolicy,omitempty"` } +// AssignProperties_From_Policies_STATUS populates our Policies_STATUS from the provided source Policies_STATUS +func (policies *Policies_STATUS) AssignProperties_From_Policies_STATUS(source *storage.Policies_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // ExportPolicy + if source.ExportPolicy != nil { + var exportPolicy ExportPolicy_STATUS + err := exportPolicy.AssignProperties_From_ExportPolicy_STATUS(source.ExportPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ExportPolicy_STATUS() to populate field ExportPolicy") + } + policies.ExportPolicy = &exportPolicy + } else { + policies.ExportPolicy = nil + } + + // QuarantinePolicy + if source.QuarantinePolicy != nil { + var quarantinePolicy QuarantinePolicy_STATUS + err := quarantinePolicy.AssignProperties_From_QuarantinePolicy_STATUS(source.QuarantinePolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_QuarantinePolicy_STATUS() to populate field QuarantinePolicy") + } + policies.QuarantinePolicy = &quarantinePolicy + } else { + policies.QuarantinePolicy = nil + } + + // RetentionPolicy + if source.RetentionPolicy != nil { + var retentionPolicy RetentionPolicy_STATUS + err := retentionPolicy.AssignProperties_From_RetentionPolicy_STATUS(source.RetentionPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_RetentionPolicy_STATUS() to populate field RetentionPolicy") + } + policies.RetentionPolicy = &retentionPolicy + } else { + policies.RetentionPolicy = nil + } + + // TrustPolicy + if source.TrustPolicy != nil { + var trustPolicy TrustPolicy_STATUS + err := trustPolicy.AssignProperties_From_TrustPolicy_STATUS(source.TrustPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_TrustPolicy_STATUS() to populate field TrustPolicy") + } + policies.TrustPolicy = &trustPolicy + } else { + policies.TrustPolicy = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + policies.PropertyBag = propertyBag + } else { + policies.PropertyBag = nil + } + + // Invoke the augmentConversionForPolicies_STATUS interface (if implemented) to customize the conversion + var policiesAsAny any = policies + if augmentedPolicies, ok := policiesAsAny.(augmentConversionForPolicies_STATUS); ok { + err := augmentedPolicies.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_Policies_STATUS populates the provided destination Policies_STATUS from our Policies_STATUS +func (policies *Policies_STATUS) AssignProperties_To_Policies_STATUS(destination *storage.Policies_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(policies.PropertyBag) + + // ExportPolicy + if policies.ExportPolicy != nil { + var exportPolicy storage.ExportPolicy_STATUS + err := policies.ExportPolicy.AssignProperties_To_ExportPolicy_STATUS(&exportPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ExportPolicy_STATUS() to populate field ExportPolicy") + } + destination.ExportPolicy = &exportPolicy + } else { + destination.ExportPolicy = nil + } + + // QuarantinePolicy + if policies.QuarantinePolicy != nil { + var quarantinePolicy storage.QuarantinePolicy_STATUS + err := policies.QuarantinePolicy.AssignProperties_To_QuarantinePolicy_STATUS(&quarantinePolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_QuarantinePolicy_STATUS() to populate field QuarantinePolicy") + } + destination.QuarantinePolicy = &quarantinePolicy + } else { + destination.QuarantinePolicy = nil + } + + // RetentionPolicy + if policies.RetentionPolicy != nil { + var retentionPolicy storage.RetentionPolicy_STATUS + err := policies.RetentionPolicy.AssignProperties_To_RetentionPolicy_STATUS(&retentionPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_RetentionPolicy_STATUS() to populate field RetentionPolicy") + } + destination.RetentionPolicy = &retentionPolicy + } else { + destination.RetentionPolicy = nil + } + + // TrustPolicy + if policies.TrustPolicy != nil { + var trustPolicy storage.TrustPolicy_STATUS + err := policies.TrustPolicy.AssignProperties_To_TrustPolicy_STATUS(&trustPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_TrustPolicy_STATUS() to populate field TrustPolicy") + } + destination.TrustPolicy = &trustPolicy + } else { + destination.TrustPolicy = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForPolicies_STATUS interface (if implemented) to customize the conversion + var policiesAsAny any = policies + if augmentedPolicies, ok := policiesAsAny.(augmentConversionForPolicies_STATUS); ok { + err := augmentedPolicies.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20210901.PrivateEndpointConnection_STATUS // An object that represents a private endpoint connection for a container registry. type PrivateEndpointConnection_STATUS struct { @@ -346,6 +2029,62 @@ type PrivateEndpointConnection_STATUS struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } +// AssignProperties_From_PrivateEndpointConnection_STATUS populates our PrivateEndpointConnection_STATUS from the provided source PrivateEndpointConnection_STATUS +func (connection *PrivateEndpointConnection_STATUS) AssignProperties_From_PrivateEndpointConnection_STATUS(source *storage.PrivateEndpointConnection_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Id + connection.Id = genruntime.ClonePointerToString(source.Id) + + // Update the property bag + if len(propertyBag) > 0 { + connection.PropertyBag = propertyBag + } else { + connection.PropertyBag = nil + } + + // Invoke the augmentConversionForPrivateEndpointConnection_STATUS interface (if implemented) to customize the conversion + var connectionAsAny any = connection + if augmentedConnection, ok := connectionAsAny.(augmentConversionForPrivateEndpointConnection_STATUS); ok { + err := augmentedConnection.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_PrivateEndpointConnection_STATUS populates the provided destination PrivateEndpointConnection_STATUS from our PrivateEndpointConnection_STATUS +func (connection *PrivateEndpointConnection_STATUS) AssignProperties_To_PrivateEndpointConnection_STATUS(destination *storage.PrivateEndpointConnection_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(connection.PropertyBag) + + // Id + destination.Id = genruntime.ClonePointerToString(connection.Id) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForPrivateEndpointConnection_STATUS interface (if implemented) to customize the conversion + var connectionAsAny any = connection + if augmentedConnection, ok := connectionAsAny.(augmentConversionForPrivateEndpointConnection_STATUS); ok { + err := augmentedConnection.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20210901.RegistryOperatorSpec // Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure type RegistryOperatorSpec struct { @@ -354,6 +2093,128 @@ type RegistryOperatorSpec struct { SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` } +// AssignProperties_From_RegistryOperatorSpec populates our RegistryOperatorSpec from the provided source RegistryOperatorSpec +func (operator *RegistryOperatorSpec) AssignProperties_From_RegistryOperatorSpec(source *storage.RegistryOperatorSpec) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // ConfigMapExpressions + if source.ConfigMapExpressions != nil { + configMapExpressionList := make([]*core.DestinationExpression, len(source.ConfigMapExpressions)) + for configMapExpressionIndex, configMapExpressionItem := range source.ConfigMapExpressions { + // Shadow the loop variable to avoid aliasing + configMapExpressionItem := configMapExpressionItem + if configMapExpressionItem != nil { + configMapExpression := *configMapExpressionItem.DeepCopy() + configMapExpressionList[configMapExpressionIndex] = &configMapExpression + } else { + configMapExpressionList[configMapExpressionIndex] = nil + } + } + operator.ConfigMapExpressions = configMapExpressionList + } else { + operator.ConfigMapExpressions = nil + } + + // SecretExpressions + if source.SecretExpressions != nil { + secretExpressionList := make([]*core.DestinationExpression, len(source.SecretExpressions)) + for secretExpressionIndex, secretExpressionItem := range source.SecretExpressions { + // Shadow the loop variable to avoid aliasing + secretExpressionItem := secretExpressionItem + if secretExpressionItem != nil { + secretExpression := *secretExpressionItem.DeepCopy() + secretExpressionList[secretExpressionIndex] = &secretExpression + } else { + secretExpressionList[secretExpressionIndex] = nil + } + } + operator.SecretExpressions = secretExpressionList + } else { + operator.SecretExpressions = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + operator.PropertyBag = propertyBag + } else { + operator.PropertyBag = nil + } + + // Invoke the augmentConversionForRegistryOperatorSpec interface (if implemented) to customize the conversion + var operatorAsAny any = operator + if augmentedOperator, ok := operatorAsAny.(augmentConversionForRegistryOperatorSpec); ok { + err := augmentedOperator.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_RegistryOperatorSpec populates the provided destination RegistryOperatorSpec from our RegistryOperatorSpec +func (operator *RegistryOperatorSpec) AssignProperties_To_RegistryOperatorSpec(destination *storage.RegistryOperatorSpec) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(operator.PropertyBag) + + // ConfigMapExpressions + if operator.ConfigMapExpressions != nil { + configMapExpressionList := make([]*core.DestinationExpression, len(operator.ConfigMapExpressions)) + for configMapExpressionIndex, configMapExpressionItem := range operator.ConfigMapExpressions { + // Shadow the loop variable to avoid aliasing + configMapExpressionItem := configMapExpressionItem + if configMapExpressionItem != nil { + configMapExpression := *configMapExpressionItem.DeepCopy() + configMapExpressionList[configMapExpressionIndex] = &configMapExpression + } else { + configMapExpressionList[configMapExpressionIndex] = nil + } + } + destination.ConfigMapExpressions = configMapExpressionList + } else { + destination.ConfigMapExpressions = nil + } + + // SecretExpressions + if operator.SecretExpressions != nil { + secretExpressionList := make([]*core.DestinationExpression, len(operator.SecretExpressions)) + for secretExpressionIndex, secretExpressionItem := range operator.SecretExpressions { + // Shadow the loop variable to avoid aliasing + secretExpressionItem := secretExpressionItem + if secretExpressionItem != nil { + secretExpression := *secretExpressionItem.DeepCopy() + secretExpressionList[secretExpressionIndex] = &secretExpression + } else { + secretExpressionList[secretExpressionIndex] = nil + } + } + destination.SecretExpressions = secretExpressionList + } else { + destination.SecretExpressions = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForRegistryOperatorSpec interface (if implemented) to customize the conversion + var operatorAsAny any = operator + if augmentedOperator, ok := operatorAsAny.(augmentConversionForRegistryOperatorSpec); ok { + err := augmentedOperator.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20210901.Sku // The SKU of a container registry. type Sku struct { @@ -361,6 +2222,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 v1api20210901.Sku_STATUS // The SKU of a container registry. type Sku_STATUS struct { @@ -369,6 +2286,68 @@ type Sku_STATUS struct { Tier *string `json:"tier,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) + + // Tier + sku.Tier = genruntime.ClonePointerToString(source.Tier) + + // 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) + + // Tier + destination.Tier = genruntime.ClonePointerToString(sku.Tier) + + // 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 v1api20210901.Status_STATUS // The status of an Azure resource at the time the operation was called. type Status_STATUS struct { @@ -378,6 +2357,74 @@ type Status_STATUS struct { Timestamp *string `json:"timestamp,omitempty"` } +// AssignProperties_From_Status_STATUS populates our Status_STATUS from the provided source Status_STATUS +func (status *Status_STATUS) AssignProperties_From_Status_STATUS(source *storage.Status_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // DisplayStatus + status.DisplayStatus = genruntime.ClonePointerToString(source.DisplayStatus) + + // Message + status.Message = genruntime.ClonePointerToString(source.Message) + + // Timestamp + status.Timestamp = genruntime.ClonePointerToString(source.Timestamp) + + // Update the property bag + if len(propertyBag) > 0 { + status.PropertyBag = propertyBag + } else { + status.PropertyBag = nil + } + + // Invoke the augmentConversionForStatus_STATUS interface (if implemented) to customize the conversion + var statusAsAny any = status + if augmentedStatus, ok := statusAsAny.(augmentConversionForStatus_STATUS); ok { + err := augmentedStatus.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_Status_STATUS populates the provided destination Status_STATUS from our Status_STATUS +func (status *Status_STATUS) AssignProperties_To_Status_STATUS(destination *storage.Status_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(status.PropertyBag) + + // DisplayStatus + destination.DisplayStatus = genruntime.ClonePointerToString(status.DisplayStatus) + + // Message + destination.Message = genruntime.ClonePointerToString(status.Message) + + // Timestamp + destination.Timestamp = genruntime.ClonePointerToString(status.Timestamp) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForStatus_STATUS interface (if implemented) to customize the conversion + var statusAsAny any = status + if augmentedStatus, ok := statusAsAny.(augmentConversionForStatus_STATUS); ok { + err := augmentedStatus.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20210901.SystemData_STATUS // Metadata pertaining to creation and last modification of the resource. type SystemData_STATUS struct { @@ -390,6 +2437,162 @@ 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 augmentConversionForEncryptionProperty interface { + AssignPropertiesFrom(src *storage.EncryptionProperty) error + AssignPropertiesTo(dst *storage.EncryptionProperty) error +} + +type augmentConversionForEncryptionProperty_STATUS interface { + AssignPropertiesFrom(src *storage.EncryptionProperty_STATUS) error + AssignPropertiesTo(dst *storage.EncryptionProperty_STATUS) error +} + +type augmentConversionForIdentityProperties interface { + AssignPropertiesFrom(src *storage.IdentityProperties) error + AssignPropertiesTo(dst *storage.IdentityProperties) error +} + +type augmentConversionForIdentityProperties_STATUS interface { + AssignPropertiesFrom(src *storage.IdentityProperties_STATUS) error + AssignPropertiesTo(dst *storage.IdentityProperties_STATUS) error +} + +type augmentConversionForNetworkRuleSet interface { + AssignPropertiesFrom(src *storage.NetworkRuleSet) error + AssignPropertiesTo(dst *storage.NetworkRuleSet) error +} + +type augmentConversionForNetworkRuleSet_STATUS interface { + AssignPropertiesFrom(src *storage.NetworkRuleSet_STATUS) error + AssignPropertiesTo(dst *storage.NetworkRuleSet_STATUS) error +} + +type augmentConversionForPolicies interface { + AssignPropertiesFrom(src *storage.Policies) error + AssignPropertiesTo(dst *storage.Policies) error +} + +type augmentConversionForPolicies_STATUS interface { + AssignPropertiesFrom(src *storage.Policies_STATUS) error + AssignPropertiesTo(dst *storage.Policies_STATUS) error +} + +type augmentConversionForPrivateEndpointConnection_STATUS interface { + AssignPropertiesFrom(src *storage.PrivateEndpointConnection_STATUS) error + AssignPropertiesTo(dst *storage.PrivateEndpointConnection_STATUS) error +} + +type augmentConversionForRegistryOperatorSpec interface { + AssignPropertiesFrom(src *storage.RegistryOperatorSpec) error + AssignPropertiesTo(dst *storage.RegistryOperatorSpec) 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 augmentConversionForStatus_STATUS interface { + AssignPropertiesFrom(src *storage.Status_STATUS) error + AssignPropertiesTo(dst *storage.Status_STATUS) error +} + +type augmentConversionForSystemData_STATUS interface { + AssignPropertiesFrom(src *storage.SystemData_STATUS) error + AssignPropertiesTo(dst *storage.SystemData_STATUS) error +} + // Storage version of v1api20210901.ExportPolicy // The export policy for a container registry. type ExportPolicy struct { @@ -397,6 +2600,62 @@ type ExportPolicy struct { Status *string `json:"status,omitempty"` } +// AssignProperties_From_ExportPolicy populates our ExportPolicy from the provided source ExportPolicy +func (policy *ExportPolicy) AssignProperties_From_ExportPolicy(source *storage.ExportPolicy) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Status + policy.Status = genruntime.ClonePointerToString(source.Status) + + // Update the property bag + if len(propertyBag) > 0 { + policy.PropertyBag = propertyBag + } else { + policy.PropertyBag = nil + } + + // Invoke the augmentConversionForExportPolicy interface (if implemented) to customize the conversion + var policyAsAny any = policy + if augmentedPolicy, ok := policyAsAny.(augmentConversionForExportPolicy); ok { + err := augmentedPolicy.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ExportPolicy populates the provided destination ExportPolicy from our ExportPolicy +func (policy *ExportPolicy) AssignProperties_To_ExportPolicy(destination *storage.ExportPolicy) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(policy.PropertyBag) + + // Status + destination.Status = genruntime.ClonePointerToString(policy.Status) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForExportPolicy interface (if implemented) to customize the conversion + var policyAsAny any = policy + if augmentedPolicy, ok := policyAsAny.(augmentConversionForExportPolicy); ok { + err := augmentedPolicy.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20210901.ExportPolicy_STATUS // The export policy for a container registry. type ExportPolicy_STATUS struct { @@ -404,6 +2663,62 @@ type ExportPolicy_STATUS struct { Status *string `json:"status,omitempty"` } +// AssignProperties_From_ExportPolicy_STATUS populates our ExportPolicy_STATUS from the provided source ExportPolicy_STATUS +func (policy *ExportPolicy_STATUS) AssignProperties_From_ExportPolicy_STATUS(source *storage.ExportPolicy_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Status + policy.Status = genruntime.ClonePointerToString(source.Status) + + // Update the property bag + if len(propertyBag) > 0 { + policy.PropertyBag = propertyBag + } else { + policy.PropertyBag = nil + } + + // Invoke the augmentConversionForExportPolicy_STATUS interface (if implemented) to customize the conversion + var policyAsAny any = policy + if augmentedPolicy, ok := policyAsAny.(augmentConversionForExportPolicy_STATUS); ok { + err := augmentedPolicy.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_ExportPolicy_STATUS populates the provided destination ExportPolicy_STATUS from our ExportPolicy_STATUS +func (policy *ExportPolicy_STATUS) AssignProperties_To_ExportPolicy_STATUS(destination *storage.ExportPolicy_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(policy.PropertyBag) + + // Status + destination.Status = genruntime.ClonePointerToString(policy.Status) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForExportPolicy_STATUS interface (if implemented) to customize the conversion + var policyAsAny any = policy + if augmentedPolicy, ok := policyAsAny.(augmentConversionForExportPolicy_STATUS); ok { + err := augmentedPolicy.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20210901.IPRule // IP rule with specific IP or IP range in CIDR format. type IPRule struct { @@ -412,6 +2727,68 @@ type IPRule struct { Value *string `json:"value,omitempty"` } +// AssignProperties_From_IPRule populates our IPRule from the provided source IPRule +func (rule *IPRule) AssignProperties_From_IPRule(source *storage.IPRule) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Action + rule.Action = genruntime.ClonePointerToString(source.Action) + + // Value + rule.Value = genruntime.ClonePointerToString(source.Value) + + // Update the property bag + if len(propertyBag) > 0 { + rule.PropertyBag = propertyBag + } else { + rule.PropertyBag = nil + } + + // Invoke the augmentConversionForIPRule interface (if implemented) to customize the conversion + var ruleAsAny any = rule + if augmentedRule, ok := ruleAsAny.(augmentConversionForIPRule); ok { + err := augmentedRule.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_IPRule populates the provided destination IPRule from our IPRule +func (rule *IPRule) AssignProperties_To_IPRule(destination *storage.IPRule) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(rule.PropertyBag) + + // Action + destination.Action = genruntime.ClonePointerToString(rule.Action) + + // Value + destination.Value = genruntime.ClonePointerToString(rule.Value) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForIPRule interface (if implemented) to customize the conversion + var ruleAsAny any = rule + if augmentedRule, ok := ruleAsAny.(augmentConversionForIPRule); ok { + err := augmentedRule.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20210901.IPRule_STATUS // IP rule with specific IP or IP range in CIDR format. type IPRule_STATUS struct { @@ -420,6 +2797,68 @@ type IPRule_STATUS struct { Value *string `json:"value,omitempty"` } +// AssignProperties_From_IPRule_STATUS populates our IPRule_STATUS from the provided source IPRule_STATUS +func (rule *IPRule_STATUS) AssignProperties_From_IPRule_STATUS(source *storage.IPRule_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Action + rule.Action = genruntime.ClonePointerToString(source.Action) + + // Value + rule.Value = genruntime.ClonePointerToString(source.Value) + + // Update the property bag + if len(propertyBag) > 0 { + rule.PropertyBag = propertyBag + } else { + rule.PropertyBag = nil + } + + // Invoke the augmentConversionForIPRule_STATUS interface (if implemented) to customize the conversion + var ruleAsAny any = rule + if augmentedRule, ok := ruleAsAny.(augmentConversionForIPRule_STATUS); ok { + err := augmentedRule.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_IPRule_STATUS populates the provided destination IPRule_STATUS from our IPRule_STATUS +func (rule *IPRule_STATUS) AssignProperties_To_IPRule_STATUS(destination *storage.IPRule_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(rule.PropertyBag) + + // Action + destination.Action = genruntime.ClonePointerToString(rule.Action) + + // Value + destination.Value = genruntime.ClonePointerToString(rule.Value) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForIPRule_STATUS interface (if implemented) to customize the conversion + var ruleAsAny any = rule + if augmentedRule, ok := ruleAsAny.(augmentConversionForIPRule_STATUS); ok { + err := augmentedRule.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20210901.KeyVaultProperties type KeyVaultProperties struct { Identity *string `json:"identity,omitempty"` @@ -427,6 +2866,88 @@ 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) + + // Identity + properties.Identity = genruntime.ClonePointerToString(source.Identity) + + // IdentityFromConfig + if source.IdentityFromConfig != nil { + propertyBag.Add("IdentityFromConfig", *source.IdentityFromConfig) + } else { + propertyBag.Remove("IdentityFromConfig") + } + + // 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) + + // Identity + destination.Identity = genruntime.ClonePointerToString(properties.Identity) + + // IdentityFromConfig + if propertyBag.Contains("IdentityFromConfig") { + var identityFromConfig genruntime.ConfigMapReference + err := propertyBag.Pull("IdentityFromConfig", &identityFromConfig) + if err != nil { + return eris.Wrap(err, "pulling 'IdentityFromConfig' from propertyBag") + } + + destination.IdentityFromConfig = &identityFromConfig + } else { + destination.IdentityFromConfig = nil + } + + // 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 v1api20210901.KeyVaultProperties_STATUS type KeyVaultProperties_STATUS struct { Identity *string `json:"identity,omitempty"` @@ -437,6 +2958,96 @@ type KeyVaultProperties_STATUS struct { VersionedKeyIdentifier *string `json:"versionedKeyIdentifier,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) + + // Identity + properties.Identity = genruntime.ClonePointerToString(source.Identity) + + // KeyIdentifier + properties.KeyIdentifier = genruntime.ClonePointerToString(source.KeyIdentifier) + + // KeyRotationEnabled + if source.KeyRotationEnabled != nil { + keyRotationEnabled := *source.KeyRotationEnabled + properties.KeyRotationEnabled = &keyRotationEnabled + } else { + properties.KeyRotationEnabled = nil + } + + // LastKeyRotationTimestamp + properties.LastKeyRotationTimestamp = genruntime.ClonePointerToString(source.LastKeyRotationTimestamp) + + // VersionedKeyIdentifier + properties.VersionedKeyIdentifier = genruntime.ClonePointerToString(source.VersionedKeyIdentifier) + + // 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) + + // Identity + destination.Identity = genruntime.ClonePointerToString(properties.Identity) + + // KeyIdentifier + destination.KeyIdentifier = genruntime.ClonePointerToString(properties.KeyIdentifier) + + // KeyRotationEnabled + if properties.KeyRotationEnabled != nil { + keyRotationEnabled := *properties.KeyRotationEnabled + destination.KeyRotationEnabled = &keyRotationEnabled + } else { + destination.KeyRotationEnabled = nil + } + + // LastKeyRotationTimestamp + destination.LastKeyRotationTimestamp = genruntime.ClonePointerToString(properties.LastKeyRotationTimestamp) + + // VersionedKeyIdentifier + destination.VersionedKeyIdentifier = genruntime.ClonePointerToString(properties.VersionedKeyIdentifier) + + // 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 v1api20210901.QuarantinePolicy // The quarantine policy for a container registry. type QuarantinePolicy struct { @@ -444,6 +3055,62 @@ type QuarantinePolicy struct { Status *string `json:"status,omitempty"` } +// AssignProperties_From_QuarantinePolicy populates our QuarantinePolicy from the provided source QuarantinePolicy +func (policy *QuarantinePolicy) AssignProperties_From_QuarantinePolicy(source *storage.QuarantinePolicy) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Status + policy.Status = genruntime.ClonePointerToString(source.Status) + + // Update the property bag + if len(propertyBag) > 0 { + policy.PropertyBag = propertyBag + } else { + policy.PropertyBag = nil + } + + // Invoke the augmentConversionForQuarantinePolicy interface (if implemented) to customize the conversion + var policyAsAny any = policy + if augmentedPolicy, ok := policyAsAny.(augmentConversionForQuarantinePolicy); ok { + err := augmentedPolicy.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_QuarantinePolicy populates the provided destination QuarantinePolicy from our QuarantinePolicy +func (policy *QuarantinePolicy) AssignProperties_To_QuarantinePolicy(destination *storage.QuarantinePolicy) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(policy.PropertyBag) + + // Status + destination.Status = genruntime.ClonePointerToString(policy.Status) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForQuarantinePolicy interface (if implemented) to customize the conversion + var policyAsAny any = policy + if augmentedPolicy, ok := policyAsAny.(augmentConversionForQuarantinePolicy); ok { + err := augmentedPolicy.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20210901.QuarantinePolicy_STATUS // The quarantine policy for a container registry. type QuarantinePolicy_STATUS struct { @@ -451,6 +3118,62 @@ type QuarantinePolicy_STATUS struct { Status *string `json:"status,omitempty"` } +// AssignProperties_From_QuarantinePolicy_STATUS populates our QuarantinePolicy_STATUS from the provided source QuarantinePolicy_STATUS +func (policy *QuarantinePolicy_STATUS) AssignProperties_From_QuarantinePolicy_STATUS(source *storage.QuarantinePolicy_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Status + policy.Status = genruntime.ClonePointerToString(source.Status) + + // Update the property bag + if len(propertyBag) > 0 { + policy.PropertyBag = propertyBag + } else { + policy.PropertyBag = nil + } + + // Invoke the augmentConversionForQuarantinePolicy_STATUS interface (if implemented) to customize the conversion + var policyAsAny any = policy + if augmentedPolicy, ok := policyAsAny.(augmentConversionForQuarantinePolicy_STATUS); ok { + err := augmentedPolicy.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_QuarantinePolicy_STATUS populates the provided destination QuarantinePolicy_STATUS from our QuarantinePolicy_STATUS +func (policy *QuarantinePolicy_STATUS) AssignProperties_To_QuarantinePolicy_STATUS(destination *storage.QuarantinePolicy_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(policy.PropertyBag) + + // Status + destination.Status = genruntime.ClonePointerToString(policy.Status) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForQuarantinePolicy_STATUS interface (if implemented) to customize the conversion + var policyAsAny any = policy + if augmentedPolicy, ok := policyAsAny.(augmentConversionForQuarantinePolicy_STATUS); ok { + err := augmentedPolicy.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20210901.RetentionPolicy // The retention policy for a container registry. type RetentionPolicy struct { @@ -459,6 +3182,68 @@ type RetentionPolicy struct { Status *string `json:"status,omitempty"` } +// AssignProperties_From_RetentionPolicy populates our RetentionPolicy from the provided source RetentionPolicy +func (policy *RetentionPolicy) AssignProperties_From_RetentionPolicy(source *storage.RetentionPolicy) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Days + policy.Days = genruntime.ClonePointerToInt(source.Days) + + // Status + policy.Status = genruntime.ClonePointerToString(source.Status) + + // Update the property bag + if len(propertyBag) > 0 { + policy.PropertyBag = propertyBag + } else { + policy.PropertyBag = nil + } + + // Invoke the augmentConversionForRetentionPolicy interface (if implemented) to customize the conversion + var policyAsAny any = policy + if augmentedPolicy, ok := policyAsAny.(augmentConversionForRetentionPolicy); ok { + err := augmentedPolicy.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_RetentionPolicy populates the provided destination RetentionPolicy from our RetentionPolicy +func (policy *RetentionPolicy) AssignProperties_To_RetentionPolicy(destination *storage.RetentionPolicy) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(policy.PropertyBag) + + // Days + destination.Days = genruntime.ClonePointerToInt(policy.Days) + + // Status + destination.Status = genruntime.ClonePointerToString(policy.Status) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForRetentionPolicy interface (if implemented) to customize the conversion + var policyAsAny any = policy + if augmentedPolicy, ok := policyAsAny.(augmentConversionForRetentionPolicy); ok { + err := augmentedPolicy.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20210901.RetentionPolicy_STATUS // The retention policy for a container registry. type RetentionPolicy_STATUS struct { @@ -468,6 +3253,74 @@ type RetentionPolicy_STATUS struct { Status *string `json:"status,omitempty"` } +// AssignProperties_From_RetentionPolicy_STATUS populates our RetentionPolicy_STATUS from the provided source RetentionPolicy_STATUS +func (policy *RetentionPolicy_STATUS) AssignProperties_From_RetentionPolicy_STATUS(source *storage.RetentionPolicy_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Days + policy.Days = genruntime.ClonePointerToInt(source.Days) + + // LastUpdatedTime + policy.LastUpdatedTime = genruntime.ClonePointerToString(source.LastUpdatedTime) + + // Status + policy.Status = genruntime.ClonePointerToString(source.Status) + + // Update the property bag + if len(propertyBag) > 0 { + policy.PropertyBag = propertyBag + } else { + policy.PropertyBag = nil + } + + // Invoke the augmentConversionForRetentionPolicy_STATUS interface (if implemented) to customize the conversion + var policyAsAny any = policy + if augmentedPolicy, ok := policyAsAny.(augmentConversionForRetentionPolicy_STATUS); ok { + err := augmentedPolicy.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_RetentionPolicy_STATUS populates the provided destination RetentionPolicy_STATUS from our RetentionPolicy_STATUS +func (policy *RetentionPolicy_STATUS) AssignProperties_To_RetentionPolicy_STATUS(destination *storage.RetentionPolicy_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(policy.PropertyBag) + + // Days + destination.Days = genruntime.ClonePointerToInt(policy.Days) + + // LastUpdatedTime + destination.LastUpdatedTime = genruntime.ClonePointerToString(policy.LastUpdatedTime) + + // Status + destination.Status = genruntime.ClonePointerToString(policy.Status) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForRetentionPolicy_STATUS interface (if implemented) to customize the conversion + var policyAsAny any = policy + if augmentedPolicy, ok := policyAsAny.(augmentConversionForRetentionPolicy_STATUS); ok { + err := augmentedPolicy.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20210901.TrustPolicy // The content trust policy for a container registry. type TrustPolicy struct { @@ -476,6 +3329,68 @@ type TrustPolicy struct { Type *string `json:"type,omitempty"` } +// AssignProperties_From_TrustPolicy populates our TrustPolicy from the provided source TrustPolicy +func (policy *TrustPolicy) AssignProperties_From_TrustPolicy(source *storage.TrustPolicy) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Status + policy.Status = genruntime.ClonePointerToString(source.Status) + + // Type + policy.Type = genruntime.ClonePointerToString(source.Type) + + // Update the property bag + if len(propertyBag) > 0 { + policy.PropertyBag = propertyBag + } else { + policy.PropertyBag = nil + } + + // Invoke the augmentConversionForTrustPolicy interface (if implemented) to customize the conversion + var policyAsAny any = policy + if augmentedPolicy, ok := policyAsAny.(augmentConversionForTrustPolicy); ok { + err := augmentedPolicy.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_TrustPolicy populates the provided destination TrustPolicy from our TrustPolicy +func (policy *TrustPolicy) AssignProperties_To_TrustPolicy(destination *storage.TrustPolicy) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(policy.PropertyBag) + + // Status + destination.Status = genruntime.ClonePointerToString(policy.Status) + + // Type + destination.Type = genruntime.ClonePointerToString(policy.Type) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForTrustPolicy interface (if implemented) to customize the conversion + var policyAsAny any = policy + if augmentedPolicy, ok := policyAsAny.(augmentConversionForTrustPolicy); ok { + err := augmentedPolicy.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20210901.TrustPolicy_STATUS // The content trust policy for a container registry. type TrustPolicy_STATUS struct { @@ -484,6 +3399,68 @@ type TrustPolicy_STATUS struct { Type *string `json:"type,omitempty"` } +// AssignProperties_From_TrustPolicy_STATUS populates our TrustPolicy_STATUS from the provided source TrustPolicy_STATUS +func (policy *TrustPolicy_STATUS) AssignProperties_From_TrustPolicy_STATUS(source *storage.TrustPolicy_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // Status + policy.Status = genruntime.ClonePointerToString(source.Status) + + // Type + policy.Type = genruntime.ClonePointerToString(source.Type) + + // Update the property bag + if len(propertyBag) > 0 { + policy.PropertyBag = propertyBag + } else { + policy.PropertyBag = nil + } + + // Invoke the augmentConversionForTrustPolicy_STATUS interface (if implemented) to customize the conversion + var policyAsAny any = policy + if augmentedPolicy, ok := policyAsAny.(augmentConversionForTrustPolicy_STATUS); ok { + err := augmentedPolicy.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_TrustPolicy_STATUS populates the provided destination TrustPolicy_STATUS from our TrustPolicy_STATUS +func (policy *TrustPolicy_STATUS) AssignProperties_To_TrustPolicy_STATUS(destination *storage.TrustPolicy_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(policy.PropertyBag) + + // Status + destination.Status = genruntime.ClonePointerToString(policy.Status) + + // Type + destination.Type = genruntime.ClonePointerToString(policy.Type) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForTrustPolicy_STATUS interface (if implemented) to customize the conversion + var policyAsAny any = policy + if augmentedPolicy, ok := policyAsAny.(augmentConversionForTrustPolicy_STATUS); ok { + err := augmentedPolicy.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + // Storage version of v1api20210901.UserAssignedIdentityDetails // Information about the user assigned identity for the resource type UserAssignedIdentityDetails struct { @@ -491,6 +3468,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 v1api20210901.UserIdentityProperties_STATUS type UserIdentityProperties_STATUS struct { ClientId *string `json:"clientId,omitempty"` @@ -498,6 +3531,138 @@ type UserIdentityProperties_STATUS struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } +// AssignProperties_From_UserIdentityProperties_STATUS populates our UserIdentityProperties_STATUS from the provided source UserIdentityProperties_STATUS +func (properties *UserIdentityProperties_STATUS) AssignProperties_From_UserIdentityProperties_STATUS(source *storage.UserIdentityProperties_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(source.PropertyBag) + + // ClientId + properties.ClientId = genruntime.ClonePointerToString(source.ClientId) + + // PrincipalId + properties.PrincipalId = genruntime.ClonePointerToString(source.PrincipalId) + + // Update the property bag + if len(propertyBag) > 0 { + properties.PropertyBag = propertyBag + } else { + properties.PropertyBag = nil + } + + // Invoke the augmentConversionForUserIdentityProperties_STATUS interface (if implemented) to customize the conversion + var propertiesAsAny any = properties + if augmentedProperties, ok := propertiesAsAny.(augmentConversionForUserIdentityProperties_STATUS); ok { + err := augmentedProperties.AssignPropertiesFrom(source) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesFrom() for conversion") + } + } + + // No error + return nil +} + +// AssignProperties_To_UserIdentityProperties_STATUS populates the provided destination UserIdentityProperties_STATUS from our UserIdentityProperties_STATUS +func (properties *UserIdentityProperties_STATUS) AssignProperties_To_UserIdentityProperties_STATUS(destination *storage.UserIdentityProperties_STATUS) error { + // Clone the existing property bag + propertyBag := genruntime.NewPropertyBag(properties.PropertyBag) + + // ClientId + destination.ClientId = genruntime.ClonePointerToString(properties.ClientId) + + // PrincipalId + destination.PrincipalId = genruntime.ClonePointerToString(properties.PrincipalId) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // Invoke the augmentConversionForUserIdentityProperties_STATUS interface (if implemented) to customize the conversion + var propertiesAsAny any = properties + if augmentedProperties, ok := propertiesAsAny.(augmentConversionForUserIdentityProperties_STATUS); ok { + err := augmentedProperties.AssignPropertiesTo(destination) + if err != nil { + return eris.Wrap(err, "calling augmented AssignPropertiesTo() for conversion") + } + } + + // No error + return nil +} + +type augmentConversionForExportPolicy interface { + AssignPropertiesFrom(src *storage.ExportPolicy) error + AssignPropertiesTo(dst *storage.ExportPolicy) error +} + +type augmentConversionForExportPolicy_STATUS interface { + AssignPropertiesFrom(src *storage.ExportPolicy_STATUS) error + AssignPropertiesTo(dst *storage.ExportPolicy_STATUS) error +} + +type augmentConversionForIPRule interface { + AssignPropertiesFrom(src *storage.IPRule) error + AssignPropertiesTo(dst *storage.IPRule) error +} + +type augmentConversionForIPRule_STATUS interface { + AssignPropertiesFrom(src *storage.IPRule_STATUS) error + AssignPropertiesTo(dst *storage.IPRule_STATUS) 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 augmentConversionForQuarantinePolicy interface { + AssignPropertiesFrom(src *storage.QuarantinePolicy) error + AssignPropertiesTo(dst *storage.QuarantinePolicy) error +} + +type augmentConversionForQuarantinePolicy_STATUS interface { + AssignPropertiesFrom(src *storage.QuarantinePolicy_STATUS) error + AssignPropertiesTo(dst *storage.QuarantinePolicy_STATUS) error +} + +type augmentConversionForRetentionPolicy interface { + AssignPropertiesFrom(src *storage.RetentionPolicy) error + AssignPropertiesTo(dst *storage.RetentionPolicy) error +} + +type augmentConversionForRetentionPolicy_STATUS interface { + AssignPropertiesFrom(src *storage.RetentionPolicy_STATUS) error + AssignPropertiesTo(dst *storage.RetentionPolicy_STATUS) error +} + +type augmentConversionForTrustPolicy interface { + AssignPropertiesFrom(src *storage.TrustPolicy) error + AssignPropertiesTo(dst *storage.TrustPolicy) error +} + +type augmentConversionForTrustPolicy_STATUS interface { + AssignPropertiesFrom(src *storage.TrustPolicy_STATUS) error + AssignPropertiesTo(dst *storage.TrustPolicy_STATUS) error +} + +type augmentConversionForUserAssignedIdentityDetails interface { + AssignPropertiesFrom(src *storage.UserAssignedIdentityDetails) error + AssignPropertiesTo(dst *storage.UserAssignedIdentityDetails) error +} + +type augmentConversionForUserIdentityProperties_STATUS interface { + AssignPropertiesFrom(src *storage.UserIdentityProperties_STATUS) error + AssignPropertiesTo(dst *storage.UserIdentityProperties_STATUS) error +} + func init() { SchemeBuilder.Register(&Registry{}, &RegistryList{}) } diff --git a/v2/api/containerregistry/v1api20210901/storage/registry_types_gen_test.go b/v2/api/containerregistry/v1api20210901/storage/registry_types_gen_test.go index 412dd9f7ebb..f52a57c5994 100644 --- a/v2/api/containerregistry/v1api20210901/storage/registry_types_gen_test.go +++ b/v2/api/containerregistry/v1api20210901/storage/registry_types_gen_test.go @@ -5,6 +5,7 @@ package storage import ( "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20230701/storage" "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/kr/pretty" @@ -17,6 +18,48 @@ import ( "testing" ) +func Test_EncryptionProperty_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from EncryptionProperty to EncryptionProperty via AssignProperties_To_EncryptionProperty & AssignProperties_From_EncryptionProperty returns original", + prop.ForAll(RunPropertyAssignmentTestForEncryptionProperty, EncryptionPropertyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForEncryptionProperty tests if a specific instance of EncryptionProperty can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForEncryptionProperty(subject EncryptionProperty) 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.EncryptionProperty + err := copied.AssignProperties_To_EncryptionProperty(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual EncryptionProperty + err = actual.AssignProperties_From_EncryptionProperty(&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_EncryptionProperty_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -91,6 +134,48 @@ func AddRelatedPropertyGeneratorsForEncryptionProperty(gens map[string]gopter.Ge gens["KeyVaultProperties"] = gen.PtrOf(KeyVaultPropertiesGenerator()) } +func Test_EncryptionProperty_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from EncryptionProperty_STATUS to EncryptionProperty_STATUS via AssignProperties_To_EncryptionProperty_STATUS & AssignProperties_From_EncryptionProperty_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForEncryptionProperty_STATUS, EncryptionProperty_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForEncryptionProperty_STATUS tests if a specific instance of EncryptionProperty_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForEncryptionProperty_STATUS(subject EncryptionProperty_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.EncryptionProperty_STATUS + err := copied.AssignProperties_To_EncryptionProperty_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual EncryptionProperty_STATUS + err = actual.AssignProperties_From_EncryptionProperty_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_EncryptionProperty_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -166,6 +251,48 @@ func AddRelatedPropertyGeneratorsForEncryptionProperty_STATUS(gens map[string]go gens["KeyVaultProperties"] = gen.PtrOf(KeyVaultProperties_STATUSGenerator()) } +func Test_ExportPolicy_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ExportPolicy to ExportPolicy via AssignProperties_To_ExportPolicy & AssignProperties_From_ExportPolicy returns original", + prop.ForAll(RunPropertyAssignmentTestForExportPolicy, ExportPolicyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForExportPolicy tests if a specific instance of ExportPolicy can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForExportPolicy(subject ExportPolicy) 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.ExportPolicy + err := copied.AssignProperties_To_ExportPolicy(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ExportPolicy + err = actual.AssignProperties_From_ExportPolicy(&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_ExportPolicy_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -226,6 +353,48 @@ func AddIndependentPropertyGeneratorsForExportPolicy(gens map[string]gopter.Gen) gens["Status"] = gen.PtrOf(gen.AlphaString()) } +func Test_ExportPolicy_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ExportPolicy_STATUS to ExportPolicy_STATUS via AssignProperties_To_ExportPolicy_STATUS & AssignProperties_From_ExportPolicy_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForExportPolicy_STATUS, ExportPolicy_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForExportPolicy_STATUS tests if a specific instance of ExportPolicy_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForExportPolicy_STATUS(subject ExportPolicy_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.ExportPolicy_STATUS + err := copied.AssignProperties_To_ExportPolicy_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ExportPolicy_STATUS + err = actual.AssignProperties_From_ExportPolicy_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_ExportPolicy_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -287,6 +456,48 @@ func AddIndependentPropertyGeneratorsForExportPolicy_STATUS(gens map[string]gopt gens["Status"] = gen.PtrOf(gen.AlphaString()) } +func Test_IPRule_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from IPRule to IPRule via AssignProperties_To_IPRule & AssignProperties_From_IPRule returns original", + prop.ForAll(RunPropertyAssignmentTestForIPRule, IPRuleGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForIPRule tests if a specific instance of IPRule can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForIPRule(subject IPRule) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.IPRule + err := copied.AssignProperties_To_IPRule(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual IPRule + err = actual.AssignProperties_From_IPRule(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_IPRule_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -348,6 +559,48 @@ func AddIndependentPropertyGeneratorsForIPRule(gens map[string]gopter.Gen) { gens["Value"] = gen.PtrOf(gen.AlphaString()) } +func Test_IPRule_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from IPRule_STATUS to IPRule_STATUS via AssignProperties_To_IPRule_STATUS & AssignProperties_From_IPRule_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForIPRule_STATUS, IPRule_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForIPRule_STATUS tests if a specific instance of IPRule_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForIPRule_STATUS(subject IPRule_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.IPRule_STATUS + err := copied.AssignProperties_To_IPRule_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual IPRule_STATUS + err = actual.AssignProperties_From_IPRule_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_IPRule_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -409,6 +662,48 @@ func AddIndependentPropertyGeneratorsForIPRule_STATUS(gens map[string]gopter.Gen gens["Value"] = gen.PtrOf(gen.AlphaString()) } +func Test_IdentityProperties_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from IdentityProperties to IdentityProperties via AssignProperties_To_IdentityProperties & AssignProperties_From_IdentityProperties returns original", + prop.ForAll(RunPropertyAssignmentTestForIdentityProperties, IdentityPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForIdentityProperties tests if a specific instance of IdentityProperties can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForIdentityProperties(subject IdentityProperties) 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.IdentityProperties + err := copied.AssignProperties_To_IdentityProperties(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual IdentityProperties + err = actual.AssignProperties_From_IdentityProperties(&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_IdentityProperties_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -485,6 +780,48 @@ func AddRelatedPropertyGeneratorsForIdentityProperties(gens map[string]gopter.Ge gens["UserAssignedIdentities"] = gen.SliceOf(UserAssignedIdentityDetailsGenerator()) } +func Test_IdentityProperties_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from IdentityProperties_STATUS to IdentityProperties_STATUS via AssignProperties_To_IdentityProperties_STATUS & AssignProperties_From_IdentityProperties_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForIdentityProperties_STATUS, IdentityProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForIdentityProperties_STATUS tests if a specific instance of IdentityProperties_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForIdentityProperties_STATUS(subject IdentityProperties_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.IdentityProperties_STATUS + err := copied.AssignProperties_To_IdentityProperties_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual IdentityProperties_STATUS + err = actual.AssignProperties_From_IdentityProperties_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_IdentityProperties_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -564,6 +901,48 @@ func AddRelatedPropertyGeneratorsForIdentityProperties_STATUS(gens map[string]go UserIdentityProperties_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() @@ -625,29 +1004,71 @@ func AddIndependentPropertyGeneratorsForKeyVaultProperties(gens map[string]gopte gens["KeyIdentifier"] = gen.PtrOf(gen.AlphaString()) } -func Test_KeyVaultProperties_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { +func Test_KeyVaultProperties_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() - parameters.MinSuccessfulTests = 80 - parameters.MaxSize = 3 + parameters.MaxSize = 10 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)) + "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)) } -// 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) +// 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() } - // Deserialize back into memory + // Use AssignPropertiesFrom() to convert back to our original type var actual KeyVaultProperties_STATUS - err = json.Unmarshal(bin, &actual) + 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() } @@ -690,6 +1111,48 @@ func AddIndependentPropertyGeneratorsForKeyVaultProperties_STATUS(gens map[strin gens["VersionedKeyIdentifier"] = gen.PtrOf(gen.AlphaString()) } +func Test_NetworkRuleSet_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from NetworkRuleSet to NetworkRuleSet via AssignProperties_To_NetworkRuleSet & AssignProperties_From_NetworkRuleSet returns original", + prop.ForAll(RunPropertyAssignmentTestForNetworkRuleSet, NetworkRuleSetGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForNetworkRuleSet tests if a specific instance of NetworkRuleSet can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForNetworkRuleSet(subject NetworkRuleSet) 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.NetworkRuleSet + err := copied.AssignProperties_To_NetworkRuleSet(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual NetworkRuleSet + err = actual.AssignProperties_From_NetworkRuleSet(&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_NetworkRuleSet_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -764,6 +1227,48 @@ func AddRelatedPropertyGeneratorsForNetworkRuleSet(gens map[string]gopter.Gen) { gens["IpRules"] = gen.SliceOf(IPRuleGenerator()) } +func Test_NetworkRuleSet_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from NetworkRuleSet_STATUS to NetworkRuleSet_STATUS via AssignProperties_To_NetworkRuleSet_STATUS & AssignProperties_From_NetworkRuleSet_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForNetworkRuleSet_STATUS, NetworkRuleSet_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForNetworkRuleSet_STATUS tests if a specific instance of NetworkRuleSet_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForNetworkRuleSet_STATUS(subject NetworkRuleSet_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.NetworkRuleSet_STATUS + err := copied.AssignProperties_To_NetworkRuleSet_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual NetworkRuleSet_STATUS + err = actual.AssignProperties_From_NetworkRuleSet_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_NetworkRuleSet_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -839,6 +1344,48 @@ func AddRelatedPropertyGeneratorsForNetworkRuleSet_STATUS(gens map[string]gopter gens["IpRules"] = gen.SliceOf(IPRule_STATUSGenerator()) } +func Test_Policies_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Policies to Policies via AssignProperties_To_Policies & AssignProperties_From_Policies returns original", + prop.ForAll(RunPropertyAssignmentTestForPolicies, PoliciesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForPolicies tests if a specific instance of Policies can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForPolicies(subject Policies) 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.Policies + err := copied.AssignProperties_To_Policies(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Policies + err = actual.AssignProperties_From_Policies(&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_Policies_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -902,6 +1449,48 @@ func AddRelatedPropertyGeneratorsForPolicies(gens map[string]gopter.Gen) { gens["TrustPolicy"] = gen.PtrOf(TrustPolicyGenerator()) } +func Test_Policies_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Policies_STATUS to Policies_STATUS via AssignProperties_To_Policies_STATUS & AssignProperties_From_Policies_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForPolicies_STATUS, Policies_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForPolicies_STATUS tests if a specific instance of Policies_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForPolicies_STATUS(subject Policies_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.Policies_STATUS + err := copied.AssignProperties_To_Policies_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Policies_STATUS + err = actual.AssignProperties_From_Policies_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_Policies_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -965,6 +1554,48 @@ func AddRelatedPropertyGeneratorsForPolicies_STATUS(gens map[string]gopter.Gen) gens["TrustPolicy"] = gen.PtrOf(TrustPolicy_STATUSGenerator()) } +func Test_PrivateEndpointConnection_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from PrivateEndpointConnection_STATUS to PrivateEndpointConnection_STATUS via AssignProperties_To_PrivateEndpointConnection_STATUS & AssignProperties_From_PrivateEndpointConnection_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForPrivateEndpointConnection_STATUS, PrivateEndpointConnection_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForPrivateEndpointConnection_STATUS tests if a specific instance of PrivateEndpointConnection_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForPrivateEndpointConnection_STATUS(subject PrivateEndpointConnection_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.PrivateEndpointConnection_STATUS + err := copied.AssignProperties_To_PrivateEndpointConnection_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual PrivateEndpointConnection_STATUS + err = actual.AssignProperties_From_PrivateEndpointConnection_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + func Test_PrivateEndpointConnection_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1026,6 +1657,48 @@ func AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS(gens ma gens["Id"] = gen.PtrOf(gen.AlphaString()) } +func Test_QuarantinePolicy_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from QuarantinePolicy to QuarantinePolicy via AssignProperties_To_QuarantinePolicy & AssignProperties_From_QuarantinePolicy returns original", + prop.ForAll(RunPropertyAssignmentTestForQuarantinePolicy, QuarantinePolicyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForQuarantinePolicy tests if a specific instance of QuarantinePolicy can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForQuarantinePolicy(subject QuarantinePolicy) 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.QuarantinePolicy + err := copied.AssignProperties_To_QuarantinePolicy(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual QuarantinePolicy + err = actual.AssignProperties_From_QuarantinePolicy(&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_QuarantinePolicy_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1086,6 +1759,48 @@ func AddIndependentPropertyGeneratorsForQuarantinePolicy(gens map[string]gopter. gens["Status"] = gen.PtrOf(gen.AlphaString()) } +func Test_QuarantinePolicy_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from QuarantinePolicy_STATUS to QuarantinePolicy_STATUS via AssignProperties_To_QuarantinePolicy_STATUS & AssignProperties_From_QuarantinePolicy_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForQuarantinePolicy_STATUS, QuarantinePolicy_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForQuarantinePolicy_STATUS tests if a specific instance of QuarantinePolicy_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForQuarantinePolicy_STATUS(subject QuarantinePolicy_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.QuarantinePolicy_STATUS + err := copied.AssignProperties_To_QuarantinePolicy_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual QuarantinePolicy_STATUS + err = actual.AssignProperties_From_QuarantinePolicy_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_QuarantinePolicy_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1147,6 +1862,91 @@ func AddIndependentPropertyGeneratorsForQuarantinePolicy_STATUS(gens map[string] gens["Status"] = gen.PtrOf(gen.AlphaString()) } +func Test_Registry_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 Registry to hub returns original", + prop.ForAll(RunResourceConversionTestForRegistry, RegistryGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForRegistry tests if a specific instance of Registry round trips to the hub storage version and back losslessly +func RunResourceConversionTestForRegistry(subject Registry) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.Registry + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual Registry + 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_Registry_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Registry to Registry via AssignProperties_To_Registry & AssignProperties_From_Registry returns original", + prop.ForAll(RunPropertyAssignmentTestForRegistry, RegistryGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForRegistry tests if a specific instance of Registry can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForRegistry(subject Registry) 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.Registry + err := copied.AssignProperties_To_Registry(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Registry + err = actual.AssignProperties_From_Registry(&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_Registry_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1208,6 +2008,48 @@ func AddRelatedPropertyGeneratorsForRegistry(gens map[string]gopter.Gen) { gens["Status"] = Registry_STATUSGenerator() } +func Test_RegistryOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from RegistryOperatorSpec to RegistryOperatorSpec via AssignProperties_To_RegistryOperatorSpec & AssignProperties_From_RegistryOperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForRegistryOperatorSpec, RegistryOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForRegistryOperatorSpec tests if a specific instance of RegistryOperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForRegistryOperatorSpec(subject RegistryOperatorSpec) 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.RegistryOperatorSpec + err := copied.AssignProperties_To_RegistryOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual RegistryOperatorSpec + err = actual.AssignProperties_From_RegistryOperatorSpec(&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_RegistryOperatorSpec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1263,6 +2105,48 @@ func RegistryOperatorSpecGenerator() gopter.Gen { return registryOperatorSpecGenerator } +func Test_Registry_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Registry_STATUS to Registry_STATUS via AssignProperties_To_Registry_STATUS & AssignProperties_From_Registry_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForRegistry_STATUS, Registry_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForRegistry_STATUS tests if a specific instance of Registry_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForRegistry_STATUS(subject Registry_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.Registry_STATUS + err := copied.AssignProperties_To_Registry_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Registry_STATUS + err = actual.AssignProperties_From_Registry_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_Registry_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1359,6 +2243,48 @@ func AddRelatedPropertyGeneratorsForRegistry_STATUS(gens map[string]gopter.Gen) gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) } +func Test_Registry_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Registry_Spec to Registry_Spec via AssignProperties_To_Registry_Spec & AssignProperties_From_Registry_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForRegistry_Spec, Registry_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForRegistry_Spec tests if a specific instance of Registry_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForRegistry_Spec(subject Registry_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.Registry_Spec + err := copied.AssignProperties_To_Registry_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Registry_Spec + err = actual.AssignProperties_From_Registry_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_Registry_Spec_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1438,14 +2364,56 @@ func AddIndependentPropertyGeneratorsForRegistry_Spec(gens map[string]gopter.Gen gens["ZoneRedundancy"] = gen.PtrOf(gen.AlphaString()) } -// AddRelatedPropertyGeneratorsForRegistry_Spec is a factory method for creating gopter generators -func AddRelatedPropertyGeneratorsForRegistry_Spec(gens map[string]gopter.Gen) { - gens["Encryption"] = gen.PtrOf(EncryptionPropertyGenerator()) - gens["Identity"] = gen.PtrOf(IdentityPropertiesGenerator()) - gens["NetworkRuleSet"] = gen.PtrOf(NetworkRuleSetGenerator()) - gens["OperatorSpec"] = gen.PtrOf(RegistryOperatorSpecGenerator()) - gens["Policies"] = gen.PtrOf(PoliciesGenerator()) - gens["Sku"] = gen.PtrOf(SkuGenerator()) +// AddRelatedPropertyGeneratorsForRegistry_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForRegistry_Spec(gens map[string]gopter.Gen) { + gens["Encryption"] = gen.PtrOf(EncryptionPropertyGenerator()) + gens["Identity"] = gen.PtrOf(IdentityPropertiesGenerator()) + gens["NetworkRuleSet"] = gen.PtrOf(NetworkRuleSetGenerator()) + gens["OperatorSpec"] = gen.PtrOf(RegistryOperatorSpecGenerator()) + gens["Policies"] = gen.PtrOf(PoliciesGenerator()) + gens["Sku"] = gen.PtrOf(SkuGenerator()) +} + +func Test_RetentionPolicy_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from RetentionPolicy to RetentionPolicy via AssignProperties_To_RetentionPolicy & AssignProperties_From_RetentionPolicy returns original", + prop.ForAll(RunPropertyAssignmentTestForRetentionPolicy, RetentionPolicyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForRetentionPolicy tests if a specific instance of RetentionPolicy can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForRetentionPolicy(subject RetentionPolicy) 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.RetentionPolicy + err := copied.AssignProperties_To_RetentionPolicy(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual RetentionPolicy + err = actual.AssignProperties_From_RetentionPolicy(&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_RetentionPolicy_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { @@ -1509,6 +2477,48 @@ func AddIndependentPropertyGeneratorsForRetentionPolicy(gens map[string]gopter.G gens["Status"] = gen.PtrOf(gen.AlphaString()) } +func Test_RetentionPolicy_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from RetentionPolicy_STATUS to RetentionPolicy_STATUS via AssignProperties_To_RetentionPolicy_STATUS & AssignProperties_From_RetentionPolicy_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForRetentionPolicy_STATUS, RetentionPolicy_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForRetentionPolicy_STATUS tests if a specific instance of RetentionPolicy_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForRetentionPolicy_STATUS(subject RetentionPolicy_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.RetentionPolicy_STATUS + err := copied.AssignProperties_To_RetentionPolicy_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual RetentionPolicy_STATUS + err = actual.AssignProperties_From_RetentionPolicy_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_RetentionPolicy_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1572,6 +2582,48 @@ func AddIndependentPropertyGeneratorsForRetentionPolicy_STATUS(gens map[string]g gens["Status"] = gen.PtrOf(gen.AlphaString()) } +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() @@ -1632,6 +2684,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() @@ -1693,6 +2787,48 @@ func AddIndependentPropertyGeneratorsForSku_STATUS(gens map[string]gopter.Gen) { gens["Tier"] = gen.PtrOf(gen.AlphaString()) } +func Test_Status_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Status_STATUS to Status_STATUS via AssignProperties_To_Status_STATUS & AssignProperties_From_Status_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForStatus_STATUS, Status_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForStatus_STATUS tests if a specific instance of Status_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForStatus_STATUS(subject Status_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.Status_STATUS + err := copied.AssignProperties_To_Status_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Status_STATUS + err = actual.AssignProperties_From_Status_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_Status_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1755,6 +2891,48 @@ func AddIndependentPropertyGeneratorsForStatus_STATUS(gens map[string]gopter.Gen gens["Timestamp"] = 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() @@ -1820,6 +2998,48 @@ func AddIndependentPropertyGeneratorsForSystemData_STATUS(gens map[string]gopter gens["LastModifiedByType"] = gen.PtrOf(gen.AlphaString()) } +func Test_TrustPolicy_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from TrustPolicy to TrustPolicy via AssignProperties_To_TrustPolicy & AssignProperties_From_TrustPolicy returns original", + prop.ForAll(RunPropertyAssignmentTestForTrustPolicy, TrustPolicyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForTrustPolicy tests if a specific instance of TrustPolicy can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForTrustPolicy(subject TrustPolicy) 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.TrustPolicy + err := copied.AssignProperties_To_TrustPolicy(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual TrustPolicy + err = actual.AssignProperties_From_TrustPolicy(&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_TrustPolicy_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1881,6 +3101,48 @@ func AddIndependentPropertyGeneratorsForTrustPolicy(gens map[string]gopter.Gen) gens["Type"] = gen.PtrOf(gen.AlphaString()) } +func Test_TrustPolicy_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from TrustPolicy_STATUS to TrustPolicy_STATUS via AssignProperties_To_TrustPolicy_STATUS & AssignProperties_From_TrustPolicy_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForTrustPolicy_STATUS, TrustPolicy_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForTrustPolicy_STATUS tests if a specific instance of TrustPolicy_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForTrustPolicy_STATUS(subject TrustPolicy_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.TrustPolicy_STATUS + err := copied.AssignProperties_To_TrustPolicy_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual TrustPolicy_STATUS + err = actual.AssignProperties_From_TrustPolicy_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_TrustPolicy_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1942,6 +3204,48 @@ func AddIndependentPropertyGeneratorsForTrustPolicy_STATUS(gens map[string]gopte gens["Type"] = 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() @@ -1997,6 +3301,48 @@ func UserAssignedIdentityDetailsGenerator() gopter.Gen { return userAssignedIdentityDetailsGenerator } +func Test_UserIdentityProperties_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from UserIdentityProperties_STATUS to UserIdentityProperties_STATUS via AssignProperties_To_UserIdentityProperties_STATUS & AssignProperties_From_UserIdentityProperties_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForUserIdentityProperties_STATUS, UserIdentityProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForUserIdentityProperties_STATUS tests if a specific instance of UserIdentityProperties_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForUserIdentityProperties_STATUS(subject UserIdentityProperties_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.UserIdentityProperties_STATUS + err := copied.AssignProperties_To_UserIdentityProperties_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual UserIdentityProperties_STATUS + err = actual.AssignProperties_From_UserIdentityProperties_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_UserIdentityProperties_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() diff --git a/v2/api/containerregistry/v1api20210901/storage/structure.txt b/v2/api/containerregistry/v1api20210901/storage/structure.txt index 2dfcad2fa05..bd094e22308 100644 --- a/v2/api/containerregistry/v1api20210901/storage/structure.txt +++ b/v2/api/containerregistry/v1api20210901/storage/structure.txt @@ -142,3 +142,34 @@ Registry: Resource ├── Tags: map[string]string ├── Type: *string └── ZoneRedundancy: *string +augmentConversionForEncryptionProperty: Interface +augmentConversionForEncryptionProperty_STATUS: Interface +augmentConversionForExportPolicy: Interface +augmentConversionForExportPolicy_STATUS: Interface +augmentConversionForIPRule: Interface +augmentConversionForIPRule_STATUS: Interface +augmentConversionForIdentityProperties: Interface +augmentConversionForIdentityProperties_STATUS: Interface +augmentConversionForKeyVaultProperties: Interface +augmentConversionForKeyVaultProperties_STATUS: Interface +augmentConversionForNetworkRuleSet: Interface +augmentConversionForNetworkRuleSet_STATUS: Interface +augmentConversionForPolicies: Interface +augmentConversionForPolicies_STATUS: Interface +augmentConversionForPrivateEndpointConnection_STATUS: Interface +augmentConversionForQuarantinePolicy: Interface +augmentConversionForQuarantinePolicy_STATUS: Interface +augmentConversionForRegistry: Interface +augmentConversionForRegistryOperatorSpec: Interface +augmentConversionForRegistry_STATUS: Interface +augmentConversionForRegistry_Spec: Interface +augmentConversionForRetentionPolicy: Interface +augmentConversionForRetentionPolicy_STATUS: Interface +augmentConversionForSku: Interface +augmentConversionForSku_STATUS: Interface +augmentConversionForStatus_STATUS: Interface +augmentConversionForSystemData_STATUS: Interface +augmentConversionForTrustPolicy: Interface +augmentConversionForTrustPolicy_STATUS: Interface +augmentConversionForUserAssignedIdentityDetails: Interface +augmentConversionForUserIdentityProperties_STATUS: Interface diff --git a/v2/api/containerregistry/v1api20230701/arm/registry_replication_spec_types_gen.go b/v2/api/containerregistry/v1api20230701/arm/registry_replication_spec_types_gen.go new file mode 100644 index 00000000000..2027d7d63c3 --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/arm/registry_replication_spec_types_gen.go @@ -0,0 +1,59 @@ +// 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 RegistryReplication_Spec struct { + // Location: The location of the resource. This cannot be changed after the resource is created. + Location *string `json:"location,omitempty"` + Name string `json:"name,omitempty"` + + // Properties: The properties of the replication. + Properties *ReplicationProperties `json:"properties,omitempty"` + + // Tags: The tags of the resource. + Tags map[string]string `json:"tags,omitempty"` +} + +var _ genruntime.ARMResourceSpec = &RegistryReplication_Spec{} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2023-07-01" +func (replication RegistryReplication_Spec) GetAPIVersion() string { + return "2023-07-01" +} + +// GetName returns the Name of the resource +func (replication *RegistryReplication_Spec) GetName() string { + return replication.Name +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.ContainerRegistry/registries/replications" +func (replication *RegistryReplication_Spec) GetType() string { + return "Microsoft.ContainerRegistry/registries/replications" +} + +// The properties of a replication. +type ReplicationProperties struct { + // RegionEndpointEnabled: Specifies whether the replication's regional endpoint is enabled. Requests will not be routed to + // a replication whose regional endpoint is disabled, however its data will continue to be synced with other replications. + RegionEndpointEnabled *bool `json:"regionEndpointEnabled,omitempty"` + + // ZoneRedundancy: Whether or not zone redundancy is enabled for this container registry replication + ZoneRedundancy *ReplicationProperties_ZoneRedundancy `json:"zoneRedundancy,omitempty"` +} + +// +kubebuilder:validation:Enum={"Disabled","Enabled"} +type ReplicationProperties_ZoneRedundancy string + +const ( + ReplicationProperties_ZoneRedundancy_Disabled = ReplicationProperties_ZoneRedundancy("Disabled") + ReplicationProperties_ZoneRedundancy_Enabled = ReplicationProperties_ZoneRedundancy("Enabled") +) + +// Mapping from string to ReplicationProperties_ZoneRedundancy +var replicationProperties_ZoneRedundancy_Values = map[string]ReplicationProperties_ZoneRedundancy{ + "disabled": ReplicationProperties_ZoneRedundancy_Disabled, + "enabled": ReplicationProperties_ZoneRedundancy_Enabled, +} diff --git a/v2/api/containerregistry/v1api20230701/arm/registry_replication_spec_types_gen_test.go b/v2/api/containerregistry/v1api20230701/arm/registry_replication_spec_types_gen_test.go new file mode 100644 index 00000000000..bf16287e3d4 --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/arm/registry_replication_spec_types_gen_test.go @@ -0,0 +1,159 @@ +// 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_RegistryReplication_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 RegistryReplication_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRegistryReplication_Spec, RegistryReplication_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRegistryReplication_Spec runs a test to see if a specific instance of RegistryReplication_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForRegistryReplication_Spec(subject RegistryReplication_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual RegistryReplication_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 RegistryReplication_Spec instances for property testing - lazily instantiated by +// RegistryReplication_SpecGenerator() +var registryReplication_SpecGenerator gopter.Gen + +// RegistryReplication_SpecGenerator returns a generator of RegistryReplication_Spec instances for property testing. +// We first initialize registryReplication_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 RegistryReplication_SpecGenerator() gopter.Gen { + if registryReplication_SpecGenerator != nil { + return registryReplication_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistryReplication_Spec(generators) + registryReplication_SpecGenerator = gen.Struct(reflect.TypeOf(RegistryReplication_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistryReplication_Spec(generators) + AddRelatedPropertyGeneratorsForRegistryReplication_Spec(generators) + registryReplication_SpecGenerator = gen.Struct(reflect.TypeOf(RegistryReplication_Spec{}), generators) + + return registryReplication_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForRegistryReplication_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForRegistryReplication_Spec(gens map[string]gopter.Gen) { + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.AlphaString() + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForRegistryReplication_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForRegistryReplication_Spec(gens map[string]gopter.Gen) { + gens["Properties"] = gen.PtrOf(ReplicationPropertiesGenerator()) +} + +func Test_ReplicationProperties_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 ReplicationProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplicationProperties, ReplicationPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplicationProperties runs a test to see if a specific instance of ReplicationProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForReplicationProperties(subject ReplicationProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ReplicationProperties + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ReplicationProperties instances for property testing - lazily instantiated by +// ReplicationPropertiesGenerator() +var replicationPropertiesGenerator gopter.Gen + +// ReplicationPropertiesGenerator returns a generator of ReplicationProperties instances for property testing. +func ReplicationPropertiesGenerator() gopter.Gen { + if replicationPropertiesGenerator != nil { + return replicationPropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplicationProperties(generators) + replicationPropertiesGenerator = gen.Struct(reflect.TypeOf(ReplicationProperties{}), generators) + + return replicationPropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForReplicationProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForReplicationProperties(gens map[string]gopter.Gen) { + gens["RegionEndpointEnabled"] = gen.PtrOf(gen.Bool()) + gens["ZoneRedundancy"] = gen.PtrOf(gen.OneConstOf(ReplicationProperties_ZoneRedundancy_Disabled, ReplicationProperties_ZoneRedundancy_Enabled)) +} diff --git a/v2/api/containerregistry/v1api20230701/arm/registry_replication_status_types_gen.go b/v2/api/containerregistry/v1api20230701/arm/registry_replication_status_types_gen.go new file mode 100644 index 00000000000..d88499b279e --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/arm/registry_replication_status_types_gen.go @@ -0,0 +1,144 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +type RegistryReplication_STATUS struct { + // Id: The resource ID. + Id *string `json:"id,omitempty"` + + // Location: The location of the resource. This cannot be changed after the resource is created. + Location *string `json:"location,omitempty"` + + // Name: The name of the resource. + Name *string `json:"name,omitempty"` + + // Properties: The properties of the replication. + Properties *ReplicationProperties_STATUS `json:"properties,omitempty"` + + // SystemData: Metadata pertaining to creation and last modification of the resource. + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + + // Tags: The tags of the resource. + Tags map[string]string `json:"tags,omitempty"` + + // Type: The type of the resource. + Type *string `json:"type,omitempty"` +} + +// The properties of a replication. +type ReplicationProperties_STATUS struct { + // ProvisioningState: The provisioning state of the replication at the time the operation was called. + ProvisioningState *ReplicationProperties_ProvisioningState_STATUS `json:"provisioningState,omitempty"` + + // RegionEndpointEnabled: Specifies whether the replication's regional endpoint is enabled. Requests will not be routed to + // a replication whose regional endpoint is disabled, however its data will continue to be synced with other replications. + RegionEndpointEnabled *bool `json:"regionEndpointEnabled,omitempty"` + + // Status: The status of the replication at the time the operation was called. + Status *Status_STATUS `json:"status,omitempty"` + + // ZoneRedundancy: Whether or not zone redundancy is enabled for this container registry replication + ZoneRedundancy *ReplicationProperties_ZoneRedundancy_STATUS `json:"zoneRedundancy,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 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 ReplicationProperties_ProvisioningState_STATUS string + +const ( + ReplicationProperties_ProvisioningState_STATUS_Canceled = ReplicationProperties_ProvisioningState_STATUS("Canceled") + ReplicationProperties_ProvisioningState_STATUS_Creating = ReplicationProperties_ProvisioningState_STATUS("Creating") + ReplicationProperties_ProvisioningState_STATUS_Deleting = ReplicationProperties_ProvisioningState_STATUS("Deleting") + ReplicationProperties_ProvisioningState_STATUS_Failed = ReplicationProperties_ProvisioningState_STATUS("Failed") + ReplicationProperties_ProvisioningState_STATUS_Succeeded = ReplicationProperties_ProvisioningState_STATUS("Succeeded") + ReplicationProperties_ProvisioningState_STATUS_Updating = ReplicationProperties_ProvisioningState_STATUS("Updating") +) + +// Mapping from string to ReplicationProperties_ProvisioningState_STATUS +var replicationProperties_ProvisioningState_STATUS_Values = map[string]ReplicationProperties_ProvisioningState_STATUS{ + "canceled": ReplicationProperties_ProvisioningState_STATUS_Canceled, + "creating": ReplicationProperties_ProvisioningState_STATUS_Creating, + "deleting": ReplicationProperties_ProvisioningState_STATUS_Deleting, + "failed": ReplicationProperties_ProvisioningState_STATUS_Failed, + "succeeded": ReplicationProperties_ProvisioningState_STATUS_Succeeded, + "updating": ReplicationProperties_ProvisioningState_STATUS_Updating, +} + +type ReplicationProperties_ZoneRedundancy_STATUS string + +const ( + ReplicationProperties_ZoneRedundancy_STATUS_Disabled = ReplicationProperties_ZoneRedundancy_STATUS("Disabled") + ReplicationProperties_ZoneRedundancy_STATUS_Enabled = ReplicationProperties_ZoneRedundancy_STATUS("Enabled") +) + +// Mapping from string to ReplicationProperties_ZoneRedundancy_STATUS +var replicationProperties_ZoneRedundancy_STATUS_Values = map[string]ReplicationProperties_ZoneRedundancy_STATUS{ + "disabled": ReplicationProperties_ZoneRedundancy_STATUS_Disabled, + "enabled": ReplicationProperties_ZoneRedundancy_STATUS_Enabled, +} + +// The status of an Azure resource at the time the operation was called. +type Status_STATUS struct { + // DisplayStatus: The short label for the status. + DisplayStatus *string `json:"displayStatus,omitempty"` + + // Message: The detailed message for the status, including alerts and error messages. + Message *string `json:"message,omitempty"` + + // Timestamp: The timestamp when the status was changed to the current value. + Timestamp *string `json:"timestamp,omitempty"` +} + +type SystemData_CreatedByType_STATUS string + +const ( + SystemData_CreatedByType_STATUS_Application = SystemData_CreatedByType_STATUS("Application") + SystemData_CreatedByType_STATUS_Key = SystemData_CreatedByType_STATUS("Key") + SystemData_CreatedByType_STATUS_ManagedIdentity = SystemData_CreatedByType_STATUS("ManagedIdentity") + SystemData_CreatedByType_STATUS_User = SystemData_CreatedByType_STATUS("User") +) + +// Mapping from string to SystemData_CreatedByType_STATUS +var systemData_CreatedByType_STATUS_Values = map[string]SystemData_CreatedByType_STATUS{ + "application": SystemData_CreatedByType_STATUS_Application, + "key": SystemData_CreatedByType_STATUS_Key, + "managedidentity": SystemData_CreatedByType_STATUS_ManagedIdentity, + "user": SystemData_CreatedByType_STATUS_User, +} + +type SystemData_LastModifiedByType_STATUS string + +const ( + SystemData_LastModifiedByType_STATUS_Application = SystemData_LastModifiedByType_STATUS("Application") + SystemData_LastModifiedByType_STATUS_Key = SystemData_LastModifiedByType_STATUS("Key") + SystemData_LastModifiedByType_STATUS_ManagedIdentity = SystemData_LastModifiedByType_STATUS("ManagedIdentity") + SystemData_LastModifiedByType_STATUS_User = SystemData_LastModifiedByType_STATUS("User") +) + +// Mapping from string to SystemData_LastModifiedByType_STATUS +var systemData_LastModifiedByType_STATUS_Values = map[string]SystemData_LastModifiedByType_STATUS{ + "application": SystemData_LastModifiedByType_STATUS_Application, + "key": SystemData_LastModifiedByType_STATUS_Key, + "managedidentity": SystemData_LastModifiedByType_STATUS_ManagedIdentity, + "user": SystemData_LastModifiedByType_STATUS_User, +} diff --git a/v2/api/containerregistry/v1api20230701/arm/registry_replication_status_types_gen_test.go b/v2/api/containerregistry/v1api20230701/arm/registry_replication_status_types_gen_test.go new file mode 100644 index 00000000000..abacb90b865 --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/arm/registry_replication_status_types_gen_test.go @@ -0,0 +1,318 @@ +// 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_RegistryReplication_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 RegistryReplication_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRegistryReplication_STATUS, RegistryReplication_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRegistryReplication_STATUS runs a test to see if a specific instance of RegistryReplication_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForRegistryReplication_STATUS(subject RegistryReplication_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual RegistryReplication_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 RegistryReplication_STATUS instances for property testing - lazily instantiated by +// RegistryReplication_STATUSGenerator() +var registryReplication_STATUSGenerator gopter.Gen + +// RegistryReplication_STATUSGenerator returns a generator of RegistryReplication_STATUS instances for property testing. +// We first initialize registryReplication_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 RegistryReplication_STATUSGenerator() gopter.Gen { + if registryReplication_STATUSGenerator != nil { + return registryReplication_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistryReplication_STATUS(generators) + registryReplication_STATUSGenerator = gen.Struct(reflect.TypeOf(RegistryReplication_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistryReplication_STATUS(generators) + AddRelatedPropertyGeneratorsForRegistryReplication_STATUS(generators) + registryReplication_STATUSGenerator = gen.Struct(reflect.TypeOf(RegistryReplication_STATUS{}), generators) + + return registryReplication_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForRegistryReplication_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForRegistryReplication_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()) +} + +// AddRelatedPropertyGeneratorsForRegistryReplication_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForRegistryReplication_STATUS(gens map[string]gopter.Gen) { + gens["Properties"] = gen.PtrOf(ReplicationProperties_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_ReplicationProperties_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 ReplicationProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForReplicationProperties_STATUS, ReplicationProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForReplicationProperties_STATUS runs a test to see if a specific instance of ReplicationProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForReplicationProperties_STATUS(subject ReplicationProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ReplicationProperties_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 ReplicationProperties_STATUS instances for property testing - lazily instantiated by +// ReplicationProperties_STATUSGenerator() +var replicationProperties_STATUSGenerator gopter.Gen + +// ReplicationProperties_STATUSGenerator returns a generator of ReplicationProperties_STATUS instances for property testing. +// We first initialize replicationProperties_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 ReplicationProperties_STATUSGenerator() gopter.Gen { + if replicationProperties_STATUSGenerator != nil { + return replicationProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplicationProperties_STATUS(generators) + replicationProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(ReplicationProperties_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForReplicationProperties_STATUS(generators) + AddRelatedPropertyGeneratorsForReplicationProperties_STATUS(generators) + replicationProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(ReplicationProperties_STATUS{}), generators) + + return replicationProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForReplicationProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForReplicationProperties_STATUS(gens map[string]gopter.Gen) { + gens["ProvisioningState"] = gen.PtrOf(gen.OneConstOf( + ReplicationProperties_ProvisioningState_STATUS_Canceled, + ReplicationProperties_ProvisioningState_STATUS_Creating, + ReplicationProperties_ProvisioningState_STATUS_Deleting, + ReplicationProperties_ProvisioningState_STATUS_Failed, + ReplicationProperties_ProvisioningState_STATUS_Succeeded, + ReplicationProperties_ProvisioningState_STATUS_Updating)) + gens["RegionEndpointEnabled"] = gen.PtrOf(gen.Bool()) + gens["ZoneRedundancy"] = gen.PtrOf(gen.OneConstOf(ReplicationProperties_ZoneRedundancy_STATUS_Disabled, ReplicationProperties_ZoneRedundancy_STATUS_Enabled)) +} + +// AddRelatedPropertyGeneratorsForReplicationProperties_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForReplicationProperties_STATUS(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(Status_STATUSGenerator()) +} + +func Test_Status_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 Status_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForStatus_STATUS, Status_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForStatus_STATUS runs a test to see if a specific instance of Status_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForStatus_STATUS(subject Status_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Status_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 Status_STATUS instances for property testing - lazily instantiated by Status_STATUSGenerator() +var status_STATUSGenerator gopter.Gen + +// Status_STATUSGenerator returns a generator of Status_STATUS instances for property testing. +func Status_STATUSGenerator() gopter.Gen { + if status_STATUSGenerator != nil { + return status_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForStatus_STATUS(generators) + status_STATUSGenerator = gen.Struct(reflect.TypeOf(Status_STATUS{}), generators) + + return status_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForStatus_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForStatus_STATUS(gens map[string]gopter.Gen) { + gens["DisplayStatus"] = gen.PtrOf(gen.AlphaString()) + gens["Message"] = gen.PtrOf(gen.AlphaString()) + gens["Timestamp"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_SystemData_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of SystemData_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSystemData_STATUS, SystemData_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSystemData_STATUS runs a test to see if a specific instance of SystemData_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForSystemData_STATUS(subject SystemData_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SystemData_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SystemData_STATUS instances for property testing - lazily instantiated by SystemData_STATUSGenerator() +var systemData_STATUSGenerator gopter.Gen + +// SystemData_STATUSGenerator returns a generator of SystemData_STATUS instances for property testing. +func SystemData_STATUSGenerator() gopter.Gen { + if systemData_STATUSGenerator != nil { + return systemData_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForSystemData_STATUS(generators) + systemData_STATUSGenerator = gen.Struct(reflect.TypeOf(SystemData_STATUS{}), generators) + + return systemData_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForSystemData_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForSystemData_STATUS(gens map[string]gopter.Gen) { + gens["CreatedAt"] = gen.PtrOf(gen.AlphaString()) + gens["CreatedBy"] = gen.PtrOf(gen.AlphaString()) + gens["CreatedByType"] = gen.PtrOf(gen.OneConstOf( + SystemData_CreatedByType_STATUS_Application, + SystemData_CreatedByType_STATUS_Key, + SystemData_CreatedByType_STATUS_ManagedIdentity, + SystemData_CreatedByType_STATUS_User)) + gens["LastModifiedAt"] = gen.PtrOf(gen.AlphaString()) + gens["LastModifiedBy"] = gen.PtrOf(gen.AlphaString()) + gens["LastModifiedByType"] = gen.PtrOf(gen.OneConstOf( + SystemData_LastModifiedByType_STATUS_Application, + SystemData_LastModifiedByType_STATUS_Key, + SystemData_LastModifiedByType_STATUS_ManagedIdentity, + SystemData_LastModifiedByType_STATUS_User)) +} diff --git a/v2/api/containerregistry/v1api20230701/arm/registry_spec_types_gen.go b/v2/api/containerregistry/v1api20230701/arm/registry_spec_types_gen.go new file mode 100644 index 00000000000..f84c1d89df1 --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/arm/registry_spec_types_gen.go @@ -0,0 +1,346 @@ +// 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 Registry_Spec struct { + // Identity: The identity of the container registry. + Identity *IdentityProperties `json:"identity,omitempty"` + + // Location: The location of the resource. This cannot be changed after the resource is created. + Location *string `json:"location,omitempty"` + Name string `json:"name,omitempty"` + + // Properties: The properties of the container registry. + Properties *RegistryProperties `json:"properties,omitempty"` + + // Sku: The SKU of the container registry. + Sku *Sku `json:"sku,omitempty"` + + // Tags: The tags of the resource. + Tags map[string]string `json:"tags,omitempty"` +} + +var _ genruntime.ARMResourceSpec = &Registry_Spec{} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2023-07-01" +func (registry Registry_Spec) GetAPIVersion() string { + return "2023-07-01" +} + +// GetName returns the Name of the resource +func (registry *Registry_Spec) GetName() string { + return registry.Name +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.ContainerRegistry/registries" +func (registry *Registry_Spec) GetType() string { + return "Microsoft.ContainerRegistry/registries" +} + +// Managed identity for the resource. +type IdentityProperties struct { + // Type: The identity type. + Type *IdentityProperties_Type `json:"type,omitempty"` + UserAssignedIdentities map[string]UserAssignedIdentityDetails `json:"userAssignedIdentities,omitempty"` +} + +// The properties of a container registry. +type RegistryProperties struct { + // AdminUserEnabled: The value that indicates whether the admin user is enabled. + AdminUserEnabled *bool `json:"adminUserEnabled,omitempty"` + + // DataEndpointEnabled: Enable a single data endpoint per region for serving data. + DataEndpointEnabled *bool `json:"dataEndpointEnabled,omitempty"` + + // Encryption: The encryption settings of container registry. + Encryption *EncryptionProperty `json:"encryption,omitempty"` + + // NetworkRuleBypassOptions: Whether to allow trusted Azure services to access a network restricted registry. + NetworkRuleBypassOptions *RegistryProperties_NetworkRuleBypassOptions `json:"networkRuleBypassOptions,omitempty"` + + // NetworkRuleSet: The network rule set for a container registry. + NetworkRuleSet *NetworkRuleSet `json:"networkRuleSet,omitempty"` + + // Policies: The policies for a container registry. + Policies *Policies `json:"policies,omitempty"` + + // PublicNetworkAccess: Whether or not public network access is allowed for the container registry. + PublicNetworkAccess *RegistryProperties_PublicNetworkAccess `json:"publicNetworkAccess,omitempty"` + + // ZoneRedundancy: Whether or not zone redundancy is enabled for this container registry + ZoneRedundancy *RegistryProperties_ZoneRedundancy `json:"zoneRedundancy,omitempty"` +} + +// The SKU of a container registry. +type Sku struct { + // Name: The SKU name of the container registry. Required for registry creation. + Name *Sku_Name `json:"name,omitempty"` +} + +type EncryptionProperty struct { + // KeyVaultProperties: Key vault properties. + KeyVaultProperties *KeyVaultProperties `json:"keyVaultProperties,omitempty"` + + // Status: Indicates whether or not the encryption is enabled for container registry. + Status *EncryptionProperty_Status `json:"status,omitempty"` +} + +// +kubebuilder:validation:Enum={"None","SystemAssigned","SystemAssigned, UserAssigned","UserAssigned"} +type IdentityProperties_Type string + +const ( + IdentityProperties_Type_None = IdentityProperties_Type("None") + IdentityProperties_Type_SystemAssigned = IdentityProperties_Type("SystemAssigned") + IdentityProperties_Type_SystemAssignedUserAssigned = IdentityProperties_Type("SystemAssigned, UserAssigned") + IdentityProperties_Type_UserAssigned = IdentityProperties_Type("UserAssigned") +) + +// Mapping from string to IdentityProperties_Type +var identityProperties_Type_Values = map[string]IdentityProperties_Type{ + "none": IdentityProperties_Type_None, + "systemassigned": IdentityProperties_Type_SystemAssigned, + "systemassigned, userassigned": IdentityProperties_Type_SystemAssignedUserAssigned, + "userassigned": IdentityProperties_Type_UserAssigned, +} + +// The network rule set for a container registry. +type NetworkRuleSet struct { + // DefaultAction: The default action of allow or deny when no other rules match. + DefaultAction *NetworkRuleSet_DefaultAction `json:"defaultAction,omitempty"` + + // IpRules: The IP ACL rules. + IpRules []IPRule `json:"ipRules,omitempty"` +} + +// The policies for a container registry. +type Policies struct { + // ExportPolicy: The export policy for a container registry. + ExportPolicy *ExportPolicy `json:"exportPolicy,omitempty"` + + // QuarantinePolicy: The quarantine policy for a container registry. + QuarantinePolicy *QuarantinePolicy `json:"quarantinePolicy,omitempty"` + + // RetentionPolicy: The retention policy for a container registry. + RetentionPolicy *RetentionPolicy `json:"retentionPolicy,omitempty"` + + // TrustPolicy: The content trust policy for a container registry. + TrustPolicy *TrustPolicy `json:"trustPolicy,omitempty"` +} + +// +kubebuilder:validation:Enum={"AzureServices","None"} +type RegistryProperties_NetworkRuleBypassOptions string + +const ( + RegistryProperties_NetworkRuleBypassOptions_AzureServices = RegistryProperties_NetworkRuleBypassOptions("AzureServices") + RegistryProperties_NetworkRuleBypassOptions_None = RegistryProperties_NetworkRuleBypassOptions("None") +) + +// Mapping from string to RegistryProperties_NetworkRuleBypassOptions +var registryProperties_NetworkRuleBypassOptions_Values = map[string]RegistryProperties_NetworkRuleBypassOptions{ + "azureservices": RegistryProperties_NetworkRuleBypassOptions_AzureServices, + "none": RegistryProperties_NetworkRuleBypassOptions_None, +} + +// +kubebuilder:validation:Enum={"Disabled","Enabled"} +type RegistryProperties_PublicNetworkAccess string + +const ( + RegistryProperties_PublicNetworkAccess_Disabled = RegistryProperties_PublicNetworkAccess("Disabled") + RegistryProperties_PublicNetworkAccess_Enabled = RegistryProperties_PublicNetworkAccess("Enabled") +) + +// Mapping from string to RegistryProperties_PublicNetworkAccess +var registryProperties_PublicNetworkAccess_Values = map[string]RegistryProperties_PublicNetworkAccess{ + "disabled": RegistryProperties_PublicNetworkAccess_Disabled, + "enabled": RegistryProperties_PublicNetworkAccess_Enabled, +} + +// +kubebuilder:validation:Enum={"Disabled","Enabled"} +type RegistryProperties_ZoneRedundancy string + +const ( + RegistryProperties_ZoneRedundancy_Disabled = RegistryProperties_ZoneRedundancy("Disabled") + RegistryProperties_ZoneRedundancy_Enabled = RegistryProperties_ZoneRedundancy("Enabled") +) + +// Mapping from string to RegistryProperties_ZoneRedundancy +var registryProperties_ZoneRedundancy_Values = map[string]RegistryProperties_ZoneRedundancy{ + "disabled": RegistryProperties_ZoneRedundancy_Disabled, + "enabled": RegistryProperties_ZoneRedundancy_Enabled, +} + +// +kubebuilder:validation:Enum={"Basic","Classic","Premium","Standard"} +type Sku_Name string + +const ( + Sku_Name_Basic = Sku_Name("Basic") + Sku_Name_Classic = Sku_Name("Classic") + Sku_Name_Premium = Sku_Name("Premium") + Sku_Name_Standard = Sku_Name("Standard") +) + +// Mapping from string to Sku_Name +var sku_Name_Values = map[string]Sku_Name{ + "basic": Sku_Name_Basic, + "classic": Sku_Name_Classic, + "premium": Sku_Name_Premium, + "standard": Sku_Name_Standard, +} + +// Information about the user assigned identity for the resource +type UserAssignedIdentityDetails struct { +} + +// +kubebuilder:validation:Enum={"disabled","enabled"} +type EncryptionProperty_Status string + +const ( + EncryptionProperty_Status_Disabled = EncryptionProperty_Status("disabled") + EncryptionProperty_Status_Enabled = EncryptionProperty_Status("enabled") +) + +// Mapping from string to EncryptionProperty_Status +var encryptionProperty_Status_Values = map[string]EncryptionProperty_Status{ + "disabled": EncryptionProperty_Status_Disabled, + "enabled": EncryptionProperty_Status_Enabled, +} + +// The export policy for a container registry. +type ExportPolicy struct { + // Status: The value that indicates whether the policy is enabled or not. + Status *ExportPolicy_Status `json:"status,omitempty"` +} + +// IP rule with specific IP or IP range in CIDR format. +type IPRule struct { + // Action: The action of IP ACL rule. + Action *IPRule_Action `json:"action,omitempty"` + + // Value: Specifies the IP or IP range in CIDR format. Only IPV4 address is allowed. + Value *string `json:"value,omitempty"` +} + +type KeyVaultProperties struct { + // Identity: The client id of the identity which will be used to access key vault. + Identity *string `json:"identity,omitempty" optionalConfigMapPair:"Identity"` + + // KeyIdentifier: Key vault uri to access the encryption key. + KeyIdentifier *string `json:"keyIdentifier,omitempty"` +} + +// +kubebuilder:validation:Enum={"Allow","Deny"} +type NetworkRuleSet_DefaultAction string + +const ( + NetworkRuleSet_DefaultAction_Allow = NetworkRuleSet_DefaultAction("Allow") + NetworkRuleSet_DefaultAction_Deny = NetworkRuleSet_DefaultAction("Deny") +) + +// Mapping from string to NetworkRuleSet_DefaultAction +var networkRuleSet_DefaultAction_Values = map[string]NetworkRuleSet_DefaultAction{ + "allow": NetworkRuleSet_DefaultAction_Allow, + "deny": NetworkRuleSet_DefaultAction_Deny, +} + +// The quarantine policy for a container registry. +type QuarantinePolicy struct { + // Status: The value that indicates whether the policy is enabled or not. + Status *QuarantinePolicy_Status `json:"status,omitempty"` +} + +// The retention policy for a container registry. +type RetentionPolicy struct { + // Days: The number of days to retain an untagged manifest after which it gets purged. + Days *int `json:"days,omitempty"` + + // Status: The value that indicates whether the policy is enabled or not. + Status *RetentionPolicy_Status `json:"status,omitempty"` +} + +// The content trust policy for a container registry. +type TrustPolicy struct { + // Status: The value that indicates whether the policy is enabled or not. + Status *TrustPolicy_Status `json:"status,omitempty"` + + // Type: The type of trust policy. + Type *TrustPolicy_Type `json:"type,omitempty"` +} + +// +kubebuilder:validation:Enum={"disabled","enabled"} +type ExportPolicy_Status string + +const ( + ExportPolicy_Status_Disabled = ExportPolicy_Status("disabled") + ExportPolicy_Status_Enabled = ExportPolicy_Status("enabled") +) + +// Mapping from string to ExportPolicy_Status +var exportPolicy_Status_Values = map[string]ExportPolicy_Status{ + "disabled": ExportPolicy_Status_Disabled, + "enabled": ExportPolicy_Status_Enabled, +} + +// +kubebuilder:validation:Enum={"Allow"} +type IPRule_Action string + +const IPRule_Action_Allow = IPRule_Action("Allow") + +// Mapping from string to IPRule_Action +var iPRule_Action_Values = map[string]IPRule_Action{ + "allow": IPRule_Action_Allow, +} + +// +kubebuilder:validation:Enum={"disabled","enabled"} +type QuarantinePolicy_Status string + +const ( + QuarantinePolicy_Status_Disabled = QuarantinePolicy_Status("disabled") + QuarantinePolicy_Status_Enabled = QuarantinePolicy_Status("enabled") +) + +// Mapping from string to QuarantinePolicy_Status +var quarantinePolicy_Status_Values = map[string]QuarantinePolicy_Status{ + "disabled": QuarantinePolicy_Status_Disabled, + "enabled": QuarantinePolicy_Status_Enabled, +} + +// +kubebuilder:validation:Enum={"disabled","enabled"} +type RetentionPolicy_Status string + +const ( + RetentionPolicy_Status_Disabled = RetentionPolicy_Status("disabled") + RetentionPolicy_Status_Enabled = RetentionPolicy_Status("enabled") +) + +// Mapping from string to RetentionPolicy_Status +var retentionPolicy_Status_Values = map[string]RetentionPolicy_Status{ + "disabled": RetentionPolicy_Status_Disabled, + "enabled": RetentionPolicy_Status_Enabled, +} + +// +kubebuilder:validation:Enum={"disabled","enabled"} +type TrustPolicy_Status string + +const ( + TrustPolicy_Status_Disabled = TrustPolicy_Status("disabled") + TrustPolicy_Status_Enabled = TrustPolicy_Status("enabled") +) + +// Mapping from string to TrustPolicy_Status +var trustPolicy_Status_Values = map[string]TrustPolicy_Status{ + "disabled": TrustPolicy_Status_Disabled, + "enabled": TrustPolicy_Status_Enabled, +} + +// +kubebuilder:validation:Enum={"Notary"} +type TrustPolicy_Type string + +const TrustPolicy_Type_Notary = TrustPolicy_Type("Notary") + +// Mapping from string to TrustPolicy_Type +var trustPolicy_Type_Values = map[string]TrustPolicy_Type{ + "notary": TrustPolicy_Type_Notary, +} diff --git a/v2/api/containerregistry/v1api20230701/arm/registry_spec_types_gen_test.go b/v2/api/containerregistry/v1api20230701/arm/registry_spec_types_gen_test.go new file mode 100644 index 00000000000..7bc1c2c7e5a --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/arm/registry_spec_types_gen_test.go @@ -0,0 +1,952 @@ +// 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_EncryptionProperty_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 EncryptionProperty via JSON returns original", + prop.ForAll(RunJSONSerializationTestForEncryptionProperty, EncryptionPropertyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForEncryptionProperty runs a test to see if a specific instance of EncryptionProperty round trips to JSON and back losslessly +func RunJSONSerializationTestForEncryptionProperty(subject EncryptionProperty) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual EncryptionProperty + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of EncryptionProperty instances for property testing - lazily instantiated by EncryptionPropertyGenerator() +var encryptionPropertyGenerator gopter.Gen + +// EncryptionPropertyGenerator returns a generator of EncryptionProperty instances for property testing. +// We first initialize encryptionPropertyGenerator 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 EncryptionPropertyGenerator() gopter.Gen { + if encryptionPropertyGenerator != nil { + return encryptionPropertyGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForEncryptionProperty(generators) + encryptionPropertyGenerator = gen.Struct(reflect.TypeOf(EncryptionProperty{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForEncryptionProperty(generators) + AddRelatedPropertyGeneratorsForEncryptionProperty(generators) + encryptionPropertyGenerator = gen.Struct(reflect.TypeOf(EncryptionProperty{}), generators) + + return encryptionPropertyGenerator +} + +// AddIndependentPropertyGeneratorsForEncryptionProperty is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForEncryptionProperty(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.OneConstOf(EncryptionProperty_Status_Disabled, EncryptionProperty_Status_Enabled)) +} + +// AddRelatedPropertyGeneratorsForEncryptionProperty is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForEncryptionProperty(gens map[string]gopter.Gen) { + gens["KeyVaultProperties"] = gen.PtrOf(KeyVaultPropertiesGenerator()) +} + +func Test_ExportPolicy_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 ExportPolicy via JSON returns original", + prop.ForAll(RunJSONSerializationTestForExportPolicy, ExportPolicyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForExportPolicy runs a test to see if a specific instance of ExportPolicy round trips to JSON and back losslessly +func RunJSONSerializationTestForExportPolicy(subject ExportPolicy) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ExportPolicy + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ExportPolicy instances for property testing - lazily instantiated by ExportPolicyGenerator() +var exportPolicyGenerator gopter.Gen + +// ExportPolicyGenerator returns a generator of ExportPolicy instances for property testing. +func ExportPolicyGenerator() gopter.Gen { + if exportPolicyGenerator != nil { + return exportPolicyGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForExportPolicy(generators) + exportPolicyGenerator = gen.Struct(reflect.TypeOf(ExportPolicy{}), generators) + + return exportPolicyGenerator +} + +// AddIndependentPropertyGeneratorsForExportPolicy is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForExportPolicy(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.OneConstOf(ExportPolicy_Status_Disabled, ExportPolicy_Status_Enabled)) +} + +func Test_IPRule_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of IPRule via JSON returns original", + prop.ForAll(RunJSONSerializationTestForIPRule, IPRuleGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForIPRule runs a test to see if a specific instance of IPRule round trips to JSON and back losslessly +func RunJSONSerializationTestForIPRule(subject IPRule) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual IPRule + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of IPRule instances for property testing - lazily instantiated by IPRuleGenerator() +var ipRuleGenerator gopter.Gen + +// IPRuleGenerator returns a generator of IPRule instances for property testing. +func IPRuleGenerator() gopter.Gen { + if ipRuleGenerator != nil { + return ipRuleGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIPRule(generators) + ipRuleGenerator = gen.Struct(reflect.TypeOf(IPRule{}), generators) + + return ipRuleGenerator +} + +// AddIndependentPropertyGeneratorsForIPRule is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForIPRule(gens map[string]gopter.Gen) { + gens["Action"] = gen.PtrOf(gen.OneConstOf(IPRule_Action_Allow)) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_IdentityProperties_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 IdentityProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForIdentityProperties, IdentityPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForIdentityProperties runs a test to see if a specific instance of IdentityProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForIdentityProperties(subject IdentityProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual IdentityProperties + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of IdentityProperties instances for property testing - lazily instantiated by IdentityPropertiesGenerator() +var identityPropertiesGenerator gopter.Gen + +// IdentityPropertiesGenerator returns a generator of IdentityProperties instances for property testing. +// We first initialize identityPropertiesGenerator 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 IdentityPropertiesGenerator() gopter.Gen { + if identityPropertiesGenerator != nil { + return identityPropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIdentityProperties(generators) + identityPropertiesGenerator = gen.Struct(reflect.TypeOf(IdentityProperties{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIdentityProperties(generators) + AddRelatedPropertyGeneratorsForIdentityProperties(generators) + identityPropertiesGenerator = gen.Struct(reflect.TypeOf(IdentityProperties{}), generators) + + return identityPropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForIdentityProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForIdentityProperties(gens map[string]gopter.Gen) { + gens["Type"] = gen.PtrOf(gen.OneConstOf( + IdentityProperties_Type_None, + IdentityProperties_Type_SystemAssigned, + IdentityProperties_Type_SystemAssignedUserAssigned, + IdentityProperties_Type_UserAssigned)) +} + +// AddRelatedPropertyGeneratorsForIdentityProperties is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForIdentityProperties(gens map[string]gopter.Gen) { + gens["UserAssignedIdentities"] = gen.MapOf( + gen.AlphaString(), + UserAssignedIdentityDetailsGenerator()) +} + +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["Identity"] = gen.PtrOf(gen.AlphaString()) + gens["KeyIdentifier"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_NetworkRuleSet_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 NetworkRuleSet via JSON returns original", + prop.ForAll(RunJSONSerializationTestForNetworkRuleSet, NetworkRuleSetGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForNetworkRuleSet runs a test to see if a specific instance of NetworkRuleSet round trips to JSON and back losslessly +func RunJSONSerializationTestForNetworkRuleSet(subject NetworkRuleSet) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual NetworkRuleSet + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of NetworkRuleSet instances for property testing - lazily instantiated by NetworkRuleSetGenerator() +var networkRuleSetGenerator gopter.Gen + +// NetworkRuleSetGenerator returns a generator of NetworkRuleSet instances for property testing. +// We first initialize networkRuleSetGenerator 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 NetworkRuleSetGenerator() gopter.Gen { + if networkRuleSetGenerator != nil { + return networkRuleSetGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetworkRuleSet(generators) + networkRuleSetGenerator = gen.Struct(reflect.TypeOf(NetworkRuleSet{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetworkRuleSet(generators) + AddRelatedPropertyGeneratorsForNetworkRuleSet(generators) + networkRuleSetGenerator = gen.Struct(reflect.TypeOf(NetworkRuleSet{}), generators) + + return networkRuleSetGenerator +} + +// AddIndependentPropertyGeneratorsForNetworkRuleSet is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForNetworkRuleSet(gens map[string]gopter.Gen) { + gens["DefaultAction"] = gen.PtrOf(gen.OneConstOf(NetworkRuleSet_DefaultAction_Allow, NetworkRuleSet_DefaultAction_Deny)) +} + +// AddRelatedPropertyGeneratorsForNetworkRuleSet is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForNetworkRuleSet(gens map[string]gopter.Gen) { + gens["IpRules"] = gen.SliceOf(IPRuleGenerator()) +} + +func Test_Policies_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 Policies via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPolicies, PoliciesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPolicies runs a test to see if a specific instance of Policies round trips to JSON and back losslessly +func RunJSONSerializationTestForPolicies(subject Policies) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Policies + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Policies instances for property testing - lazily instantiated by PoliciesGenerator() +var policiesGenerator gopter.Gen + +// PoliciesGenerator returns a generator of Policies instances for property testing. +func PoliciesGenerator() gopter.Gen { + if policiesGenerator != nil { + return policiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForPolicies(generators) + policiesGenerator = gen.Struct(reflect.TypeOf(Policies{}), generators) + + return policiesGenerator +} + +// AddRelatedPropertyGeneratorsForPolicies is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForPolicies(gens map[string]gopter.Gen) { + gens["ExportPolicy"] = gen.PtrOf(ExportPolicyGenerator()) + gens["QuarantinePolicy"] = gen.PtrOf(QuarantinePolicyGenerator()) + gens["RetentionPolicy"] = gen.PtrOf(RetentionPolicyGenerator()) + gens["TrustPolicy"] = gen.PtrOf(TrustPolicyGenerator()) +} + +func Test_QuarantinePolicy_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 QuarantinePolicy via JSON returns original", + prop.ForAll(RunJSONSerializationTestForQuarantinePolicy, QuarantinePolicyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForQuarantinePolicy runs a test to see if a specific instance of QuarantinePolicy round trips to JSON and back losslessly +func RunJSONSerializationTestForQuarantinePolicy(subject QuarantinePolicy) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual QuarantinePolicy + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of QuarantinePolicy instances for property testing - lazily instantiated by QuarantinePolicyGenerator() +var quarantinePolicyGenerator gopter.Gen + +// QuarantinePolicyGenerator returns a generator of QuarantinePolicy instances for property testing. +func QuarantinePolicyGenerator() gopter.Gen { + if quarantinePolicyGenerator != nil { + return quarantinePolicyGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForQuarantinePolicy(generators) + quarantinePolicyGenerator = gen.Struct(reflect.TypeOf(QuarantinePolicy{}), generators) + + return quarantinePolicyGenerator +} + +// AddIndependentPropertyGeneratorsForQuarantinePolicy is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForQuarantinePolicy(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.OneConstOf(QuarantinePolicy_Status_Disabled, QuarantinePolicy_Status_Enabled)) +} + +func Test_RegistryProperties_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 RegistryProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRegistryProperties, RegistryPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRegistryProperties runs a test to see if a specific instance of RegistryProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForRegistryProperties(subject RegistryProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual RegistryProperties + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of RegistryProperties instances for property testing - lazily instantiated by RegistryPropertiesGenerator() +var registryPropertiesGenerator gopter.Gen + +// RegistryPropertiesGenerator returns a generator of RegistryProperties instances for property testing. +// We first initialize registryPropertiesGenerator 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 RegistryPropertiesGenerator() gopter.Gen { + if registryPropertiesGenerator != nil { + return registryPropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistryProperties(generators) + registryPropertiesGenerator = gen.Struct(reflect.TypeOf(RegistryProperties{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistryProperties(generators) + AddRelatedPropertyGeneratorsForRegistryProperties(generators) + registryPropertiesGenerator = gen.Struct(reflect.TypeOf(RegistryProperties{}), generators) + + return registryPropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForRegistryProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForRegistryProperties(gens map[string]gopter.Gen) { + gens["AdminUserEnabled"] = gen.PtrOf(gen.Bool()) + gens["DataEndpointEnabled"] = gen.PtrOf(gen.Bool()) + gens["NetworkRuleBypassOptions"] = gen.PtrOf(gen.OneConstOf(RegistryProperties_NetworkRuleBypassOptions_AzureServices, RegistryProperties_NetworkRuleBypassOptions_None)) + gens["PublicNetworkAccess"] = gen.PtrOf(gen.OneConstOf(RegistryProperties_PublicNetworkAccess_Disabled, RegistryProperties_PublicNetworkAccess_Enabled)) + gens["ZoneRedundancy"] = gen.PtrOf(gen.OneConstOf(RegistryProperties_ZoneRedundancy_Disabled, RegistryProperties_ZoneRedundancy_Enabled)) +} + +// AddRelatedPropertyGeneratorsForRegistryProperties is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForRegistryProperties(gens map[string]gopter.Gen) { + gens["Encryption"] = gen.PtrOf(EncryptionPropertyGenerator()) + gens["NetworkRuleSet"] = gen.PtrOf(NetworkRuleSetGenerator()) + gens["Policies"] = gen.PtrOf(PoliciesGenerator()) +} + +func Test_Registry_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 Registry_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRegistry_Spec, Registry_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRegistry_Spec runs a test to see if a specific instance of Registry_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForRegistry_Spec(subject Registry_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Registry_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 Registry_Spec instances for property testing - lazily instantiated by Registry_SpecGenerator() +var registry_SpecGenerator gopter.Gen + +// Registry_SpecGenerator returns a generator of Registry_Spec instances for property testing. +// We first initialize registry_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 Registry_SpecGenerator() gopter.Gen { + if registry_SpecGenerator != nil { + return registry_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistry_Spec(generators) + registry_SpecGenerator = gen.Struct(reflect.TypeOf(Registry_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistry_Spec(generators) + AddRelatedPropertyGeneratorsForRegistry_Spec(generators) + registry_SpecGenerator = gen.Struct(reflect.TypeOf(Registry_Spec{}), generators) + + return registry_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForRegistry_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForRegistry_Spec(gens map[string]gopter.Gen) { + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.AlphaString() + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForRegistry_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForRegistry_Spec(gens map[string]gopter.Gen) { + gens["Identity"] = gen.PtrOf(IdentityPropertiesGenerator()) + gens["Properties"] = gen.PtrOf(RegistryPropertiesGenerator()) + gens["Sku"] = gen.PtrOf(SkuGenerator()) +} + +func Test_RetentionPolicy_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 RetentionPolicy via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRetentionPolicy, RetentionPolicyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRetentionPolicy runs a test to see if a specific instance of RetentionPolicy round trips to JSON and back losslessly +func RunJSONSerializationTestForRetentionPolicy(subject RetentionPolicy) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual RetentionPolicy + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of RetentionPolicy instances for property testing - lazily instantiated by RetentionPolicyGenerator() +var retentionPolicyGenerator gopter.Gen + +// RetentionPolicyGenerator returns a generator of RetentionPolicy instances for property testing. +func RetentionPolicyGenerator() gopter.Gen { + if retentionPolicyGenerator != nil { + return retentionPolicyGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRetentionPolicy(generators) + retentionPolicyGenerator = gen.Struct(reflect.TypeOf(RetentionPolicy{}), generators) + + return retentionPolicyGenerator +} + +// AddIndependentPropertyGeneratorsForRetentionPolicy is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForRetentionPolicy(gens map[string]gopter.Gen) { + gens["Days"] = gen.PtrOf(gen.Int()) + gens["Status"] = gen.PtrOf(gen.OneConstOf(RetentionPolicy_Status_Disabled, RetentionPolicy_Status_Enabled)) +} + +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.OneConstOf( + Sku_Name_Basic, + Sku_Name_Classic, + Sku_Name_Premium, + Sku_Name_Standard)) +} + +func Test_TrustPolicy_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 TrustPolicy via JSON returns original", + prop.ForAll(RunJSONSerializationTestForTrustPolicy, TrustPolicyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForTrustPolicy runs a test to see if a specific instance of TrustPolicy round trips to JSON and back losslessly +func RunJSONSerializationTestForTrustPolicy(subject TrustPolicy) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual TrustPolicy + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of TrustPolicy instances for property testing - lazily instantiated by TrustPolicyGenerator() +var trustPolicyGenerator gopter.Gen + +// TrustPolicyGenerator returns a generator of TrustPolicy instances for property testing. +func TrustPolicyGenerator() gopter.Gen { + if trustPolicyGenerator != nil { + return trustPolicyGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForTrustPolicy(generators) + trustPolicyGenerator = gen.Struct(reflect.TypeOf(TrustPolicy{}), generators) + + return trustPolicyGenerator +} + +// AddIndependentPropertyGeneratorsForTrustPolicy is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForTrustPolicy(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.OneConstOf(TrustPolicy_Status_Disabled, TrustPolicy_Status_Enabled)) + gens["Type"] = gen.PtrOf(gen.OneConstOf(TrustPolicy_Type_Notary)) +} + +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/containerregistry/v1api20230701/arm/registry_status_types_gen.go b/v2/api/containerregistry/v1api20230701/arm/registry_status_types_gen.go new file mode 100644 index 00000000000..84a98d6fd52 --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/arm/registry_status_types_gen.go @@ -0,0 +1,419 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package arm + +// An object that represents a container registry. +type Registry_STATUS struct { + // Id: The resource ID. + Id *string `json:"id,omitempty"` + + // Identity: The identity of the container registry. + Identity *IdentityProperties_STATUS `json:"identity,omitempty"` + + // Location: The location of the resource. This cannot be changed after the resource is created. + Location *string `json:"location,omitempty"` + + // Name: The name of the resource. + Name *string `json:"name,omitempty"` + + // Properties: The properties of the container registry. + Properties *RegistryProperties_STATUS `json:"properties,omitempty"` + + // Sku: The SKU of the container registry. + Sku *Sku_STATUS `json:"sku,omitempty"` + + // SystemData: Metadata pertaining to creation and last modification of the resource. + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + + // Tags: The tags of the resource. + Tags map[string]string `json:"tags,omitempty"` + + // Type: The type of the resource. + Type *string `json:"type,omitempty"` +} + +// Managed identity for the resource. +type IdentityProperties_STATUS struct { + // PrincipalId: The principal ID of resource identity. + PrincipalId *string `json:"principalId,omitempty"` + + // TenantId: The tenant ID of resource. + TenantId *string `json:"tenantId,omitempty"` + + // Type: The identity type. + Type *IdentityProperties_Type_STATUS `json:"type,omitempty"` + + // UserAssignedIdentities: The list of user identities associated with the resource. The user identity + // dictionary key references will be ARM resource ids in the form: + // '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/ + // providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. + UserAssignedIdentities map[string]UserIdentityProperties_STATUS `json:"userAssignedIdentities,omitempty"` +} + +// The properties of a container registry. +type RegistryProperties_STATUS struct { + // AdminUserEnabled: The value that indicates whether the admin user is enabled. + AdminUserEnabled *bool `json:"adminUserEnabled,omitempty"` + + // CreationDate: The creation date of the container registry in ISO8601 format. + CreationDate *string `json:"creationDate,omitempty"` + + // DataEndpointEnabled: Enable a single data endpoint per region for serving data. + DataEndpointEnabled *bool `json:"dataEndpointEnabled,omitempty"` + + // DataEndpointHostNames: List of host names that will serve data when dataEndpointEnabled is true. + DataEndpointHostNames []string `json:"dataEndpointHostNames,omitempty"` + + // Encryption: The encryption settings of container registry. + Encryption *EncryptionProperty_STATUS `json:"encryption,omitempty"` + + // LoginServer: The URL that can be used to log into the container registry. + LoginServer *string `json:"loginServer,omitempty"` + + // NetworkRuleBypassOptions: Whether to allow trusted Azure services to access a network restricted registry. + NetworkRuleBypassOptions *RegistryProperties_NetworkRuleBypassOptions_STATUS `json:"networkRuleBypassOptions,omitempty"` + + // NetworkRuleSet: The network rule set for a container registry. + NetworkRuleSet *NetworkRuleSet_STATUS `json:"networkRuleSet,omitempty"` + + // Policies: The policies for a container registry. + Policies *Policies_STATUS `json:"policies,omitempty"` + + // PrivateEndpointConnections: List of private endpoint connections for a container registry. + PrivateEndpointConnections []PrivateEndpointConnection_STATUS `json:"privateEndpointConnections,omitempty"` + + // ProvisioningState: The provisioning state of the container registry at the time the operation was called. + ProvisioningState *RegistryProperties_ProvisioningState_STATUS `json:"provisioningState,omitempty"` + + // PublicNetworkAccess: Whether or not public network access is allowed for the container registry. + PublicNetworkAccess *RegistryProperties_PublicNetworkAccess_STATUS `json:"publicNetworkAccess,omitempty"` + + // Status: The status of the container registry at the time the operation was called. + Status *Status_STATUS `json:"status,omitempty"` + + // ZoneRedundancy: Whether or not zone redundancy is enabled for this container registry + ZoneRedundancy *RegistryProperties_ZoneRedundancy_STATUS `json:"zoneRedundancy,omitempty"` +} + +// The SKU of a container registry. +type Sku_STATUS struct { + // Name: The SKU name of the container registry. Required for registry creation. + Name *Sku_Name_STATUS `json:"name,omitempty"` + + // Tier: The SKU tier based on the SKU name. + Tier *Sku_Tier_STATUS `json:"tier,omitempty"` +} + +type EncryptionProperty_STATUS struct { + // KeyVaultProperties: Key vault properties. + KeyVaultProperties *KeyVaultProperties_STATUS `json:"keyVaultProperties,omitempty"` + + // Status: Indicates whether or not the encryption is enabled for container registry. + Status *EncryptionProperty_Status_STATUS `json:"status,omitempty"` +} + +type IdentityProperties_Type_STATUS string + +const ( + IdentityProperties_Type_STATUS_None = IdentityProperties_Type_STATUS("None") + IdentityProperties_Type_STATUS_SystemAssigned = IdentityProperties_Type_STATUS("SystemAssigned") + IdentityProperties_Type_STATUS_SystemAssignedUserAssigned = IdentityProperties_Type_STATUS("SystemAssigned, UserAssigned") + IdentityProperties_Type_STATUS_UserAssigned = IdentityProperties_Type_STATUS("UserAssigned") +) + +// Mapping from string to IdentityProperties_Type_STATUS +var identityProperties_Type_STATUS_Values = map[string]IdentityProperties_Type_STATUS{ + "none": IdentityProperties_Type_STATUS_None, + "systemassigned": IdentityProperties_Type_STATUS_SystemAssigned, + "systemassigned, userassigned": IdentityProperties_Type_STATUS_SystemAssignedUserAssigned, + "userassigned": IdentityProperties_Type_STATUS_UserAssigned, +} + +// The network rule set for a container registry. +type NetworkRuleSet_STATUS struct { + // DefaultAction: The default action of allow or deny when no other rules match. + DefaultAction *NetworkRuleSet_DefaultAction_STATUS `json:"defaultAction,omitempty"` + + // IpRules: The IP ACL rules. + IpRules []IPRule_STATUS `json:"ipRules,omitempty"` +} + +// The policies for a container registry. +type Policies_STATUS struct { + // ExportPolicy: The export policy for a container registry. + ExportPolicy *ExportPolicy_STATUS `json:"exportPolicy,omitempty"` + + // QuarantinePolicy: The quarantine policy for a container registry. + QuarantinePolicy *QuarantinePolicy_STATUS `json:"quarantinePolicy,omitempty"` + + // RetentionPolicy: The retention policy for a container registry. + RetentionPolicy *RetentionPolicy_STATUS `json:"retentionPolicy,omitempty"` + + // TrustPolicy: The content trust policy for a container registry. + TrustPolicy *TrustPolicy_STATUS `json:"trustPolicy,omitempty"` +} + +// An object that represents a private endpoint connection for a container registry. +type PrivateEndpointConnection_STATUS struct { + // Id: The resource ID. + Id *string `json:"id,omitempty"` +} + +type RegistryProperties_NetworkRuleBypassOptions_STATUS string + +const ( + RegistryProperties_NetworkRuleBypassOptions_STATUS_AzureServices = RegistryProperties_NetworkRuleBypassOptions_STATUS("AzureServices") + RegistryProperties_NetworkRuleBypassOptions_STATUS_None = RegistryProperties_NetworkRuleBypassOptions_STATUS("None") +) + +// Mapping from string to RegistryProperties_NetworkRuleBypassOptions_STATUS +var registryProperties_NetworkRuleBypassOptions_STATUS_Values = map[string]RegistryProperties_NetworkRuleBypassOptions_STATUS{ + "azureservices": RegistryProperties_NetworkRuleBypassOptions_STATUS_AzureServices, + "none": RegistryProperties_NetworkRuleBypassOptions_STATUS_None, +} + +type RegistryProperties_ProvisioningState_STATUS string + +const ( + RegistryProperties_ProvisioningState_STATUS_Canceled = RegistryProperties_ProvisioningState_STATUS("Canceled") + RegistryProperties_ProvisioningState_STATUS_Creating = RegistryProperties_ProvisioningState_STATUS("Creating") + RegistryProperties_ProvisioningState_STATUS_Deleting = RegistryProperties_ProvisioningState_STATUS("Deleting") + RegistryProperties_ProvisioningState_STATUS_Failed = RegistryProperties_ProvisioningState_STATUS("Failed") + RegistryProperties_ProvisioningState_STATUS_Succeeded = RegistryProperties_ProvisioningState_STATUS("Succeeded") + RegistryProperties_ProvisioningState_STATUS_Updating = RegistryProperties_ProvisioningState_STATUS("Updating") +) + +// Mapping from string to RegistryProperties_ProvisioningState_STATUS +var registryProperties_ProvisioningState_STATUS_Values = map[string]RegistryProperties_ProvisioningState_STATUS{ + "canceled": RegistryProperties_ProvisioningState_STATUS_Canceled, + "creating": RegistryProperties_ProvisioningState_STATUS_Creating, + "deleting": RegistryProperties_ProvisioningState_STATUS_Deleting, + "failed": RegistryProperties_ProvisioningState_STATUS_Failed, + "succeeded": RegistryProperties_ProvisioningState_STATUS_Succeeded, + "updating": RegistryProperties_ProvisioningState_STATUS_Updating, +} + +type RegistryProperties_PublicNetworkAccess_STATUS string + +const ( + RegistryProperties_PublicNetworkAccess_STATUS_Disabled = RegistryProperties_PublicNetworkAccess_STATUS("Disabled") + RegistryProperties_PublicNetworkAccess_STATUS_Enabled = RegistryProperties_PublicNetworkAccess_STATUS("Enabled") +) + +// Mapping from string to RegistryProperties_PublicNetworkAccess_STATUS +var registryProperties_PublicNetworkAccess_STATUS_Values = map[string]RegistryProperties_PublicNetworkAccess_STATUS{ + "disabled": RegistryProperties_PublicNetworkAccess_STATUS_Disabled, + "enabled": RegistryProperties_PublicNetworkAccess_STATUS_Enabled, +} + +type RegistryProperties_ZoneRedundancy_STATUS string + +const ( + RegistryProperties_ZoneRedundancy_STATUS_Disabled = RegistryProperties_ZoneRedundancy_STATUS("Disabled") + RegistryProperties_ZoneRedundancy_STATUS_Enabled = RegistryProperties_ZoneRedundancy_STATUS("Enabled") +) + +// Mapping from string to RegistryProperties_ZoneRedundancy_STATUS +var registryProperties_ZoneRedundancy_STATUS_Values = map[string]RegistryProperties_ZoneRedundancy_STATUS{ + "disabled": RegistryProperties_ZoneRedundancy_STATUS_Disabled, + "enabled": RegistryProperties_ZoneRedundancy_STATUS_Enabled, +} + +type Sku_Name_STATUS string + +const ( + Sku_Name_STATUS_Basic = Sku_Name_STATUS("Basic") + Sku_Name_STATUS_Classic = Sku_Name_STATUS("Classic") + Sku_Name_STATUS_Premium = Sku_Name_STATUS("Premium") + Sku_Name_STATUS_Standard = Sku_Name_STATUS("Standard") +) + +// Mapping from string to Sku_Name_STATUS +var sku_Name_STATUS_Values = map[string]Sku_Name_STATUS{ + "basic": Sku_Name_STATUS_Basic, + "classic": Sku_Name_STATUS_Classic, + "premium": Sku_Name_STATUS_Premium, + "standard": Sku_Name_STATUS_Standard, +} + +type Sku_Tier_STATUS string + +const ( + Sku_Tier_STATUS_Basic = Sku_Tier_STATUS("Basic") + Sku_Tier_STATUS_Classic = Sku_Tier_STATUS("Classic") + Sku_Tier_STATUS_Premium = Sku_Tier_STATUS("Premium") + Sku_Tier_STATUS_Standard = Sku_Tier_STATUS("Standard") +) + +// Mapping from string to Sku_Tier_STATUS +var sku_Tier_STATUS_Values = map[string]Sku_Tier_STATUS{ + "basic": Sku_Tier_STATUS_Basic, + "classic": Sku_Tier_STATUS_Classic, + "premium": Sku_Tier_STATUS_Premium, + "standard": Sku_Tier_STATUS_Standard, +} + +type UserIdentityProperties_STATUS struct { + // ClientId: The client id of user assigned identity. + ClientId *string `json:"clientId,omitempty"` + + // PrincipalId: The principal id of user assigned identity. + PrincipalId *string `json:"principalId,omitempty"` +} + +type EncryptionProperty_Status_STATUS string + +const ( + EncryptionProperty_Status_STATUS_Disabled = EncryptionProperty_Status_STATUS("disabled") + EncryptionProperty_Status_STATUS_Enabled = EncryptionProperty_Status_STATUS("enabled") +) + +// Mapping from string to EncryptionProperty_Status_STATUS +var encryptionProperty_Status_STATUS_Values = map[string]EncryptionProperty_Status_STATUS{ + "disabled": EncryptionProperty_Status_STATUS_Disabled, + "enabled": EncryptionProperty_Status_STATUS_Enabled, +} + +// The export policy for a container registry. +type ExportPolicy_STATUS struct { + // Status: The value that indicates whether the policy is enabled or not. + Status *ExportPolicy_Status_STATUS `json:"status,omitempty"` +} + +// IP rule with specific IP or IP range in CIDR format. +type IPRule_STATUS struct { + // Action: The action of IP ACL rule. + Action *IPRule_Action_STATUS `json:"action,omitempty"` + + // Value: Specifies the IP or IP range in CIDR format. Only IPV4 address is allowed. + Value *string `json:"value,omitempty"` +} + +type KeyVaultProperties_STATUS struct { + // Identity: The client id of the identity which will be used to access key vault. + Identity *string `json:"identity,omitempty"` + + // KeyIdentifier: Key vault uri to access the encryption key. + KeyIdentifier *string `json:"keyIdentifier,omitempty"` + + // KeyRotationEnabled: Auto key rotation status for a CMK enabled registry. + KeyRotationEnabled *bool `json:"keyRotationEnabled,omitempty"` + + // LastKeyRotationTimestamp: Timestamp of the last successful key rotation. + LastKeyRotationTimestamp *string `json:"lastKeyRotationTimestamp,omitempty"` + + // VersionedKeyIdentifier: The fully qualified key identifier that includes the version of the key that is actually used + // for encryption. + VersionedKeyIdentifier *string `json:"versionedKeyIdentifier,omitempty"` +} + +type NetworkRuleSet_DefaultAction_STATUS string + +const ( + NetworkRuleSet_DefaultAction_STATUS_Allow = NetworkRuleSet_DefaultAction_STATUS("Allow") + NetworkRuleSet_DefaultAction_STATUS_Deny = NetworkRuleSet_DefaultAction_STATUS("Deny") +) + +// Mapping from string to NetworkRuleSet_DefaultAction_STATUS +var networkRuleSet_DefaultAction_STATUS_Values = map[string]NetworkRuleSet_DefaultAction_STATUS{ + "allow": NetworkRuleSet_DefaultAction_STATUS_Allow, + "deny": NetworkRuleSet_DefaultAction_STATUS_Deny, +} + +// The quarantine policy for a container registry. +type QuarantinePolicy_STATUS struct { + // Status: The value that indicates whether the policy is enabled or not. + Status *QuarantinePolicy_Status_STATUS `json:"status,omitempty"` +} + +// The retention policy for a container registry. +type RetentionPolicy_STATUS struct { + // Days: The number of days to retain an untagged manifest after which it gets purged. + Days *int `json:"days,omitempty"` + + // LastUpdatedTime: The timestamp when the policy was last updated. + LastUpdatedTime *string `json:"lastUpdatedTime,omitempty"` + + // Status: The value that indicates whether the policy is enabled or not. + Status *RetentionPolicy_Status_STATUS `json:"status,omitempty"` +} + +// The content trust policy for a container registry. +type TrustPolicy_STATUS struct { + // Status: The value that indicates whether the policy is enabled or not. + Status *TrustPolicy_Status_STATUS `json:"status,omitempty"` + + // Type: The type of trust policy. + Type *TrustPolicy_Type_STATUS `json:"type,omitempty"` +} + +type ExportPolicy_Status_STATUS string + +const ( + ExportPolicy_Status_STATUS_Disabled = ExportPolicy_Status_STATUS("disabled") + ExportPolicy_Status_STATUS_Enabled = ExportPolicy_Status_STATUS("enabled") +) + +// Mapping from string to ExportPolicy_Status_STATUS +var exportPolicy_Status_STATUS_Values = map[string]ExportPolicy_Status_STATUS{ + "disabled": ExportPolicy_Status_STATUS_Disabled, + "enabled": ExportPolicy_Status_STATUS_Enabled, +} + +type IPRule_Action_STATUS string + +const IPRule_Action_STATUS_Allow = IPRule_Action_STATUS("Allow") + +// Mapping from string to IPRule_Action_STATUS +var iPRule_Action_STATUS_Values = map[string]IPRule_Action_STATUS{ + "allow": IPRule_Action_STATUS_Allow, +} + +type QuarantinePolicy_Status_STATUS string + +const ( + QuarantinePolicy_Status_STATUS_Disabled = QuarantinePolicy_Status_STATUS("disabled") + QuarantinePolicy_Status_STATUS_Enabled = QuarantinePolicy_Status_STATUS("enabled") +) + +// Mapping from string to QuarantinePolicy_Status_STATUS +var quarantinePolicy_Status_STATUS_Values = map[string]QuarantinePolicy_Status_STATUS{ + "disabled": QuarantinePolicy_Status_STATUS_Disabled, + "enabled": QuarantinePolicy_Status_STATUS_Enabled, +} + +type RetentionPolicy_Status_STATUS string + +const ( + RetentionPolicy_Status_STATUS_Disabled = RetentionPolicy_Status_STATUS("disabled") + RetentionPolicy_Status_STATUS_Enabled = RetentionPolicy_Status_STATUS("enabled") +) + +// Mapping from string to RetentionPolicy_Status_STATUS +var retentionPolicy_Status_STATUS_Values = map[string]RetentionPolicy_Status_STATUS{ + "disabled": RetentionPolicy_Status_STATUS_Disabled, + "enabled": RetentionPolicy_Status_STATUS_Enabled, +} + +type TrustPolicy_Status_STATUS string + +const ( + TrustPolicy_Status_STATUS_Disabled = TrustPolicy_Status_STATUS("disabled") + TrustPolicy_Status_STATUS_Enabled = TrustPolicy_Status_STATUS("enabled") +) + +// Mapping from string to TrustPolicy_Status_STATUS +var trustPolicy_Status_STATUS_Values = map[string]TrustPolicy_Status_STATUS{ + "disabled": TrustPolicy_Status_STATUS_Disabled, + "enabled": TrustPolicy_Status_STATUS_Enabled, +} + +type TrustPolicy_Type_STATUS string + +const TrustPolicy_Type_STATUS_Notary = TrustPolicy_Type_STATUS("Notary") + +// Mapping from string to TrustPolicy_Type_STATUS +var trustPolicy_Type_STATUS_Values = map[string]TrustPolicy_Type_STATUS{ + "notary": TrustPolicy_Type_STATUS_Notary, +} diff --git a/v2/api/containerregistry/v1api20230701/arm/registry_status_types_gen_test.go b/v2/api/containerregistry/v1api20230701/arm/registry_status_types_gen_test.go new file mode 100644 index 00000000000..fe21a00086d --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/arm/registry_status_types_gen_test.go @@ -0,0 +1,1054 @@ +// 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_EncryptionProperty_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 EncryptionProperty_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForEncryptionProperty_STATUS, EncryptionProperty_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForEncryptionProperty_STATUS runs a test to see if a specific instance of EncryptionProperty_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForEncryptionProperty_STATUS(subject EncryptionProperty_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual EncryptionProperty_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 EncryptionProperty_STATUS instances for property testing - lazily instantiated by +// EncryptionProperty_STATUSGenerator() +var encryptionProperty_STATUSGenerator gopter.Gen + +// EncryptionProperty_STATUSGenerator returns a generator of EncryptionProperty_STATUS instances for property testing. +// We first initialize encryptionProperty_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 EncryptionProperty_STATUSGenerator() gopter.Gen { + if encryptionProperty_STATUSGenerator != nil { + return encryptionProperty_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForEncryptionProperty_STATUS(generators) + encryptionProperty_STATUSGenerator = gen.Struct(reflect.TypeOf(EncryptionProperty_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForEncryptionProperty_STATUS(generators) + AddRelatedPropertyGeneratorsForEncryptionProperty_STATUS(generators) + encryptionProperty_STATUSGenerator = gen.Struct(reflect.TypeOf(EncryptionProperty_STATUS{}), generators) + + return encryptionProperty_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForEncryptionProperty_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForEncryptionProperty_STATUS(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.OneConstOf(EncryptionProperty_Status_STATUS_Disabled, EncryptionProperty_Status_STATUS_Enabled)) +} + +// AddRelatedPropertyGeneratorsForEncryptionProperty_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForEncryptionProperty_STATUS(gens map[string]gopter.Gen) { + gens["KeyVaultProperties"] = gen.PtrOf(KeyVaultProperties_STATUSGenerator()) +} + +func Test_ExportPolicy_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 ExportPolicy_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForExportPolicy_STATUS, ExportPolicy_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForExportPolicy_STATUS runs a test to see if a specific instance of ExportPolicy_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForExportPolicy_STATUS(subject ExportPolicy_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ExportPolicy_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 ExportPolicy_STATUS instances for property testing - lazily instantiated by +// ExportPolicy_STATUSGenerator() +var exportPolicy_STATUSGenerator gopter.Gen + +// ExportPolicy_STATUSGenerator returns a generator of ExportPolicy_STATUS instances for property testing. +func ExportPolicy_STATUSGenerator() gopter.Gen { + if exportPolicy_STATUSGenerator != nil { + return exportPolicy_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForExportPolicy_STATUS(generators) + exportPolicy_STATUSGenerator = gen.Struct(reflect.TypeOf(ExportPolicy_STATUS{}), generators) + + return exportPolicy_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForExportPolicy_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForExportPolicy_STATUS(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.OneConstOf(ExportPolicy_Status_STATUS_Disabled, ExportPolicy_Status_STATUS_Enabled)) +} + +func Test_IPRule_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of IPRule_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForIPRule_STATUS, IPRule_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForIPRule_STATUS runs a test to see if a specific instance of IPRule_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForIPRule_STATUS(subject IPRule_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual IPRule_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of IPRule_STATUS instances for property testing - lazily instantiated by IPRule_STATUSGenerator() +var ipRule_STATUSGenerator gopter.Gen + +// IPRule_STATUSGenerator returns a generator of IPRule_STATUS instances for property testing. +func IPRule_STATUSGenerator() gopter.Gen { + if ipRule_STATUSGenerator != nil { + return ipRule_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIPRule_STATUS(generators) + ipRule_STATUSGenerator = gen.Struct(reflect.TypeOf(IPRule_STATUS{}), generators) + + return ipRule_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForIPRule_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForIPRule_STATUS(gens map[string]gopter.Gen) { + gens["Action"] = gen.PtrOf(gen.OneConstOf(IPRule_Action_STATUS_Allow)) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_IdentityProperties_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 IdentityProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForIdentityProperties_STATUS, IdentityProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForIdentityProperties_STATUS runs a test to see if a specific instance of IdentityProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForIdentityProperties_STATUS(subject IdentityProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual IdentityProperties_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 IdentityProperties_STATUS instances for property testing - lazily instantiated by +// IdentityProperties_STATUSGenerator() +var identityProperties_STATUSGenerator gopter.Gen + +// IdentityProperties_STATUSGenerator returns a generator of IdentityProperties_STATUS instances for property testing. +// We first initialize identityProperties_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 IdentityProperties_STATUSGenerator() gopter.Gen { + if identityProperties_STATUSGenerator != nil { + return identityProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIdentityProperties_STATUS(generators) + identityProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(IdentityProperties_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIdentityProperties_STATUS(generators) + AddRelatedPropertyGeneratorsForIdentityProperties_STATUS(generators) + identityProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(IdentityProperties_STATUS{}), generators) + + return identityProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForIdentityProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForIdentityProperties_STATUS(gens map[string]gopter.Gen) { + gens["PrincipalId"] = gen.PtrOf(gen.AlphaString()) + gens["TenantId"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.OneConstOf( + IdentityProperties_Type_STATUS_None, + IdentityProperties_Type_STATUS_SystemAssigned, + IdentityProperties_Type_STATUS_SystemAssignedUserAssigned, + IdentityProperties_Type_STATUS_UserAssigned)) +} + +// AddRelatedPropertyGeneratorsForIdentityProperties_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForIdentityProperties_STATUS(gens map[string]gopter.Gen) { + gens["UserAssignedIdentities"] = gen.MapOf( + gen.AlphaString(), + UserIdentityProperties_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["Identity"] = gen.PtrOf(gen.AlphaString()) + gens["KeyIdentifier"] = gen.PtrOf(gen.AlphaString()) + gens["KeyRotationEnabled"] = gen.PtrOf(gen.Bool()) + gens["LastKeyRotationTimestamp"] = gen.PtrOf(gen.AlphaString()) + gens["VersionedKeyIdentifier"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_NetworkRuleSet_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 NetworkRuleSet_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForNetworkRuleSet_STATUS, NetworkRuleSet_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForNetworkRuleSet_STATUS runs a test to see if a specific instance of NetworkRuleSet_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForNetworkRuleSet_STATUS(subject NetworkRuleSet_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual NetworkRuleSet_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 NetworkRuleSet_STATUS instances for property testing - lazily instantiated by +// NetworkRuleSet_STATUSGenerator() +var networkRuleSet_STATUSGenerator gopter.Gen + +// NetworkRuleSet_STATUSGenerator returns a generator of NetworkRuleSet_STATUS instances for property testing. +// We first initialize networkRuleSet_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 NetworkRuleSet_STATUSGenerator() gopter.Gen { + if networkRuleSet_STATUSGenerator != nil { + return networkRuleSet_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetworkRuleSet_STATUS(generators) + networkRuleSet_STATUSGenerator = gen.Struct(reflect.TypeOf(NetworkRuleSet_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetworkRuleSet_STATUS(generators) + AddRelatedPropertyGeneratorsForNetworkRuleSet_STATUS(generators) + networkRuleSet_STATUSGenerator = gen.Struct(reflect.TypeOf(NetworkRuleSet_STATUS{}), generators) + + return networkRuleSet_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForNetworkRuleSet_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForNetworkRuleSet_STATUS(gens map[string]gopter.Gen) { + gens["DefaultAction"] = gen.PtrOf(gen.OneConstOf(NetworkRuleSet_DefaultAction_STATUS_Allow, NetworkRuleSet_DefaultAction_STATUS_Deny)) +} + +// AddRelatedPropertyGeneratorsForNetworkRuleSet_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForNetworkRuleSet_STATUS(gens map[string]gopter.Gen) { + gens["IpRules"] = gen.SliceOf(IPRule_STATUSGenerator()) +} + +func Test_Policies_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 Policies_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPolicies_STATUS, Policies_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPolicies_STATUS runs a test to see if a specific instance of Policies_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForPolicies_STATUS(subject Policies_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Policies_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 Policies_STATUS instances for property testing - lazily instantiated by Policies_STATUSGenerator() +var policies_STATUSGenerator gopter.Gen + +// Policies_STATUSGenerator returns a generator of Policies_STATUS instances for property testing. +func Policies_STATUSGenerator() gopter.Gen { + if policies_STATUSGenerator != nil { + return policies_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForPolicies_STATUS(generators) + policies_STATUSGenerator = gen.Struct(reflect.TypeOf(Policies_STATUS{}), generators) + + return policies_STATUSGenerator +} + +// AddRelatedPropertyGeneratorsForPolicies_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForPolicies_STATUS(gens map[string]gopter.Gen) { + gens["ExportPolicy"] = gen.PtrOf(ExportPolicy_STATUSGenerator()) + gens["QuarantinePolicy"] = gen.PtrOf(QuarantinePolicy_STATUSGenerator()) + gens["RetentionPolicy"] = gen.PtrOf(RetentionPolicy_STATUSGenerator()) + gens["TrustPolicy"] = gen.PtrOf(TrustPolicy_STATUSGenerator()) +} + +func Test_PrivateEndpointConnection_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of PrivateEndpointConnection_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateEndpointConnection_STATUS, PrivateEndpointConnection_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateEndpointConnection_STATUS runs a test to see if a specific instance of PrivateEndpointConnection_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateEndpointConnection_STATUS(subject PrivateEndpointConnection_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateEndpointConnection_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of PrivateEndpointConnection_STATUS instances for property testing - lazily instantiated by +// PrivateEndpointConnection_STATUSGenerator() +var privateEndpointConnection_STATUSGenerator gopter.Gen + +// PrivateEndpointConnection_STATUSGenerator returns a generator of PrivateEndpointConnection_STATUS instances for property testing. +func PrivateEndpointConnection_STATUSGenerator() gopter.Gen { + if privateEndpointConnection_STATUSGenerator != nil { + return privateEndpointConnection_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS(generators) + privateEndpointConnection_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointConnection_STATUS{}), generators) + + return privateEndpointConnection_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_QuarantinePolicy_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 QuarantinePolicy_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForQuarantinePolicy_STATUS, QuarantinePolicy_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForQuarantinePolicy_STATUS runs a test to see if a specific instance of QuarantinePolicy_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForQuarantinePolicy_STATUS(subject QuarantinePolicy_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual QuarantinePolicy_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 QuarantinePolicy_STATUS instances for property testing - lazily instantiated by +// QuarantinePolicy_STATUSGenerator() +var quarantinePolicy_STATUSGenerator gopter.Gen + +// QuarantinePolicy_STATUSGenerator returns a generator of QuarantinePolicy_STATUS instances for property testing. +func QuarantinePolicy_STATUSGenerator() gopter.Gen { + if quarantinePolicy_STATUSGenerator != nil { + return quarantinePolicy_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForQuarantinePolicy_STATUS(generators) + quarantinePolicy_STATUSGenerator = gen.Struct(reflect.TypeOf(QuarantinePolicy_STATUS{}), generators) + + return quarantinePolicy_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForQuarantinePolicy_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForQuarantinePolicy_STATUS(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.OneConstOf(QuarantinePolicy_Status_STATUS_Disabled, QuarantinePolicy_Status_STATUS_Enabled)) +} + +func Test_RegistryProperties_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 RegistryProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRegistryProperties_STATUS, RegistryProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRegistryProperties_STATUS runs a test to see if a specific instance of RegistryProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForRegistryProperties_STATUS(subject RegistryProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual RegistryProperties_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 RegistryProperties_STATUS instances for property testing - lazily instantiated by +// RegistryProperties_STATUSGenerator() +var registryProperties_STATUSGenerator gopter.Gen + +// RegistryProperties_STATUSGenerator returns a generator of RegistryProperties_STATUS instances for property testing. +// We first initialize registryProperties_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 RegistryProperties_STATUSGenerator() gopter.Gen { + if registryProperties_STATUSGenerator != nil { + return registryProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistryProperties_STATUS(generators) + registryProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(RegistryProperties_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistryProperties_STATUS(generators) + AddRelatedPropertyGeneratorsForRegistryProperties_STATUS(generators) + registryProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(RegistryProperties_STATUS{}), generators) + + return registryProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForRegistryProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForRegistryProperties_STATUS(gens map[string]gopter.Gen) { + gens["AdminUserEnabled"] = gen.PtrOf(gen.Bool()) + gens["CreationDate"] = gen.PtrOf(gen.AlphaString()) + gens["DataEndpointEnabled"] = gen.PtrOf(gen.Bool()) + gens["DataEndpointHostNames"] = gen.SliceOf(gen.AlphaString()) + gens["LoginServer"] = gen.PtrOf(gen.AlphaString()) + gens["NetworkRuleBypassOptions"] = gen.PtrOf(gen.OneConstOf(RegistryProperties_NetworkRuleBypassOptions_STATUS_AzureServices, RegistryProperties_NetworkRuleBypassOptions_STATUS_None)) + gens["ProvisioningState"] = gen.PtrOf(gen.OneConstOf( + RegistryProperties_ProvisioningState_STATUS_Canceled, + RegistryProperties_ProvisioningState_STATUS_Creating, + RegistryProperties_ProvisioningState_STATUS_Deleting, + RegistryProperties_ProvisioningState_STATUS_Failed, + RegistryProperties_ProvisioningState_STATUS_Succeeded, + RegistryProperties_ProvisioningState_STATUS_Updating)) + gens["PublicNetworkAccess"] = gen.PtrOf(gen.OneConstOf(RegistryProperties_PublicNetworkAccess_STATUS_Disabled, RegistryProperties_PublicNetworkAccess_STATUS_Enabled)) + gens["ZoneRedundancy"] = gen.PtrOf(gen.OneConstOf(RegistryProperties_ZoneRedundancy_STATUS_Disabled, RegistryProperties_ZoneRedundancy_STATUS_Enabled)) +} + +// AddRelatedPropertyGeneratorsForRegistryProperties_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForRegistryProperties_STATUS(gens map[string]gopter.Gen) { + gens["Encryption"] = gen.PtrOf(EncryptionProperty_STATUSGenerator()) + gens["NetworkRuleSet"] = gen.PtrOf(NetworkRuleSet_STATUSGenerator()) + gens["Policies"] = gen.PtrOf(Policies_STATUSGenerator()) + gens["PrivateEndpointConnections"] = gen.SliceOf(PrivateEndpointConnection_STATUSGenerator()) + gens["Status"] = gen.PtrOf(Status_STATUSGenerator()) +} + +func Test_Registry_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 Registry_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRegistry_STATUS, Registry_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRegistry_STATUS runs a test to see if a specific instance of Registry_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForRegistry_STATUS(subject Registry_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Registry_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 Registry_STATUS instances for property testing - lazily instantiated by Registry_STATUSGenerator() +var registry_STATUSGenerator gopter.Gen + +// Registry_STATUSGenerator returns a generator of Registry_STATUS instances for property testing. +// We first initialize registry_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 Registry_STATUSGenerator() gopter.Gen { + if registry_STATUSGenerator != nil { + return registry_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistry_STATUS(generators) + registry_STATUSGenerator = gen.Struct(reflect.TypeOf(Registry_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistry_STATUS(generators) + AddRelatedPropertyGeneratorsForRegistry_STATUS(generators) + registry_STATUSGenerator = gen.Struct(reflect.TypeOf(Registry_STATUS{}), generators) + + return registry_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForRegistry_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForRegistry_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()) +} + +// AddRelatedPropertyGeneratorsForRegistry_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForRegistry_STATUS(gens map[string]gopter.Gen) { + gens["Identity"] = gen.PtrOf(IdentityProperties_STATUSGenerator()) + gens["Properties"] = gen.PtrOf(RegistryProperties_STATUSGenerator()) + gens["Sku"] = gen.PtrOf(Sku_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_RetentionPolicy_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 RetentionPolicy_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRetentionPolicy_STATUS, RetentionPolicy_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRetentionPolicy_STATUS runs a test to see if a specific instance of RetentionPolicy_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForRetentionPolicy_STATUS(subject RetentionPolicy_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual RetentionPolicy_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 RetentionPolicy_STATUS instances for property testing - lazily instantiated by +// RetentionPolicy_STATUSGenerator() +var retentionPolicy_STATUSGenerator gopter.Gen + +// RetentionPolicy_STATUSGenerator returns a generator of RetentionPolicy_STATUS instances for property testing. +func RetentionPolicy_STATUSGenerator() gopter.Gen { + if retentionPolicy_STATUSGenerator != nil { + return retentionPolicy_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRetentionPolicy_STATUS(generators) + retentionPolicy_STATUSGenerator = gen.Struct(reflect.TypeOf(RetentionPolicy_STATUS{}), generators) + + return retentionPolicy_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForRetentionPolicy_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForRetentionPolicy_STATUS(gens map[string]gopter.Gen) { + gens["Days"] = gen.PtrOf(gen.Int()) + gens["LastUpdatedTime"] = gen.PtrOf(gen.AlphaString()) + gens["Status"] = gen.PtrOf(gen.OneConstOf(RetentionPolicy_Status_STATUS_Disabled, RetentionPolicy_Status_STATUS_Enabled)) +} + +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.OneConstOf( + Sku_Name_STATUS_Basic, + Sku_Name_STATUS_Classic, + Sku_Name_STATUS_Premium, + Sku_Name_STATUS_Standard)) + gens["Tier"] = gen.PtrOf(gen.OneConstOf( + Sku_Tier_STATUS_Basic, + Sku_Tier_STATUS_Classic, + Sku_Tier_STATUS_Premium, + Sku_Tier_STATUS_Standard)) +} + +func Test_TrustPolicy_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 TrustPolicy_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForTrustPolicy_STATUS, TrustPolicy_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForTrustPolicy_STATUS runs a test to see if a specific instance of TrustPolicy_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForTrustPolicy_STATUS(subject TrustPolicy_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual TrustPolicy_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 TrustPolicy_STATUS instances for property testing - lazily instantiated by TrustPolicy_STATUSGenerator() +var trustPolicy_STATUSGenerator gopter.Gen + +// TrustPolicy_STATUSGenerator returns a generator of TrustPolicy_STATUS instances for property testing. +func TrustPolicy_STATUSGenerator() gopter.Gen { + if trustPolicy_STATUSGenerator != nil { + return trustPolicy_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForTrustPolicy_STATUS(generators) + trustPolicy_STATUSGenerator = gen.Struct(reflect.TypeOf(TrustPolicy_STATUS{}), generators) + + return trustPolicy_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForTrustPolicy_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForTrustPolicy_STATUS(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.OneConstOf(TrustPolicy_Status_STATUS_Disabled, TrustPolicy_Status_STATUS_Enabled)) + gens["Type"] = gen.PtrOf(gen.OneConstOf(TrustPolicy_Type_STATUS_Notary)) +} + +func Test_UserIdentityProperties_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 UserIdentityProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUserIdentityProperties_STATUS, UserIdentityProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUserIdentityProperties_STATUS runs a test to see if a specific instance of UserIdentityProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForUserIdentityProperties_STATUS(subject UserIdentityProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UserIdentityProperties_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 UserIdentityProperties_STATUS instances for property testing - lazily instantiated by +// UserIdentityProperties_STATUSGenerator() +var userIdentityProperties_STATUSGenerator gopter.Gen + +// UserIdentityProperties_STATUSGenerator returns a generator of UserIdentityProperties_STATUS instances for property testing. +func UserIdentityProperties_STATUSGenerator() gopter.Gen { + if userIdentityProperties_STATUSGenerator != nil { + return userIdentityProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUserIdentityProperties_STATUS(generators) + userIdentityProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(UserIdentityProperties_STATUS{}), generators) + + return userIdentityProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForUserIdentityProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForUserIdentityProperties_STATUS(gens map[string]gopter.Gen) { + gens["ClientId"] = gen.PtrOf(gen.AlphaString()) + gens["PrincipalId"] = gen.PtrOf(gen.AlphaString()) +} diff --git a/v2/api/containerregistry/v1api20230701/arm/structure.txt b/v2/api/containerregistry/v1api20230701/arm/structure.txt new file mode 100644 index 00000000000..c8da36c49e3 --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/arm/structure.txt @@ -0,0 +1,223 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20230701/arm +---------------------------------------------------------------------------------- +RegistryReplication_STATUS: Object (7 properties) +├── Id: *string +├── Location: *string +├── Name: *string +├── Properties: *Object (4 properties) +│ ├── ProvisioningState: *Enum (6 values) +│ │ ├── "Canceled" +│ │ ├── "Creating" +│ │ ├── "Deleting" +│ │ ├── "Failed" +│ │ ├── "Succeeded" +│ │ └── "Updating" +│ ├── RegionEndpointEnabled: *bool +│ ├── Status: *Object (3 properties) +│ │ ├── DisplayStatus: *string +│ │ ├── Message: *string +│ │ └── Timestamp: *string +│ └── ZoneRedundancy: *Enum (2 values) +│ ├── "Disabled" +│ └── "Enabled" +├── 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 +RegistryReplication_Spec: Object (4 properties) +├── Location: *string +├── Name: string +├── Properties: *Object (2 properties) +│ ├── RegionEndpointEnabled: *bool +│ └── ZoneRedundancy: *Enum (2 values) +│ ├── "Disabled" +│ └── "Enabled" +└── Tags: map[string]string +Registry_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 (14 properties) +│ ├── AdminUserEnabled: *bool +│ ├── CreationDate: *string +│ ├── DataEndpointEnabled: *bool +│ ├── DataEndpointHostNames: string[] +│ ├── Encryption: *Object (2 properties) +│ │ ├── KeyVaultProperties: *Object (5 properties) +│ │ │ ├── Identity: *string +│ │ │ ├── KeyIdentifier: *string +│ │ │ ├── KeyRotationEnabled: *bool +│ │ │ ├── LastKeyRotationTimestamp: *string +│ │ │ └── VersionedKeyIdentifier: *string +│ │ └── Status: *Enum (2 values) +│ │ ├── "disabled" +│ │ └── "enabled" +│ ├── LoginServer: *string +│ ├── NetworkRuleBypassOptions: *Enum (2 values) +│ │ ├── "AzureServices" +│ │ └── "None" +│ ├── NetworkRuleSet: *Object (2 properties) +│ │ ├── DefaultAction: *Enum (2 values) +│ │ │ ├── "Allow" +│ │ │ └── "Deny" +│ │ └── IpRules: Object (2 properties)[] +│ │ ├── Action: *Enum (1 value) +│ │ │ └── "Allow" +│ │ └── Value: *string +│ ├── Policies: *Object (4 properties) +│ │ ├── ExportPolicy: *Object (1 property) +│ │ │ └── Status: *Enum (2 values) +│ │ │ ├── "disabled" +│ │ │ └── "enabled" +│ │ ├── QuarantinePolicy: *Object (1 property) +│ │ │ └── Status: *Enum (2 values) +│ │ │ ├── "disabled" +│ │ │ └── "enabled" +│ │ ├── RetentionPolicy: *Object (3 properties) +│ │ │ ├── Days: *int +│ │ │ ├── LastUpdatedTime: *string +│ │ │ └── Status: *Enum (2 values) +│ │ │ ├── "disabled" +│ │ │ └── "enabled" +│ │ └── TrustPolicy: *Object (2 properties) +│ │ ├── Status: *Enum (2 values) +│ │ │ ├── "disabled" +│ │ │ └── "enabled" +│ │ └── Type: *Enum (1 value) +│ │ └── "Notary" +│ ├── PrivateEndpointConnections: Object (1 property)[] +│ │ └── Id: *string +│ ├── ProvisioningState: *Enum (6 values) +│ │ ├── "Canceled" +│ │ ├── "Creating" +│ │ ├── "Deleting" +│ │ ├── "Failed" +│ │ ├── "Succeeded" +│ │ └── "Updating" +│ ├── PublicNetworkAccess: *Enum (2 values) +│ │ ├── "Disabled" +│ │ └── "Enabled" +│ ├── Status: *Object (3 properties) +│ │ ├── DisplayStatus: *string +│ │ ├── Message: *string +│ │ └── Timestamp: *string +│ └── ZoneRedundancy: *Enum (2 values) +│ ├── "Disabled" +│ └── "Enabled" +├── Sku: *Object (2 properties) +│ ├── Name: *Enum (4 values) +│ │ ├── "Basic" +│ │ ├── "Classic" +│ │ ├── "Premium" +│ │ └── "Standard" +│ └── Tier: *Enum (4 values) +│ ├── "Basic" +│ ├── "Classic" +│ ├── "Premium" +│ └── "Standard" +├── SystemData: *Object (6 properties) +│ ├── CreatedAt: *string +│ ├── CreatedBy: *string +│ ├── CreatedByType: *Enum (4 values) +│ │ ├── "Application" +│ │ ├── "Key" +│ │ ├── "ManagedIdentity" +│ │ └── "User" +│ ├── LastModifiedAt: *string +│ ├── LastModifiedBy: *string +│ └── LastModifiedByType: *Enum (4 values) +│ ├── "Application" +│ ├── "Key" +│ ├── "ManagedIdentity" +│ └── "User" +├── Tags: map[string]string +└── Type: *string +Registry_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) +│ ├── AdminUserEnabled: *bool +│ ├── DataEndpointEnabled: *bool +│ ├── Encryption: *Object (2 properties) +│ │ ├── KeyVaultProperties: *Object (2 properties) +│ │ │ ├── Identity: *string +│ │ │ └── KeyIdentifier: *string +│ │ └── Status: *Enum (2 values) +│ │ ├── "disabled" +│ │ └── "enabled" +│ ├── NetworkRuleBypassOptions: *Enum (2 values) +│ │ ├── "AzureServices" +│ │ └── "None" +│ ├── NetworkRuleSet: *Object (2 properties) +│ │ ├── DefaultAction: *Enum (2 values) +│ │ │ ├── "Allow" +│ │ │ └── "Deny" +│ │ └── IpRules: Object (2 properties)[] +│ │ ├── Action: *Enum (1 value) +│ │ │ └── "Allow" +│ │ └── Value: *string +│ ├── Policies: *Object (4 properties) +│ │ ├── ExportPolicy: *Object (1 property) +│ │ │ └── Status: *Enum (2 values) +│ │ │ ├── "disabled" +│ │ │ └── "enabled" +│ │ ├── QuarantinePolicy: *Object (1 property) +│ │ │ └── Status: *Enum (2 values) +│ │ │ ├── "disabled" +│ │ │ └── "enabled" +│ │ ├── RetentionPolicy: *Object (2 properties) +│ │ │ ├── Days: *int +│ │ │ └── Status: *Enum (2 values) +│ │ │ ├── "disabled" +│ │ │ └── "enabled" +│ │ └── TrustPolicy: *Object (2 properties) +│ │ ├── Status: *Enum (2 values) +│ │ │ ├── "disabled" +│ │ │ └── "enabled" +│ │ └── Type: *Enum (1 value) +│ │ └── "Notary" +│ ├── PublicNetworkAccess: *Enum (2 values) +│ │ ├── "Disabled" +│ │ └── "Enabled" +│ └── ZoneRedundancy: *Enum (2 values) +│ ├── "Disabled" +│ └── "Enabled" +├── Sku: *Object (1 property) +│ └── Name: *Enum (4 values) +│ ├── "Basic" +│ ├── "Classic" +│ ├── "Premium" +│ └── "Standard" +└── Tags: map[string]string diff --git a/v2/api/containerregistry/v1api20230701/doc.go b/v2/api/containerregistry/v1api20230701/doc.go new file mode 100644 index 00000000000..7220489f6e1 --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/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 v1api20230701 contains API Schema definitions for the containerregistry v1api20230701 API group +// +groupName=containerregistry.azure.com +package v1api20230701 diff --git a/v2/api/containerregistry/v1api20230701/groupversion_info_gen.go b/v2/api/containerregistry/v1api20230701/groupversion_info_gen.go new file mode 100644 index 00000000000..56447a9972c --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/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 v1api20230701 contains API Schema definitions for the containerregistry v1api20230701 API group +// +kubebuilder:object:generate=true +// All object properties are optional by default, this will be overridden when needed: +// +kubebuilder:validation:Optional +// +groupName=containerregistry.azure.com +// +versionName=v1api20230701 +package v1api20230701 + +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: "containerregistry.azure.com", Version: "v1api20230701"} + + // 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/containerregistry/v1api20230701/registry_replication_types_gen.go b/v2/api/containerregistry/v1api20230701/registry_replication_types_gen.go new file mode 100644 index 00000000000..29428b9fb69 --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/registry_replication_types_gen.go @@ -0,0 +1,1225 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v1api20230701 + +import ( + "fmt" + arm "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20230701/arm" + storage "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20230701/storage" + "github.com/Azure/azure-service-operator/v2/internal/reflecthelpers" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/conditions" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/configmaps" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/core" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/secrets" + "github.com/rotisserie/eris" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/conversion" + "sigs.k8s.io/controller-runtime/pkg/webhook/admission" +) + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="Severity",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].severity" +// +kubebuilder:printcolumn:name="Reason",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].reason" +// +kubebuilder:printcolumn:name="Message",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].message" +// Generator information: +// - Generated from: /containerregistry/resource-manager/Microsoft.ContainerRegistry/stable/2023-07-01/containerregistry.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/replications/{replicationName} +type RegistryReplication struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec RegistryReplication_Spec `json:"spec,omitempty"` + Status RegistryReplication_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &RegistryReplication{} + +// GetConditions returns the conditions of the resource +func (replication *RegistryReplication) GetConditions() conditions.Conditions { + return replication.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (replication *RegistryReplication) SetConditions(conditions conditions.Conditions) { + replication.Status.Conditions = conditions +} + +var _ conversion.Convertible = &RegistryReplication{} + +// ConvertFrom populates our RegistryReplication from the provided hub RegistryReplication +func (replication *RegistryReplication) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.RegistryReplication) + if !ok { + return fmt.Errorf("expected containerregistry/v1api20230701/storage/RegistryReplication but received %T instead", hub) + } + + return replication.AssignProperties_From_RegistryReplication(source) +} + +// ConvertTo populates the provided hub RegistryReplication from our RegistryReplication +func (replication *RegistryReplication) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.RegistryReplication) + if !ok { + return fmt.Errorf("expected containerregistry/v1api20230701/storage/RegistryReplication but received %T instead", hub) + } + + return replication.AssignProperties_To_RegistryReplication(destination) +} + +// +kubebuilder:webhook:path=/mutate-containerregistry-azure-com-v1api20230701-registryreplication,mutating=true,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=containerregistry.azure.com,resources=registryreplications,verbs=create;update,versions=v1api20230701,name=default.v1api20230701.registryreplications.containerregistry.azure.com,admissionReviewVersions=v1 + +var _ admission.Defaulter = &RegistryReplication{} + +// Default applies defaults to the RegistryReplication resource +func (replication *RegistryReplication) Default() { + replication.defaultImpl() + var temp any = replication + if runtimeDefaulter, ok := temp.(genruntime.Defaulter); ok { + runtimeDefaulter.CustomDefault() + } +} + +// defaultAzureName defaults the Azure name of the resource to the Kubernetes name +func (replication *RegistryReplication) defaultAzureName() { + if replication.Spec.AzureName == "" { + replication.Spec.AzureName = replication.Name + } +} + +// defaultImpl applies the code generated defaults to the RegistryReplication resource +func (replication *RegistryReplication) defaultImpl() { replication.defaultAzureName() } + +var _ configmaps.Exporter = &RegistryReplication{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (replication *RegistryReplication) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if replication.Spec.OperatorSpec == nil { + return nil + } + return replication.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &RegistryReplication{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (replication *RegistryReplication) SecretDestinationExpressions() []*core.DestinationExpression { + if replication.Spec.OperatorSpec == nil { + return nil + } + return replication.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.ImportableResource = &RegistryReplication{} + +// InitializeSpec initializes the spec for this resource from the given status +func (replication *RegistryReplication) InitializeSpec(status genruntime.ConvertibleStatus) error { + if s, ok := status.(*RegistryReplication_STATUS); ok { + return replication.Spec.Initialize_From_RegistryReplication_STATUS(s) + } + + return fmt.Errorf("expected Status of type RegistryReplication_STATUS but received %T instead", status) +} + +var _ genruntime.KubernetesResource = &RegistryReplication{} + +// AzureName returns the Azure name of the resource +func (replication *RegistryReplication) AzureName() string { + return replication.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2023-07-01" +func (replication RegistryReplication) GetAPIVersion() string { + return "2023-07-01" +} + +// GetResourceScope returns the scope of the resource +func (replication *RegistryReplication) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (replication *RegistryReplication) GetSpec() genruntime.ConvertibleSpec { + return &replication.Spec +} + +// GetStatus returns the status of this resource +func (replication *RegistryReplication) GetStatus() genruntime.ConvertibleStatus { + return &replication.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (replication *RegistryReplication) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.ContainerRegistry/registries/replications" +func (replication *RegistryReplication) GetType() string { + return "Microsoft.ContainerRegistry/registries/replications" +} + +// NewEmptyStatus returns a new empty (blank) status +func (replication *RegistryReplication) NewEmptyStatus() genruntime.ConvertibleStatus { + return &RegistryReplication_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (replication *RegistryReplication) Owner() *genruntime.ResourceReference { + if replication.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(replication.Spec) + return replication.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (replication *RegistryReplication) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*RegistryReplication_STATUS); ok { + replication.Status = *st + return nil + } + + // Convert status to required version + var st RegistryReplication_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + replication.Status = st + return nil +} + +// +kubebuilder:webhook:path=/validate-containerregistry-azure-com-v1api20230701-registryreplication,mutating=false,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=containerregistry.azure.com,resources=registryreplications,verbs=create;update,versions=v1api20230701,name=validate.v1api20230701.registryreplications.containerregistry.azure.com,admissionReviewVersions=v1 + +var _ admission.Validator = &RegistryReplication{} + +// ValidateCreate validates the creation of the resource +func (replication *RegistryReplication) ValidateCreate() (admission.Warnings, error) { + validations := replication.createValidations() + var temp any = replication + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.CreateValidations()...) + } + return genruntime.ValidateCreate(validations) +} + +// ValidateDelete validates the deletion of the resource +func (replication *RegistryReplication) ValidateDelete() (admission.Warnings, error) { + validations := replication.deleteValidations() + var temp any = replication + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.DeleteValidations()...) + } + return genruntime.ValidateDelete(validations) +} + +// ValidateUpdate validates an update of the resource +func (replication *RegistryReplication) ValidateUpdate(old runtime.Object) (admission.Warnings, error) { + validations := replication.updateValidations() + var temp any = replication + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.UpdateValidations()...) + } + return genruntime.ValidateUpdate(old, validations) +} + +// createValidations validates the creation of the resource +func (replication *RegistryReplication) createValidations() []func() (admission.Warnings, error) { + return []func() (admission.Warnings, error){replication.validateResourceReferences, replication.validateOwnerReference, replication.validateSecretDestinations, replication.validateConfigMapDestinations} +} + +// deleteValidations validates the deletion of the resource +func (replication *RegistryReplication) deleteValidations() []func() (admission.Warnings, error) { + return nil +} + +// updateValidations validates the update of the resource +func (replication *RegistryReplication) updateValidations() []func(old runtime.Object) (admission.Warnings, error) { + return []func(old runtime.Object) (admission.Warnings, error){ + func(old runtime.Object) (admission.Warnings, error) { + return replication.validateResourceReferences() + }, + replication.validateWriteOnceProperties, + func(old runtime.Object) (admission.Warnings, error) { + return replication.validateOwnerReference() + }, + func(old runtime.Object) (admission.Warnings, error) { + return replication.validateSecretDestinations() + }, + func(old runtime.Object) (admission.Warnings, error) { + return replication.validateConfigMapDestinations() + }, + } +} + +// validateConfigMapDestinations validates there are no colliding genruntime.ConfigMapDestinations +func (replication *RegistryReplication) validateConfigMapDestinations() (admission.Warnings, error) { + if replication.Spec.OperatorSpec == nil { + return nil, nil + } + return configmaps.ValidateDestinations(replication, nil, replication.Spec.OperatorSpec.ConfigMapExpressions) +} + +// validateOwnerReference validates the owner field +func (replication *RegistryReplication) validateOwnerReference() (admission.Warnings, error) { + return genruntime.ValidateOwner(replication) +} + +// validateResourceReferences validates all resource references +func (replication *RegistryReplication) validateResourceReferences() (admission.Warnings, error) { + refs, err := reflecthelpers.FindResourceReferences(&replication.Spec) + if err != nil { + return nil, err + } + return genruntime.ValidateResourceReferences(refs) +} + +// validateSecretDestinations validates there are no colliding genruntime.SecretDestination's +func (replication *RegistryReplication) validateSecretDestinations() (admission.Warnings, error) { + if replication.Spec.OperatorSpec == nil { + return nil, nil + } + return secrets.ValidateDestinations(replication, nil, replication.Spec.OperatorSpec.SecretExpressions) +} + +// validateWriteOnceProperties validates all WriteOnce properties +func (replication *RegistryReplication) validateWriteOnceProperties(old runtime.Object) (admission.Warnings, error) { + oldObj, ok := old.(*RegistryReplication) + if !ok { + return nil, nil + } + + return genruntime.ValidateWriteOnceProperties(oldObj, replication) +} + +// AssignProperties_From_RegistryReplication populates our RegistryReplication from the provided source RegistryReplication +func (replication *RegistryReplication) AssignProperties_From_RegistryReplication(source *storage.RegistryReplication) error { + + // ObjectMeta + replication.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec RegistryReplication_Spec + err := spec.AssignProperties_From_RegistryReplication_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_RegistryReplication_Spec() to populate field Spec") + } + replication.Spec = spec + + // Status + var status RegistryReplication_STATUS + err = status.AssignProperties_From_RegistryReplication_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_RegistryReplication_STATUS() to populate field Status") + } + replication.Status = status + + // No error + return nil +} + +// AssignProperties_To_RegistryReplication populates the provided destination RegistryReplication from our RegistryReplication +func (replication *RegistryReplication) AssignProperties_To_RegistryReplication(destination *storage.RegistryReplication) error { + + // ObjectMeta + destination.ObjectMeta = *replication.ObjectMeta.DeepCopy() + + // Spec + var spec storage.RegistryReplication_Spec + err := replication.Spec.AssignProperties_To_RegistryReplication_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_RegistryReplication_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.RegistryReplication_STATUS + err = replication.Status.AssignProperties_To_RegistryReplication_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_RegistryReplication_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 (replication *RegistryReplication) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: replication.Spec.OriginalVersion(), + Kind: "RegistryReplication", + } +} + +// +kubebuilder:object:root=true +// Generator information: +// - Generated from: /containerregistry/resource-manager/Microsoft.ContainerRegistry/stable/2023-07-01/containerregistry.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/replications/{replicationName} +type RegistryReplicationList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []RegistryReplication `json:"items"` +} + +type RegistryReplication_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"` + + // +kubebuilder:validation:Required + // Location: The location of the resource. This cannot be changed after the resource is created. + 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 *RegistryReplicationOperatorSpec `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 containerregistry.azure.com/Registry resource + Owner *genruntime.KnownResourceReference `group:"containerregistry.azure.com" json:"owner,omitempty" kind:"Registry"` + + // RegionEndpointEnabled: Specifies whether the replication's regional endpoint is enabled. Requests will not be routed to + // a replication whose regional endpoint is disabled, however its data will continue to be synced with other replications. + RegionEndpointEnabled *bool `json:"regionEndpointEnabled,omitempty"` + + // Tags: The tags of the resource. + Tags map[string]string `json:"tags,omitempty"` + + // ZoneRedundancy: Whether or not zone redundancy is enabled for this container registry replication + ZoneRedundancy *ReplicationProperties_ZoneRedundancy `json:"zoneRedundancy,omitempty"` +} + +var _ genruntime.ARMTransformer = &RegistryReplication_Spec{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (replication *RegistryReplication_Spec) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if replication == nil { + return nil, nil + } + result := &arm.RegistryReplication_Spec{} + + // Set property "Location": + if replication.Location != nil { + location := *replication.Location + result.Location = &location + } + + // Set property "Name": + result.Name = resolved.Name + + // Set property "Properties": + if replication.RegionEndpointEnabled != nil || replication.ZoneRedundancy != nil { + result.Properties = &arm.ReplicationProperties{} + } + if replication.RegionEndpointEnabled != nil { + regionEndpointEnabled := *replication.RegionEndpointEnabled + result.Properties.RegionEndpointEnabled = ®ionEndpointEnabled + } + if replication.ZoneRedundancy != nil { + var temp string + temp = string(*replication.ZoneRedundancy) + zoneRedundancy := arm.ReplicationProperties_ZoneRedundancy(temp) + result.Properties.ZoneRedundancy = &zoneRedundancy + } + + // Set property "Tags": + if replication.Tags != nil { + result.Tags = make(map[string]string, len(replication.Tags)) + for key, value := range replication.Tags { + result.Tags[key] = value + } + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (replication *RegistryReplication_Spec) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.RegistryReplication_Spec{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (replication *RegistryReplication_Spec) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.RegistryReplication_Spec) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.RegistryReplication_Spec, got %T", armInput) + } + + // Set property "AzureName": + replication.SetAzureName(genruntime.ExtractKubernetesResourceNameFromARMName(typedInput.Name)) + + // Set property "Location": + if typedInput.Location != nil { + location := *typedInput.Location + replication.Location = &location + } + + // no assignment for property "OperatorSpec" + + // Set property "Owner": + replication.Owner = &genruntime.KnownResourceReference{ + Name: owner.Name, + ARMID: owner.ARMID, + } + + // Set property "RegionEndpointEnabled": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.RegionEndpointEnabled != nil { + regionEndpointEnabled := *typedInput.Properties.RegionEndpointEnabled + replication.RegionEndpointEnabled = ®ionEndpointEnabled + } + } + + // Set property "Tags": + if typedInput.Tags != nil { + replication.Tags = make(map[string]string, len(typedInput.Tags)) + for key, value := range typedInput.Tags { + replication.Tags[key] = value + } + } + + // Set property "ZoneRedundancy": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ZoneRedundancy != nil { + var temp string + temp = string(*typedInput.Properties.ZoneRedundancy) + zoneRedundancy := ReplicationProperties_ZoneRedundancy(temp) + replication.ZoneRedundancy = &zoneRedundancy + } + } + + // No error + return nil +} + +var _ genruntime.ConvertibleSpec = &RegistryReplication_Spec{} + +// ConvertSpecFrom populates our RegistryReplication_Spec from the provided source +func (replication *RegistryReplication_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + src, ok := source.(*storage.RegistryReplication_Spec) + if ok { + // Populate our instance from source + return replication.AssignProperties_From_RegistryReplication_Spec(src) + } + + // Convert to an intermediate form + src = &storage.RegistryReplication_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") + } + + // Update our instance from src + err = replication.AssignProperties_From_RegistryReplication_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") + } + + return nil +} + +// ConvertSpecTo populates the provided destination from our RegistryReplication_Spec +func (replication *RegistryReplication_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + dst, ok := destination.(*storage.RegistryReplication_Spec) + if ok { + // Populate destination from our instance + return replication.AssignProperties_To_RegistryReplication_Spec(dst) + } + + // Convert to an intermediate form + dst = &storage.RegistryReplication_Spec{} + err := replication.AssignProperties_To_RegistryReplication_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_RegistryReplication_Spec populates our RegistryReplication_Spec from the provided source RegistryReplication_Spec +func (replication *RegistryReplication_Spec) AssignProperties_From_RegistryReplication_Spec(source *storage.RegistryReplication_Spec) error { + + // AzureName + replication.AzureName = source.AzureName + + // Location + replication.Location = genruntime.ClonePointerToString(source.Location) + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec RegistryReplicationOperatorSpec + err := operatorSpec.AssignProperties_From_RegistryReplicationOperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_RegistryReplicationOperatorSpec() to populate field OperatorSpec") + } + replication.OperatorSpec = &operatorSpec + } else { + replication.OperatorSpec = nil + } + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + replication.Owner = &owner + } else { + replication.Owner = nil + } + + // RegionEndpointEnabled + if source.RegionEndpointEnabled != nil { + regionEndpointEnabled := *source.RegionEndpointEnabled + replication.RegionEndpointEnabled = ®ionEndpointEnabled + } else { + replication.RegionEndpointEnabled = nil + } + + // Tags + replication.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // ZoneRedundancy + if source.ZoneRedundancy != nil { + zoneRedundancy := *source.ZoneRedundancy + zoneRedundancyTemp := genruntime.ToEnum(zoneRedundancy, replicationProperties_ZoneRedundancy_Values) + replication.ZoneRedundancy = &zoneRedundancyTemp + } else { + replication.ZoneRedundancy = nil + } + + // No error + return nil +} + +// AssignProperties_To_RegistryReplication_Spec populates the provided destination RegistryReplication_Spec from our RegistryReplication_Spec +func (replication *RegistryReplication_Spec) AssignProperties_To_RegistryReplication_Spec(destination *storage.RegistryReplication_Spec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AzureName + destination.AzureName = replication.AzureName + + // Location + destination.Location = genruntime.ClonePointerToString(replication.Location) + + // OperatorSpec + if replication.OperatorSpec != nil { + var operatorSpec storage.RegistryReplicationOperatorSpec + err := replication.OperatorSpec.AssignProperties_To_RegistryReplicationOperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_RegistryReplicationOperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = replication.OriginalVersion() + + // Owner + if replication.Owner != nil { + owner := replication.Owner.Copy() + destination.Owner = &owner + } else { + destination.Owner = nil + } + + // RegionEndpointEnabled + if replication.RegionEndpointEnabled != nil { + regionEndpointEnabled := *replication.RegionEndpointEnabled + destination.RegionEndpointEnabled = ®ionEndpointEnabled + } else { + destination.RegionEndpointEnabled = nil + } + + // Tags + destination.Tags = genruntime.CloneMapOfStringToString(replication.Tags) + + // ZoneRedundancy + if replication.ZoneRedundancy != nil { + zoneRedundancy := string(*replication.ZoneRedundancy) + destination.ZoneRedundancy = &zoneRedundancy + } else { + destination.ZoneRedundancy = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_RegistryReplication_STATUS populates our RegistryReplication_Spec from the provided source RegistryReplication_STATUS +func (replication *RegistryReplication_Spec) Initialize_From_RegistryReplication_STATUS(source *RegistryReplication_STATUS) error { + + // Location + replication.Location = genruntime.ClonePointerToString(source.Location) + + // RegionEndpointEnabled + if source.RegionEndpointEnabled != nil { + regionEndpointEnabled := *source.RegionEndpointEnabled + replication.RegionEndpointEnabled = ®ionEndpointEnabled + } else { + replication.RegionEndpointEnabled = nil + } + + // Tags + replication.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // ZoneRedundancy + if source.ZoneRedundancy != nil { + zoneRedundancy := genruntime.ToEnum(string(*source.ZoneRedundancy), replicationProperties_ZoneRedundancy_Values) + replication.ZoneRedundancy = &zoneRedundancy + } else { + replication.ZoneRedundancy = nil + } + + // No error + return nil +} + +// OriginalVersion returns the original API version used to create the resource. +func (replication *RegistryReplication_Spec) OriginalVersion() string { + return GroupVersion.Version +} + +// SetAzureName sets the Azure name of the resource +func (replication *RegistryReplication_Spec) SetAzureName(azureName string) { + replication.AzureName = azureName +} + +type RegistryReplication_STATUS struct { + // Conditions: The observed state of the resource + Conditions []conditions.Condition `json:"conditions,omitempty"` + + // Id: The resource ID. + Id *string `json:"id,omitempty"` + + // Location: The location of the resource. This cannot be changed after the resource is created. + Location *string `json:"location,omitempty"` + + // Name: The name of the resource. + Name *string `json:"name,omitempty"` + + // ProvisioningState: The provisioning state of the replication at the time the operation was called. + ProvisioningState *ReplicationProperties_ProvisioningState_STATUS `json:"provisioningState,omitempty"` + + // RegionEndpointEnabled: Specifies whether the replication's regional endpoint is enabled. Requests will not be routed to + // a replication whose regional endpoint is disabled, however its data will continue to be synced with other replications. + RegionEndpointEnabled *bool `json:"regionEndpointEnabled,omitempty"` + + // Status: The status of the replication at the time the operation was called. + Status *Status_STATUS `json:"status,omitempty"` + + // SystemData: Metadata pertaining to creation and last modification of the resource. + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + + // Tags: The tags of the resource. + Tags map[string]string `json:"tags,omitempty"` + + // Type: The type of the resource. + Type *string `json:"type,omitempty"` + + // ZoneRedundancy: Whether or not zone redundancy is enabled for this container registry replication + ZoneRedundancy *ReplicationProperties_ZoneRedundancy_STATUS `json:"zoneRedundancy,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &RegistryReplication_STATUS{} + +// ConvertStatusFrom populates our RegistryReplication_STATUS from the provided source +func (replication *RegistryReplication_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + src, ok := source.(*storage.RegistryReplication_STATUS) + if ok { + // Populate our instance from source + return replication.AssignProperties_From_RegistryReplication_STATUS(src) + } + + // Convert to an intermediate form + src = &storage.RegistryReplication_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") + } + + // Update our instance from src + err = replication.AssignProperties_From_RegistryReplication_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") + } + + return nil +} + +// ConvertStatusTo populates the provided destination from our RegistryReplication_STATUS +func (replication *RegistryReplication_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + dst, ok := destination.(*storage.RegistryReplication_STATUS) + if ok { + // Populate destination from our instance + return replication.AssignProperties_To_RegistryReplication_STATUS(dst) + } + + // Convert to an intermediate form + dst = &storage.RegistryReplication_STATUS{} + err := replication.AssignProperties_To_RegistryReplication_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 = &RegistryReplication_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (replication *RegistryReplication_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.RegistryReplication_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (replication *RegistryReplication_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.RegistryReplication_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.RegistryReplication_STATUS, got %T", armInput) + } + + // no assignment for property "Conditions" + + // Set property "Id": + if typedInput.Id != nil { + id := *typedInput.Id + replication.Id = &id + } + + // Set property "Location": + if typedInput.Location != nil { + location := *typedInput.Location + replication.Location = &location + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + replication.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 := ReplicationProperties_ProvisioningState_STATUS(temp) + replication.ProvisioningState = &provisioningState + } + } + + // Set property "RegionEndpointEnabled": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.RegionEndpointEnabled != nil { + regionEndpointEnabled := *typedInput.Properties.RegionEndpointEnabled + replication.RegionEndpointEnabled = ®ionEndpointEnabled + } + } + + // Set property "Status": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Status != nil { + var status1 Status_STATUS + err := status1.PopulateFromARM(owner, *typedInput.Properties.Status) + if err != nil { + return err + } + status := status1 + replication.Status = &status + } + } + + // Set property "SystemData": + if typedInput.SystemData != nil { + var systemData1 SystemData_STATUS + err := systemData1.PopulateFromARM(owner, *typedInput.SystemData) + if err != nil { + return err + } + systemData := systemData1 + replication.SystemData = &systemData + } + + // Set property "Tags": + if typedInput.Tags != nil { + replication.Tags = make(map[string]string, len(typedInput.Tags)) + for key, value := range typedInput.Tags { + replication.Tags[key] = value + } + } + + // Set property "Type": + if typedInput.Type != nil { + typeVar := *typedInput.Type + replication.Type = &typeVar + } + + // Set property "ZoneRedundancy": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ZoneRedundancy != nil { + var temp string + temp = string(*typedInput.Properties.ZoneRedundancy) + zoneRedundancy := ReplicationProperties_ZoneRedundancy_STATUS(temp) + replication.ZoneRedundancy = &zoneRedundancy + } + } + + // No error + return nil +} + +// AssignProperties_From_RegistryReplication_STATUS populates our RegistryReplication_STATUS from the provided source RegistryReplication_STATUS +func (replication *RegistryReplication_STATUS) AssignProperties_From_RegistryReplication_STATUS(source *storage.RegistryReplication_STATUS) error { + + // Conditions + replication.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) + + // Id + replication.Id = genruntime.ClonePointerToString(source.Id) + + // Location + replication.Location = genruntime.ClonePointerToString(source.Location) + + // Name + replication.Name = genruntime.ClonePointerToString(source.Name) + + // ProvisioningState + if source.ProvisioningState != nil { + provisioningState := *source.ProvisioningState + provisioningStateTemp := genruntime.ToEnum(provisioningState, replicationProperties_ProvisioningState_STATUS_Values) + replication.ProvisioningState = &provisioningStateTemp + } else { + replication.ProvisioningState = nil + } + + // RegionEndpointEnabled + if source.RegionEndpointEnabled != nil { + regionEndpointEnabled := *source.RegionEndpointEnabled + replication.RegionEndpointEnabled = ®ionEndpointEnabled + } else { + replication.RegionEndpointEnabled = nil + } + + // Status + if source.Status != nil { + var status Status_STATUS + err := status.AssignProperties_From_Status_STATUS(source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Status_STATUS() to populate field Status") + } + replication.Status = &status + } else { + replication.Status = 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") + } + replication.SystemData = &systemDatum + } else { + replication.SystemData = nil + } + + // Tags + replication.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // Type + replication.Type = genruntime.ClonePointerToString(source.Type) + + // ZoneRedundancy + if source.ZoneRedundancy != nil { + zoneRedundancy := *source.ZoneRedundancy + zoneRedundancyTemp := genruntime.ToEnum(zoneRedundancy, replicationProperties_ZoneRedundancy_STATUS_Values) + replication.ZoneRedundancy = &zoneRedundancyTemp + } else { + replication.ZoneRedundancy = nil + } + + // No error + return nil +} + +// AssignProperties_To_RegistryReplication_STATUS populates the provided destination RegistryReplication_STATUS from our RegistryReplication_STATUS +func (replication *RegistryReplication_STATUS) AssignProperties_To_RegistryReplication_STATUS(destination *storage.RegistryReplication_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(replication.Conditions) + + // Id + destination.Id = genruntime.ClonePointerToString(replication.Id) + + // Location + destination.Location = genruntime.ClonePointerToString(replication.Location) + + // Name + destination.Name = genruntime.ClonePointerToString(replication.Name) + + // ProvisioningState + if replication.ProvisioningState != nil { + provisioningState := string(*replication.ProvisioningState) + destination.ProvisioningState = &provisioningState + } else { + destination.ProvisioningState = nil + } + + // RegionEndpointEnabled + if replication.RegionEndpointEnabled != nil { + regionEndpointEnabled := *replication.RegionEndpointEnabled + destination.RegionEndpointEnabled = ®ionEndpointEnabled + } else { + destination.RegionEndpointEnabled = nil + } + + // Status + if replication.Status != nil { + var status storage.Status_STATUS + err := replication.Status.AssignProperties_To_Status_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Status_STATUS() to populate field Status") + } + destination.Status = &status + } else { + destination.Status = nil + } + + // SystemData + if replication.SystemData != nil { + var systemDatum storage.SystemData_STATUS + err := replication.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(replication.Tags) + + // Type + destination.Type = genruntime.ClonePointerToString(replication.Type) + + // ZoneRedundancy + if replication.ZoneRedundancy != nil { + zoneRedundancy := string(*replication.ZoneRedundancy) + destination.ZoneRedundancy = &zoneRedundancy + } else { + destination.ZoneRedundancy = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type RegistryReplicationOperatorSpec 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_RegistryReplicationOperatorSpec populates our RegistryReplicationOperatorSpec from the provided source RegistryReplicationOperatorSpec +func (operator *RegistryReplicationOperatorSpec) AssignProperties_From_RegistryReplicationOperatorSpec(source *storage.RegistryReplicationOperatorSpec) error { + + // ConfigMapExpressions + if source.ConfigMapExpressions != nil { + configMapExpressionList := make([]*core.DestinationExpression, len(source.ConfigMapExpressions)) + for configMapExpressionIndex, configMapExpressionItem := range source.ConfigMapExpressions { + // Shadow the loop variable to avoid aliasing + configMapExpressionItem := configMapExpressionItem + if configMapExpressionItem != nil { + configMapExpression := *configMapExpressionItem.DeepCopy() + configMapExpressionList[configMapExpressionIndex] = &configMapExpression + } else { + configMapExpressionList[configMapExpressionIndex] = nil + } + } + operator.ConfigMapExpressions = configMapExpressionList + } else { + operator.ConfigMapExpressions = nil + } + + // SecretExpressions + if source.SecretExpressions != nil { + secretExpressionList := make([]*core.DestinationExpression, len(source.SecretExpressions)) + for secretExpressionIndex, secretExpressionItem := range source.SecretExpressions { + // Shadow the loop variable to avoid aliasing + secretExpressionItem := secretExpressionItem + if secretExpressionItem != nil { + secretExpression := *secretExpressionItem.DeepCopy() + secretExpressionList[secretExpressionIndex] = &secretExpression + } else { + secretExpressionList[secretExpressionIndex] = nil + } + } + operator.SecretExpressions = secretExpressionList + } else { + operator.SecretExpressions = nil + } + + // No error + return nil +} + +// AssignProperties_To_RegistryReplicationOperatorSpec populates the provided destination RegistryReplicationOperatorSpec from our RegistryReplicationOperatorSpec +func (operator *RegistryReplicationOperatorSpec) AssignProperties_To_RegistryReplicationOperatorSpec(destination *storage.RegistryReplicationOperatorSpec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // ConfigMapExpressions + if operator.ConfigMapExpressions != nil { + configMapExpressionList := make([]*core.DestinationExpression, len(operator.ConfigMapExpressions)) + for configMapExpressionIndex, configMapExpressionItem := range operator.ConfigMapExpressions { + // Shadow the loop variable to avoid aliasing + configMapExpressionItem := configMapExpressionItem + if configMapExpressionItem != nil { + configMapExpression := *configMapExpressionItem.DeepCopy() + configMapExpressionList[configMapExpressionIndex] = &configMapExpression + } else { + configMapExpressionList[configMapExpressionIndex] = nil + } + } + destination.ConfigMapExpressions = configMapExpressionList + } else { + destination.ConfigMapExpressions = nil + } + + // SecretExpressions + if operator.SecretExpressions != nil { + secretExpressionList := make([]*core.DestinationExpression, len(operator.SecretExpressions)) + for secretExpressionIndex, secretExpressionItem := range operator.SecretExpressions { + // Shadow the loop variable to avoid aliasing + secretExpressionItem := secretExpressionItem + if secretExpressionItem != nil { + secretExpression := *secretExpressionItem.DeepCopy() + secretExpressionList[secretExpressionIndex] = &secretExpression + } else { + secretExpressionList[secretExpressionIndex] = nil + } + } + destination.SecretExpressions = secretExpressionList + } else { + destination.SecretExpressions = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +type ReplicationProperties_ProvisioningState_STATUS string + +const ( + ReplicationProperties_ProvisioningState_STATUS_Canceled = ReplicationProperties_ProvisioningState_STATUS("Canceled") + ReplicationProperties_ProvisioningState_STATUS_Creating = ReplicationProperties_ProvisioningState_STATUS("Creating") + ReplicationProperties_ProvisioningState_STATUS_Deleting = ReplicationProperties_ProvisioningState_STATUS("Deleting") + ReplicationProperties_ProvisioningState_STATUS_Failed = ReplicationProperties_ProvisioningState_STATUS("Failed") + ReplicationProperties_ProvisioningState_STATUS_Succeeded = ReplicationProperties_ProvisioningState_STATUS("Succeeded") + ReplicationProperties_ProvisioningState_STATUS_Updating = ReplicationProperties_ProvisioningState_STATUS("Updating") +) + +// Mapping from string to ReplicationProperties_ProvisioningState_STATUS +var replicationProperties_ProvisioningState_STATUS_Values = map[string]ReplicationProperties_ProvisioningState_STATUS{ + "canceled": ReplicationProperties_ProvisioningState_STATUS_Canceled, + "creating": ReplicationProperties_ProvisioningState_STATUS_Creating, + "deleting": ReplicationProperties_ProvisioningState_STATUS_Deleting, + "failed": ReplicationProperties_ProvisioningState_STATUS_Failed, + "succeeded": ReplicationProperties_ProvisioningState_STATUS_Succeeded, + "updating": ReplicationProperties_ProvisioningState_STATUS_Updating, +} + +// +kubebuilder:validation:Enum={"Disabled","Enabled"} +type ReplicationProperties_ZoneRedundancy string + +const ( + ReplicationProperties_ZoneRedundancy_Disabled = ReplicationProperties_ZoneRedundancy("Disabled") + ReplicationProperties_ZoneRedundancy_Enabled = ReplicationProperties_ZoneRedundancy("Enabled") +) + +// Mapping from string to ReplicationProperties_ZoneRedundancy +var replicationProperties_ZoneRedundancy_Values = map[string]ReplicationProperties_ZoneRedundancy{ + "disabled": ReplicationProperties_ZoneRedundancy_Disabled, + "enabled": ReplicationProperties_ZoneRedundancy_Enabled, +} + +type ReplicationProperties_ZoneRedundancy_STATUS string + +const ( + ReplicationProperties_ZoneRedundancy_STATUS_Disabled = ReplicationProperties_ZoneRedundancy_STATUS("Disabled") + ReplicationProperties_ZoneRedundancy_STATUS_Enabled = ReplicationProperties_ZoneRedundancy_STATUS("Enabled") +) + +// Mapping from string to ReplicationProperties_ZoneRedundancy_STATUS +var replicationProperties_ZoneRedundancy_STATUS_Values = map[string]ReplicationProperties_ZoneRedundancy_STATUS{ + "disabled": ReplicationProperties_ZoneRedundancy_STATUS_Disabled, + "enabled": ReplicationProperties_ZoneRedundancy_STATUS_Enabled, +} + +func init() { + SchemeBuilder.Register(&RegistryReplication{}, &RegistryReplicationList{}) +} diff --git a/v2/api/containerregistry/v1api20230701/registry_replication_types_gen_test.go b/v2/api/containerregistry/v1api20230701/registry_replication_types_gen_test.go new file mode 100644 index 00000000000..d89277a1184 --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/registry_replication_types_gen_test.go @@ -0,0 +1,519 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v1api20230701 + +import ( + "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20230701/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_RegistryReplication_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 RegistryReplication to hub returns original", + prop.ForAll(RunResourceConversionTestForRegistryReplication, RegistryReplicationGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForRegistryReplication tests if a specific instance of RegistryReplication round trips to the hub storage version and back losslessly +func RunResourceConversionTestForRegistryReplication(subject RegistryReplication) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.RegistryReplication + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual RegistryReplication + 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_RegistryReplication_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from RegistryReplication to RegistryReplication via AssignProperties_To_RegistryReplication & AssignProperties_From_RegistryReplication returns original", + prop.ForAll(RunPropertyAssignmentTestForRegistryReplication, RegistryReplicationGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForRegistryReplication tests if a specific instance of RegistryReplication can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForRegistryReplication(subject RegistryReplication) 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.RegistryReplication + err := copied.AssignProperties_To_RegistryReplication(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual RegistryReplication + err = actual.AssignProperties_From_RegistryReplication(&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_RegistryReplication_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 RegistryReplication via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRegistryReplication, RegistryReplicationGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRegistryReplication runs a test to see if a specific instance of RegistryReplication round trips to JSON and back losslessly +func RunJSONSerializationTestForRegistryReplication(subject RegistryReplication) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual RegistryReplication + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of RegistryReplication instances for property testing - lazily instantiated by +// RegistryReplicationGenerator() +var registryReplicationGenerator gopter.Gen + +// RegistryReplicationGenerator returns a generator of RegistryReplication instances for property testing. +func RegistryReplicationGenerator() gopter.Gen { + if registryReplicationGenerator != nil { + return registryReplicationGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForRegistryReplication(generators) + registryReplicationGenerator = gen.Struct(reflect.TypeOf(RegistryReplication{}), generators) + + return registryReplicationGenerator +} + +// AddRelatedPropertyGeneratorsForRegistryReplication is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForRegistryReplication(gens map[string]gopter.Gen) { + gens["Spec"] = RegistryReplication_SpecGenerator() + gens["Status"] = RegistryReplication_STATUSGenerator() +} + +func Test_RegistryReplicationOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from RegistryReplicationOperatorSpec to RegistryReplicationOperatorSpec via AssignProperties_To_RegistryReplicationOperatorSpec & AssignProperties_From_RegistryReplicationOperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForRegistryReplicationOperatorSpec, RegistryReplicationOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForRegistryReplicationOperatorSpec tests if a specific instance of RegistryReplicationOperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForRegistryReplicationOperatorSpec(subject RegistryReplicationOperatorSpec) 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.RegistryReplicationOperatorSpec + err := copied.AssignProperties_To_RegistryReplicationOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual RegistryReplicationOperatorSpec + err = actual.AssignProperties_From_RegistryReplicationOperatorSpec(&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_RegistryReplicationOperatorSpec_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 RegistryReplicationOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRegistryReplicationOperatorSpec, RegistryReplicationOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRegistryReplicationOperatorSpec runs a test to see if a specific instance of RegistryReplicationOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForRegistryReplicationOperatorSpec(subject RegistryReplicationOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual RegistryReplicationOperatorSpec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of RegistryReplicationOperatorSpec instances for property testing - lazily instantiated by +// RegistryReplicationOperatorSpecGenerator() +var registryReplicationOperatorSpecGenerator gopter.Gen + +// RegistryReplicationOperatorSpecGenerator returns a generator of RegistryReplicationOperatorSpec instances for property testing. +func RegistryReplicationOperatorSpecGenerator() gopter.Gen { + if registryReplicationOperatorSpecGenerator != nil { + return registryReplicationOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + registryReplicationOperatorSpecGenerator = gen.Struct(reflect.TypeOf(RegistryReplicationOperatorSpec{}), generators) + + return registryReplicationOperatorSpecGenerator +} + +func Test_RegistryReplication_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from RegistryReplication_STATUS to RegistryReplication_STATUS via AssignProperties_To_RegistryReplication_STATUS & AssignProperties_From_RegistryReplication_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForRegistryReplication_STATUS, RegistryReplication_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForRegistryReplication_STATUS tests if a specific instance of RegistryReplication_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForRegistryReplication_STATUS(subject RegistryReplication_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.RegistryReplication_STATUS + err := copied.AssignProperties_To_RegistryReplication_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual RegistryReplication_STATUS + err = actual.AssignProperties_From_RegistryReplication_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_RegistryReplication_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 RegistryReplication_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRegistryReplication_STATUS, RegistryReplication_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRegistryReplication_STATUS runs a test to see if a specific instance of RegistryReplication_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForRegistryReplication_STATUS(subject RegistryReplication_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual RegistryReplication_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 RegistryReplication_STATUS instances for property testing - lazily instantiated by +// RegistryReplication_STATUSGenerator() +var registryReplication_STATUSGenerator gopter.Gen + +// RegistryReplication_STATUSGenerator returns a generator of RegistryReplication_STATUS instances for property testing. +// We first initialize registryReplication_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 RegistryReplication_STATUSGenerator() gopter.Gen { + if registryReplication_STATUSGenerator != nil { + return registryReplication_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistryReplication_STATUS(generators) + registryReplication_STATUSGenerator = gen.Struct(reflect.TypeOf(RegistryReplication_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistryReplication_STATUS(generators) + AddRelatedPropertyGeneratorsForRegistryReplication_STATUS(generators) + registryReplication_STATUSGenerator = gen.Struct(reflect.TypeOf(RegistryReplication_STATUS{}), generators) + + return registryReplication_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForRegistryReplication_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForRegistryReplication_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.OneConstOf( + ReplicationProperties_ProvisioningState_STATUS_Canceled, + ReplicationProperties_ProvisioningState_STATUS_Creating, + ReplicationProperties_ProvisioningState_STATUS_Deleting, + ReplicationProperties_ProvisioningState_STATUS_Failed, + ReplicationProperties_ProvisioningState_STATUS_Succeeded, + ReplicationProperties_ProvisioningState_STATUS_Updating)) + gens["RegionEndpointEnabled"] = gen.PtrOf(gen.Bool()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) + gens["ZoneRedundancy"] = gen.PtrOf(gen.OneConstOf(ReplicationProperties_ZoneRedundancy_STATUS_Disabled, ReplicationProperties_ZoneRedundancy_STATUS_Enabled)) +} + +// AddRelatedPropertyGeneratorsForRegistryReplication_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForRegistryReplication_STATUS(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(Status_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_RegistryReplication_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from RegistryReplication_Spec to RegistryReplication_Spec via AssignProperties_To_RegistryReplication_Spec & AssignProperties_From_RegistryReplication_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForRegistryReplication_Spec, RegistryReplication_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForRegistryReplication_Spec tests if a specific instance of RegistryReplication_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForRegistryReplication_Spec(subject RegistryReplication_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.RegistryReplication_Spec + err := copied.AssignProperties_To_RegistryReplication_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual RegistryReplication_Spec + err = actual.AssignProperties_From_RegistryReplication_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_RegistryReplication_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 RegistryReplication_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRegistryReplication_Spec, RegistryReplication_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRegistryReplication_Spec runs a test to see if a specific instance of RegistryReplication_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForRegistryReplication_Spec(subject RegistryReplication_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual RegistryReplication_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 RegistryReplication_Spec instances for property testing - lazily instantiated by +// RegistryReplication_SpecGenerator() +var registryReplication_SpecGenerator gopter.Gen + +// RegistryReplication_SpecGenerator returns a generator of RegistryReplication_Spec instances for property testing. +// We first initialize registryReplication_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 RegistryReplication_SpecGenerator() gopter.Gen { + if registryReplication_SpecGenerator != nil { + return registryReplication_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistryReplication_Spec(generators) + registryReplication_SpecGenerator = gen.Struct(reflect.TypeOf(RegistryReplication_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistryReplication_Spec(generators) + AddRelatedPropertyGeneratorsForRegistryReplication_Spec(generators) + registryReplication_SpecGenerator = gen.Struct(reflect.TypeOf(RegistryReplication_Spec{}), generators) + + return registryReplication_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForRegistryReplication_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForRegistryReplication_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["RegionEndpointEnabled"] = gen.PtrOf(gen.Bool()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["ZoneRedundancy"] = gen.PtrOf(gen.OneConstOf(ReplicationProperties_ZoneRedundancy_Disabled, ReplicationProperties_ZoneRedundancy_Enabled)) +} + +// AddRelatedPropertyGeneratorsForRegistryReplication_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForRegistryReplication_Spec(gens map[string]gopter.Gen) { + gens["OperatorSpec"] = gen.PtrOf(RegistryReplicationOperatorSpecGenerator()) +} diff --git a/v2/api/containerregistry/v1api20230701/registry_types_gen.go b/v2/api/containerregistry/v1api20230701/registry_types_gen.go new file mode 100644 index 00000000000..049abbcd95f --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/registry_types_gen.go @@ -0,0 +1,5778 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v1api20230701 + +import ( + "fmt" + arm "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20230701/arm" + storage "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20230701/storage" + "github.com/Azure/azure-service-operator/v2/internal/reflecthelpers" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/conditions" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/configmaps" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/core" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/secrets" + "github.com/rotisserie/eris" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + "sigs.k8s.io/controller-runtime/pkg/conversion" + "sigs.k8s.io/controller-runtime/pkg/webhook/admission" +) + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="Severity",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].severity" +// +kubebuilder:printcolumn:name="Reason",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].reason" +// +kubebuilder:printcolumn:name="Message",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].message" +// Generator information: +// - Generated from: /containerregistry/resource-manager/Microsoft.ContainerRegistry/stable/2023-07-01/containerregistry.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName} +type Registry struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec Registry_Spec `json:"spec,omitempty"` + Status Registry_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &Registry{} + +// GetConditions returns the conditions of the resource +func (registry *Registry) GetConditions() conditions.Conditions { + return registry.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (registry *Registry) SetConditions(conditions conditions.Conditions) { + registry.Status.Conditions = conditions +} + +var _ conversion.Convertible = &Registry{} + +// ConvertFrom populates our Registry from the provided hub Registry +func (registry *Registry) ConvertFrom(hub conversion.Hub) error { + source, ok := hub.(*storage.Registry) + if !ok { + return fmt.Errorf("expected containerregistry/v1api20230701/storage/Registry but received %T instead", hub) + } + + return registry.AssignProperties_From_Registry(source) +} + +// ConvertTo populates the provided hub Registry from our Registry +func (registry *Registry) ConvertTo(hub conversion.Hub) error { + destination, ok := hub.(*storage.Registry) + if !ok { + return fmt.Errorf("expected containerregistry/v1api20230701/storage/Registry but received %T instead", hub) + } + + return registry.AssignProperties_To_Registry(destination) +} + +// +kubebuilder:webhook:path=/mutate-containerregistry-azure-com-v1api20230701-registry,mutating=true,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=containerregistry.azure.com,resources=registries,verbs=create;update,versions=v1api20230701,name=default.v1api20230701.registries.containerregistry.azure.com,admissionReviewVersions=v1 + +var _ admission.Defaulter = &Registry{} + +// Default applies defaults to the Registry resource +func (registry *Registry) Default() { + registry.defaultImpl() + var temp any = registry + if runtimeDefaulter, ok := temp.(genruntime.Defaulter); ok { + runtimeDefaulter.CustomDefault() + } +} + +// defaultAzureName defaults the Azure name of the resource to the Kubernetes name +func (registry *Registry) defaultAzureName() { + if registry.Spec.AzureName == "" { + registry.Spec.AzureName = registry.Name + } +} + +// defaultImpl applies the code generated defaults to the Registry resource +func (registry *Registry) defaultImpl() { registry.defaultAzureName() } + +var _ configmaps.Exporter = &Registry{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (registry *Registry) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if registry.Spec.OperatorSpec == nil { + return nil + } + return registry.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &Registry{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (registry *Registry) SecretDestinationExpressions() []*core.DestinationExpression { + if registry.Spec.OperatorSpec == nil { + return nil + } + return registry.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.ImportableResource = &Registry{} + +// InitializeSpec initializes the spec for this resource from the given status +func (registry *Registry) InitializeSpec(status genruntime.ConvertibleStatus) error { + if s, ok := status.(*Registry_STATUS); ok { + return registry.Spec.Initialize_From_Registry_STATUS(s) + } + + return fmt.Errorf("expected Status of type Registry_STATUS but received %T instead", status) +} + +var _ genruntime.KubernetesResource = &Registry{} + +// AzureName returns the Azure name of the resource +func (registry *Registry) AzureName() string { + return registry.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2023-07-01" +func (registry Registry) GetAPIVersion() string { + return "2023-07-01" +} + +// GetResourceScope returns the scope of the resource +func (registry *Registry) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (registry *Registry) GetSpec() genruntime.ConvertibleSpec { + return ®istry.Spec +} + +// GetStatus returns the status of this resource +func (registry *Registry) GetStatus() genruntime.ConvertibleStatus { + return ®istry.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (registry *Registry) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.ContainerRegistry/registries" +func (registry *Registry) GetType() string { + return "Microsoft.ContainerRegistry/registries" +} + +// NewEmptyStatus returns a new empty (blank) status +func (registry *Registry) NewEmptyStatus() genruntime.ConvertibleStatus { + return &Registry_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (registry *Registry) Owner() *genruntime.ResourceReference { + if registry.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(registry.Spec) + return registry.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (registry *Registry) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*Registry_STATUS); ok { + registry.Status = *st + return nil + } + + // Convert status to required version + var st Registry_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + registry.Status = st + return nil +} + +// +kubebuilder:webhook:path=/validate-containerregistry-azure-com-v1api20230701-registry,mutating=false,sideEffects=None,matchPolicy=Exact,failurePolicy=fail,groups=containerregistry.azure.com,resources=registries,verbs=create;update,versions=v1api20230701,name=validate.v1api20230701.registries.containerregistry.azure.com,admissionReviewVersions=v1 + +var _ admission.Validator = &Registry{} + +// ValidateCreate validates the creation of the resource +func (registry *Registry) ValidateCreate() (admission.Warnings, error) { + validations := registry.createValidations() + var temp any = registry + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.CreateValidations()...) + } + return genruntime.ValidateCreate(validations) +} + +// ValidateDelete validates the deletion of the resource +func (registry *Registry) ValidateDelete() (admission.Warnings, error) { + validations := registry.deleteValidations() + var temp any = registry + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.DeleteValidations()...) + } + return genruntime.ValidateDelete(validations) +} + +// ValidateUpdate validates an update of the resource +func (registry *Registry) ValidateUpdate(old runtime.Object) (admission.Warnings, error) { + validations := registry.updateValidations() + var temp any = registry + if runtimeValidator, ok := temp.(genruntime.Validator); ok { + validations = append(validations, runtimeValidator.UpdateValidations()...) + } + return genruntime.ValidateUpdate(old, validations) +} + +// createValidations validates the creation of the resource +func (registry *Registry) createValidations() []func() (admission.Warnings, error) { + return []func() (admission.Warnings, error){registry.validateResourceReferences, registry.validateOwnerReference, registry.validateSecretDestinations, registry.validateConfigMapDestinations, registry.validateOptionalConfigMapReferences} +} + +// deleteValidations validates the deletion of the resource +func (registry *Registry) deleteValidations() []func() (admission.Warnings, error) { + return nil +} + +// updateValidations validates the update of the resource +func (registry *Registry) updateValidations() []func(old runtime.Object) (admission.Warnings, error) { + return []func(old runtime.Object) (admission.Warnings, error){ + func(old runtime.Object) (admission.Warnings, error) { + return registry.validateResourceReferences() + }, + registry.validateWriteOnceProperties, + func(old runtime.Object) (admission.Warnings, error) { + return registry.validateOwnerReference() + }, + func(old runtime.Object) (admission.Warnings, error) { + return registry.validateSecretDestinations() + }, + func(old runtime.Object) (admission.Warnings, error) { + return registry.validateConfigMapDestinations() + }, + func(old runtime.Object) (admission.Warnings, error) { + return registry.validateOptionalConfigMapReferences() + }, + } +} + +// validateConfigMapDestinations validates there are no colliding genruntime.ConfigMapDestinations +func (registry *Registry) validateConfigMapDestinations() (admission.Warnings, error) { + if registry.Spec.OperatorSpec == nil { + return nil, nil + } + return configmaps.ValidateDestinations(registry, nil, registry.Spec.OperatorSpec.ConfigMapExpressions) +} + +// validateOptionalConfigMapReferences validates all optional configmap reference pairs to ensure that at most 1 is set +func (registry *Registry) validateOptionalConfigMapReferences() (admission.Warnings, error) { + refs, err := reflecthelpers.FindOptionalConfigMapReferences(®istry.Spec) + if err != nil { + return nil, err + } + return configmaps.ValidateOptionalReferences(refs) +} + +// validateOwnerReference validates the owner field +func (registry *Registry) validateOwnerReference() (admission.Warnings, error) { + return genruntime.ValidateOwner(registry) +} + +// validateResourceReferences validates all resource references +func (registry *Registry) validateResourceReferences() (admission.Warnings, error) { + refs, err := reflecthelpers.FindResourceReferences(®istry.Spec) + if err != nil { + return nil, err + } + return genruntime.ValidateResourceReferences(refs) +} + +// validateSecretDestinations validates there are no colliding genruntime.SecretDestination's +func (registry *Registry) validateSecretDestinations() (admission.Warnings, error) { + if registry.Spec.OperatorSpec == nil { + return nil, nil + } + return secrets.ValidateDestinations(registry, nil, registry.Spec.OperatorSpec.SecretExpressions) +} + +// validateWriteOnceProperties validates all WriteOnce properties +func (registry *Registry) validateWriteOnceProperties(old runtime.Object) (admission.Warnings, error) { + oldObj, ok := old.(*Registry) + if !ok { + return nil, nil + } + + return genruntime.ValidateWriteOnceProperties(oldObj, registry) +} + +// AssignProperties_From_Registry populates our Registry from the provided source Registry +func (registry *Registry) AssignProperties_From_Registry(source *storage.Registry) error { + + // ObjectMeta + registry.ObjectMeta = *source.ObjectMeta.DeepCopy() + + // Spec + var spec Registry_Spec + err := spec.AssignProperties_From_Registry_Spec(&source.Spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Registry_Spec() to populate field Spec") + } + registry.Spec = spec + + // Status + var status Registry_STATUS + err = status.AssignProperties_From_Registry_STATUS(&source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Registry_STATUS() to populate field Status") + } + registry.Status = status + + // No error + return nil +} + +// AssignProperties_To_Registry populates the provided destination Registry from our Registry +func (registry *Registry) AssignProperties_To_Registry(destination *storage.Registry) error { + + // ObjectMeta + destination.ObjectMeta = *registry.ObjectMeta.DeepCopy() + + // Spec + var spec storage.Registry_Spec + err := registry.Spec.AssignProperties_To_Registry_Spec(&spec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Registry_Spec() to populate field Spec") + } + destination.Spec = spec + + // Status + var status storage.Registry_STATUS + err = registry.Status.AssignProperties_To_Registry_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Registry_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 (registry *Registry) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: registry.Spec.OriginalVersion(), + Kind: "Registry", + } +} + +// +kubebuilder:object:root=true +// Generator information: +// - Generated from: /containerregistry/resource-manager/Microsoft.ContainerRegistry/stable/2023-07-01/containerregistry.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName} +type RegistryList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Registry `json:"items"` +} + +// +kubebuilder:validation:Enum={"2023-07-01"} +type APIVersion string + +const APIVersion_Value = APIVersion("2023-07-01") + +type Registry_Spec struct { + // AdminUserEnabled: The value that indicates whether the admin user is enabled. + AdminUserEnabled *bool `json:"adminUserEnabled,omitempty"` + + // +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"` + + // DataEndpointEnabled: Enable a single data endpoint per region for serving data. + DataEndpointEnabled *bool `json:"dataEndpointEnabled,omitempty"` + + // Encryption: The encryption settings of container registry. + Encryption *EncryptionProperty `json:"encryption,omitempty"` + + // Identity: The identity of the container registry. + Identity *IdentityProperties `json:"identity,omitempty"` + + // +kubebuilder:validation:Required + // Location: The location of the resource. This cannot be changed after the resource is created. + Location *string `json:"location,omitempty"` + + // NetworkRuleBypassOptions: Whether to allow trusted Azure services to access a network restricted registry. + NetworkRuleBypassOptions *RegistryProperties_NetworkRuleBypassOptions `json:"networkRuleBypassOptions,omitempty"` + + // NetworkRuleSet: The network rule set for a container registry. + NetworkRuleSet *NetworkRuleSet `json:"networkRuleSet,omitempty"` + + // OperatorSpec: The specification for configuring operator behavior. This field is interpreted by the operator and not + // passed directly to Azure + OperatorSpec *RegistryOperatorSpec `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"` + + // Policies: The policies for a container registry. + Policies *Policies `json:"policies,omitempty"` + + // PublicNetworkAccess: Whether or not public network access is allowed for the container registry. + PublicNetworkAccess *RegistryProperties_PublicNetworkAccess `json:"publicNetworkAccess,omitempty"` + + // +kubebuilder:validation:Required + // Sku: The SKU of the container registry. + Sku *Sku `json:"sku,omitempty"` + + // Tags: The tags of the resource. + Tags map[string]string `json:"tags,omitempty"` + + // ZoneRedundancy: Whether or not zone redundancy is enabled for this container registry + ZoneRedundancy *RegistryProperties_ZoneRedundancy `json:"zoneRedundancy,omitempty"` +} + +var _ genruntime.ARMTransformer = &Registry_Spec{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (registry *Registry_Spec) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if registry == nil { + return nil, nil + } + result := &arm.Registry_Spec{} + + // Set property "Identity": + if registry.Identity != nil { + identity_ARM, err := (*registry.Identity).ConvertToARM(resolved) + if err != nil { + return nil, err + } + identity := *identity_ARM.(*arm.IdentityProperties) + result.Identity = &identity + } + + // Set property "Location": + if registry.Location != nil { + location := *registry.Location + result.Location = &location + } + + // Set property "Name": + result.Name = resolved.Name + + // Set property "Properties": + if registry.AdminUserEnabled != nil || + registry.DataEndpointEnabled != nil || + registry.Encryption != nil || + registry.NetworkRuleBypassOptions != nil || + registry.NetworkRuleSet != nil || + registry.Policies != nil || + registry.PublicNetworkAccess != nil || + registry.ZoneRedundancy != nil { + result.Properties = &arm.RegistryProperties{} + } + if registry.AdminUserEnabled != nil { + adminUserEnabled := *registry.AdminUserEnabled + result.Properties.AdminUserEnabled = &adminUserEnabled + } + if registry.DataEndpointEnabled != nil { + dataEndpointEnabled := *registry.DataEndpointEnabled + result.Properties.DataEndpointEnabled = &dataEndpointEnabled + } + if registry.Encryption != nil { + encryption_ARM, err := (*registry.Encryption).ConvertToARM(resolved) + if err != nil { + return nil, err + } + encryption := *encryption_ARM.(*arm.EncryptionProperty) + result.Properties.Encryption = &encryption + } + if registry.NetworkRuleBypassOptions != nil { + var temp string + temp = string(*registry.NetworkRuleBypassOptions) + networkRuleBypassOptions := arm.RegistryProperties_NetworkRuleBypassOptions(temp) + result.Properties.NetworkRuleBypassOptions = &networkRuleBypassOptions + } + if registry.NetworkRuleSet != nil { + networkRuleSet_ARM, err := (*registry.NetworkRuleSet).ConvertToARM(resolved) + if err != nil { + return nil, err + } + networkRuleSet := *networkRuleSet_ARM.(*arm.NetworkRuleSet) + result.Properties.NetworkRuleSet = &networkRuleSet + } + if registry.Policies != nil { + policies_ARM, err := (*registry.Policies).ConvertToARM(resolved) + if err != nil { + return nil, err + } + policies := *policies_ARM.(*arm.Policies) + result.Properties.Policies = &policies + } + if registry.PublicNetworkAccess != nil { + var temp string + temp = string(*registry.PublicNetworkAccess) + publicNetworkAccess := arm.RegistryProperties_PublicNetworkAccess(temp) + result.Properties.PublicNetworkAccess = &publicNetworkAccess + } + if registry.ZoneRedundancy != nil { + var temp string + temp = string(*registry.ZoneRedundancy) + zoneRedundancy := arm.RegistryProperties_ZoneRedundancy(temp) + result.Properties.ZoneRedundancy = &zoneRedundancy + } + + // Set property "Sku": + if registry.Sku != nil { + sku_ARM, err := (*registry.Sku).ConvertToARM(resolved) + if err != nil { + return nil, err + } + sku := *sku_ARM.(*arm.Sku) + result.Sku = &sku + } + + // Set property "Tags": + if registry.Tags != nil { + result.Tags = make(map[string]string, len(registry.Tags)) + for key, value := range registry.Tags { + result.Tags[key] = value + } + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (registry *Registry_Spec) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.Registry_Spec{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (registry *Registry_Spec) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.Registry_Spec) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.Registry_Spec, got %T", armInput) + } + + // Set property "AdminUserEnabled": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.AdminUserEnabled != nil { + adminUserEnabled := *typedInput.Properties.AdminUserEnabled + registry.AdminUserEnabled = &adminUserEnabled + } + } + + // Set property "AzureName": + registry.SetAzureName(genruntime.ExtractKubernetesResourceNameFromARMName(typedInput.Name)) + + // Set property "DataEndpointEnabled": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.DataEndpointEnabled != nil { + dataEndpointEnabled := *typedInput.Properties.DataEndpointEnabled + registry.DataEndpointEnabled = &dataEndpointEnabled + } + } + + // Set property "Encryption": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Encryption != nil { + var encryption1 EncryptionProperty + err := encryption1.PopulateFromARM(owner, *typedInput.Properties.Encryption) + if err != nil { + return err + } + encryption := encryption1 + registry.Encryption = &encryption + } + } + + // Set property "Identity": + if typedInput.Identity != nil { + var identity1 IdentityProperties + err := identity1.PopulateFromARM(owner, *typedInput.Identity) + if err != nil { + return err + } + identity := identity1 + registry.Identity = &identity + } + + // Set property "Location": + if typedInput.Location != nil { + location := *typedInput.Location + registry.Location = &location + } + + // Set property "NetworkRuleBypassOptions": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.NetworkRuleBypassOptions != nil { + var temp string + temp = string(*typedInput.Properties.NetworkRuleBypassOptions) + networkRuleBypassOptions := RegistryProperties_NetworkRuleBypassOptions(temp) + registry.NetworkRuleBypassOptions = &networkRuleBypassOptions + } + } + + // Set property "NetworkRuleSet": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.NetworkRuleSet != nil { + var networkRuleSet1 NetworkRuleSet + err := networkRuleSet1.PopulateFromARM(owner, *typedInput.Properties.NetworkRuleSet) + if err != nil { + return err + } + networkRuleSet := networkRuleSet1 + registry.NetworkRuleSet = &networkRuleSet + } + } + + // no assignment for property "OperatorSpec" + + // Set property "Owner": + registry.Owner = &genruntime.KnownResourceReference{ + Name: owner.Name, + ARMID: owner.ARMID, + } + + // Set property "Policies": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Policies != nil { + var policies1 Policies + err := policies1.PopulateFromARM(owner, *typedInput.Properties.Policies) + if err != nil { + return err + } + policies := policies1 + registry.Policies = &policies + } + } + + // Set property "PublicNetworkAccess": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.PublicNetworkAccess != nil { + var temp string + temp = string(*typedInput.Properties.PublicNetworkAccess) + publicNetworkAccess := RegistryProperties_PublicNetworkAccess(temp) + registry.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 + registry.Sku = &sku + } + + // Set property "Tags": + if typedInput.Tags != nil { + registry.Tags = make(map[string]string, len(typedInput.Tags)) + for key, value := range typedInput.Tags { + registry.Tags[key] = value + } + } + + // Set property "ZoneRedundancy": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ZoneRedundancy != nil { + var temp string + temp = string(*typedInput.Properties.ZoneRedundancy) + zoneRedundancy := RegistryProperties_ZoneRedundancy(temp) + registry.ZoneRedundancy = &zoneRedundancy + } + } + + // No error + return nil +} + +var _ genruntime.ConvertibleSpec = &Registry_Spec{} + +// ConvertSpecFrom populates our Registry_Spec from the provided source +func (registry *Registry_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + src, ok := source.(*storage.Registry_Spec) + if ok { + // Populate our instance from source + return registry.AssignProperties_From_Registry_Spec(src) + } + + // Convert to an intermediate form + src = &storage.Registry_Spec{} + err := src.ConvertSpecFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertSpecFrom()") + } + + // Update our instance from src + err = registry.AssignProperties_From_Registry_Spec(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertSpecFrom()") + } + + return nil +} + +// ConvertSpecTo populates the provided destination from our Registry_Spec +func (registry *Registry_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + dst, ok := destination.(*storage.Registry_Spec) + if ok { + // Populate destination from our instance + return registry.AssignProperties_To_Registry_Spec(dst) + } + + // Convert to an intermediate form + dst = &storage.Registry_Spec{} + err := registry.AssignProperties_To_Registry_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_Registry_Spec populates our Registry_Spec from the provided source Registry_Spec +func (registry *Registry_Spec) AssignProperties_From_Registry_Spec(source *storage.Registry_Spec) error { + + // AdminUserEnabled + if source.AdminUserEnabled != nil { + adminUserEnabled := *source.AdminUserEnabled + registry.AdminUserEnabled = &adminUserEnabled + } else { + registry.AdminUserEnabled = nil + } + + // AzureName + registry.AzureName = source.AzureName + + // DataEndpointEnabled + if source.DataEndpointEnabled != nil { + dataEndpointEnabled := *source.DataEndpointEnabled + registry.DataEndpointEnabled = &dataEndpointEnabled + } else { + registry.DataEndpointEnabled = nil + } + + // Encryption + if source.Encryption != nil { + var encryption EncryptionProperty + err := encryption.AssignProperties_From_EncryptionProperty(source.Encryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_EncryptionProperty() to populate field Encryption") + } + registry.Encryption = &encryption + } else { + registry.Encryption = nil + } + + // Identity + if source.Identity != nil { + var identity IdentityProperties + err := identity.AssignProperties_From_IdentityProperties(source.Identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_IdentityProperties() to populate field Identity") + } + registry.Identity = &identity + } else { + registry.Identity = nil + } + + // Location + registry.Location = genruntime.ClonePointerToString(source.Location) + + // NetworkRuleBypassOptions + if source.NetworkRuleBypassOptions != nil { + networkRuleBypassOption := *source.NetworkRuleBypassOptions + networkRuleBypassOptionTemp := genruntime.ToEnum(networkRuleBypassOption, registryProperties_NetworkRuleBypassOptions_Values) + registry.NetworkRuleBypassOptions = &networkRuleBypassOptionTemp + } else { + registry.NetworkRuleBypassOptions = nil + } + + // NetworkRuleSet + if source.NetworkRuleSet != nil { + var networkRuleSet NetworkRuleSet + err := networkRuleSet.AssignProperties_From_NetworkRuleSet(source.NetworkRuleSet) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_NetworkRuleSet() to populate field NetworkRuleSet") + } + registry.NetworkRuleSet = &networkRuleSet + } else { + registry.NetworkRuleSet = nil + } + + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec RegistryOperatorSpec + err := operatorSpec.AssignProperties_From_RegistryOperatorSpec(source.OperatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_RegistryOperatorSpec() to populate field OperatorSpec") + } + registry.OperatorSpec = &operatorSpec + } else { + registry.OperatorSpec = nil + } + + // Owner + if source.Owner != nil { + owner := source.Owner.Copy() + registry.Owner = &owner + } else { + registry.Owner = nil + } + + // Policies + if source.Policies != nil { + var policy Policies + err := policy.AssignProperties_From_Policies(source.Policies) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Policies() to populate field Policies") + } + registry.Policies = &policy + } else { + registry.Policies = nil + } + + // PublicNetworkAccess + if source.PublicNetworkAccess != nil { + publicNetworkAccess := *source.PublicNetworkAccess + publicNetworkAccessTemp := genruntime.ToEnum(publicNetworkAccess, registryProperties_PublicNetworkAccess_Values) + registry.PublicNetworkAccess = &publicNetworkAccessTemp + } else { + registry.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") + } + registry.Sku = &sku + } else { + registry.Sku = nil + } + + // Tags + registry.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // ZoneRedundancy + if source.ZoneRedundancy != nil { + zoneRedundancy := *source.ZoneRedundancy + zoneRedundancyTemp := genruntime.ToEnum(zoneRedundancy, registryProperties_ZoneRedundancy_Values) + registry.ZoneRedundancy = &zoneRedundancyTemp + } else { + registry.ZoneRedundancy = nil + } + + // No error + return nil +} + +// AssignProperties_To_Registry_Spec populates the provided destination Registry_Spec from our Registry_Spec +func (registry *Registry_Spec) AssignProperties_To_Registry_Spec(destination *storage.Registry_Spec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AdminUserEnabled + if registry.AdminUserEnabled != nil { + adminUserEnabled := *registry.AdminUserEnabled + destination.AdminUserEnabled = &adminUserEnabled + } else { + destination.AdminUserEnabled = nil + } + + // AzureName + destination.AzureName = registry.AzureName + + // DataEndpointEnabled + if registry.DataEndpointEnabled != nil { + dataEndpointEnabled := *registry.DataEndpointEnabled + destination.DataEndpointEnabled = &dataEndpointEnabled + } else { + destination.DataEndpointEnabled = nil + } + + // Encryption + if registry.Encryption != nil { + var encryption storage.EncryptionProperty + err := registry.Encryption.AssignProperties_To_EncryptionProperty(&encryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_EncryptionProperty() to populate field Encryption") + } + destination.Encryption = &encryption + } else { + destination.Encryption = nil + } + + // Identity + if registry.Identity != nil { + var identity storage.IdentityProperties + err := registry.Identity.AssignProperties_To_IdentityProperties(&identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_IdentityProperties() to populate field Identity") + } + destination.Identity = &identity + } else { + destination.Identity = nil + } + + // Location + destination.Location = genruntime.ClonePointerToString(registry.Location) + + // NetworkRuleBypassOptions + if registry.NetworkRuleBypassOptions != nil { + networkRuleBypassOption := string(*registry.NetworkRuleBypassOptions) + destination.NetworkRuleBypassOptions = &networkRuleBypassOption + } else { + destination.NetworkRuleBypassOptions = nil + } + + // NetworkRuleSet + if registry.NetworkRuleSet != nil { + var networkRuleSet storage.NetworkRuleSet + err := registry.NetworkRuleSet.AssignProperties_To_NetworkRuleSet(&networkRuleSet) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_NetworkRuleSet() to populate field NetworkRuleSet") + } + destination.NetworkRuleSet = &networkRuleSet + } else { + destination.NetworkRuleSet = nil + } + + // OperatorSpec + if registry.OperatorSpec != nil { + var operatorSpec storage.RegistryOperatorSpec + err := registry.OperatorSpec.AssignProperties_To_RegistryOperatorSpec(&operatorSpec) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_RegistryOperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + + // OriginalVersion + destination.OriginalVersion = registry.OriginalVersion() + + // Owner + if registry.Owner != nil { + owner := registry.Owner.Copy() + destination.Owner = &owner + } else { + destination.Owner = nil + } + + // Policies + if registry.Policies != nil { + var policy storage.Policies + err := registry.Policies.AssignProperties_To_Policies(&policy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Policies() to populate field Policies") + } + destination.Policies = &policy + } else { + destination.Policies = nil + } + + // PublicNetworkAccess + if registry.PublicNetworkAccess != nil { + publicNetworkAccess := string(*registry.PublicNetworkAccess) + destination.PublicNetworkAccess = &publicNetworkAccess + } else { + destination.PublicNetworkAccess = nil + } + + // Sku + if registry.Sku != nil { + var sku storage.Sku + err := registry.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 + } + + // Tags + destination.Tags = genruntime.CloneMapOfStringToString(registry.Tags) + + // ZoneRedundancy + if registry.ZoneRedundancy != nil { + zoneRedundancy := string(*registry.ZoneRedundancy) + destination.ZoneRedundancy = &zoneRedundancy + } else { + destination.ZoneRedundancy = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_Registry_STATUS populates our Registry_Spec from the provided source Registry_STATUS +func (registry *Registry_Spec) Initialize_From_Registry_STATUS(source *Registry_STATUS) error { + + // AdminUserEnabled + if source.AdminUserEnabled != nil { + adminUserEnabled := *source.AdminUserEnabled + registry.AdminUserEnabled = &adminUserEnabled + } else { + registry.AdminUserEnabled = nil + } + + // DataEndpointEnabled + if source.DataEndpointEnabled != nil { + dataEndpointEnabled := *source.DataEndpointEnabled + registry.DataEndpointEnabled = &dataEndpointEnabled + } else { + registry.DataEndpointEnabled = nil + } + + // Encryption + if source.Encryption != nil { + var encryption EncryptionProperty + err := encryption.Initialize_From_EncryptionProperty_STATUS(source.Encryption) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_EncryptionProperty_STATUS() to populate field Encryption") + } + registry.Encryption = &encryption + } else { + registry.Encryption = nil + } + + // Identity + if source.Identity != nil { + var identity IdentityProperties + err := identity.Initialize_From_IdentityProperties_STATUS(source.Identity) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_IdentityProperties_STATUS() to populate field Identity") + } + registry.Identity = &identity + } else { + registry.Identity = nil + } + + // Location + registry.Location = genruntime.ClonePointerToString(source.Location) + + // NetworkRuleBypassOptions + if source.NetworkRuleBypassOptions != nil { + networkRuleBypassOption := genruntime.ToEnum(string(*source.NetworkRuleBypassOptions), registryProperties_NetworkRuleBypassOptions_Values) + registry.NetworkRuleBypassOptions = &networkRuleBypassOption + } else { + registry.NetworkRuleBypassOptions = nil + } + + // NetworkRuleSet + if source.NetworkRuleSet != nil { + var networkRuleSet NetworkRuleSet + err := networkRuleSet.Initialize_From_NetworkRuleSet_STATUS(source.NetworkRuleSet) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_NetworkRuleSet_STATUS() to populate field NetworkRuleSet") + } + registry.NetworkRuleSet = &networkRuleSet + } else { + registry.NetworkRuleSet = nil + } + + // Policies + if source.Policies != nil { + var policy Policies + err := policy.Initialize_From_Policies_STATUS(source.Policies) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_Policies_STATUS() to populate field Policies") + } + registry.Policies = &policy + } else { + registry.Policies = nil + } + + // PublicNetworkAccess + if source.PublicNetworkAccess != nil { + publicNetworkAccess := genruntime.ToEnum(string(*source.PublicNetworkAccess), registryProperties_PublicNetworkAccess_Values) + registry.PublicNetworkAccess = &publicNetworkAccess + } else { + registry.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") + } + registry.Sku = &sku + } else { + registry.Sku = nil + } + + // Tags + registry.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // ZoneRedundancy + if source.ZoneRedundancy != nil { + zoneRedundancy := genruntime.ToEnum(string(*source.ZoneRedundancy), registryProperties_ZoneRedundancy_Values) + registry.ZoneRedundancy = &zoneRedundancy + } else { + registry.ZoneRedundancy = nil + } + + // No error + return nil +} + +// OriginalVersion returns the original API version used to create the resource. +func (registry *Registry_Spec) OriginalVersion() string { + return GroupVersion.Version +} + +// SetAzureName sets the Azure name of the resource +func (registry *Registry_Spec) SetAzureName(azureName string) { registry.AzureName = azureName } + +// An object that represents a container registry. +type Registry_STATUS struct { + // AdminUserEnabled: The value that indicates whether the admin user is enabled. + AdminUserEnabled *bool `json:"adminUserEnabled,omitempty"` + + // Conditions: The observed state of the resource + Conditions []conditions.Condition `json:"conditions,omitempty"` + + // CreationDate: The creation date of the container registry in ISO8601 format. + CreationDate *string `json:"creationDate,omitempty"` + + // DataEndpointEnabled: Enable a single data endpoint per region for serving data. + DataEndpointEnabled *bool `json:"dataEndpointEnabled,omitempty"` + + // DataEndpointHostNames: List of host names that will serve data when dataEndpointEnabled is true. + DataEndpointHostNames []string `json:"dataEndpointHostNames,omitempty"` + + // Encryption: The encryption settings of container registry. + Encryption *EncryptionProperty_STATUS `json:"encryption,omitempty"` + + // Id: The resource ID. + Id *string `json:"id,omitempty"` + + // Identity: The identity of the container registry. + Identity *IdentityProperties_STATUS `json:"identity,omitempty"` + + // Location: The location of the resource. This cannot be changed after the resource is created. + Location *string `json:"location,omitempty"` + + // LoginServer: The URL that can be used to log into the container registry. + LoginServer *string `json:"loginServer,omitempty"` + + // Name: The name of the resource. + Name *string `json:"name,omitempty"` + + // NetworkRuleBypassOptions: Whether to allow trusted Azure services to access a network restricted registry. + NetworkRuleBypassOptions *RegistryProperties_NetworkRuleBypassOptions_STATUS `json:"networkRuleBypassOptions,omitempty"` + + // NetworkRuleSet: The network rule set for a container registry. + NetworkRuleSet *NetworkRuleSet_STATUS `json:"networkRuleSet,omitempty"` + + // Policies: The policies for a container registry. + Policies *Policies_STATUS `json:"policies,omitempty"` + + // PrivateEndpointConnections: List of private endpoint connections for a container registry. + PrivateEndpointConnections []PrivateEndpointConnection_STATUS `json:"privateEndpointConnections,omitempty"` + + // ProvisioningState: The provisioning state of the container registry at the time the operation was called. + ProvisioningState *RegistryProperties_ProvisioningState_STATUS `json:"provisioningState,omitempty"` + + // PublicNetworkAccess: Whether or not public network access is allowed for the container registry. + PublicNetworkAccess *RegistryProperties_PublicNetworkAccess_STATUS `json:"publicNetworkAccess,omitempty"` + + // Sku: The SKU of the container registry. + Sku *Sku_STATUS `json:"sku,omitempty"` + + // Status: The status of the container registry at the time the operation was called. + Status *Status_STATUS `json:"status,omitempty"` + + // SystemData: Metadata pertaining to creation and last modification of the resource. + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + + // Tags: The tags of the resource. + Tags map[string]string `json:"tags,omitempty"` + + // Type: The type of the resource. + Type *string `json:"type,omitempty"` + + // ZoneRedundancy: Whether or not zone redundancy is enabled for this container registry + ZoneRedundancy *RegistryProperties_ZoneRedundancy_STATUS `json:"zoneRedundancy,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &Registry_STATUS{} + +// ConvertStatusFrom populates our Registry_STATUS from the provided source +func (registry *Registry_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + src, ok := source.(*storage.Registry_STATUS) + if ok { + // Populate our instance from source + return registry.AssignProperties_From_Registry_STATUS(src) + } + + // Convert to an intermediate form + src = &storage.Registry_STATUS{} + err := src.ConvertStatusFrom(source) + if err != nil { + return eris.Wrap(err, "initial step of conversion in ConvertStatusFrom()") + } + + // Update our instance from src + err = registry.AssignProperties_From_Registry_STATUS(src) + if err != nil { + return eris.Wrap(err, "final step of conversion in ConvertStatusFrom()") + } + + return nil +} + +// ConvertStatusTo populates the provided destination from our Registry_STATUS +func (registry *Registry_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + dst, ok := destination.(*storage.Registry_STATUS) + if ok { + // Populate destination from our instance + return registry.AssignProperties_To_Registry_STATUS(dst) + } + + // Convert to an intermediate form + dst = &storage.Registry_STATUS{} + err := registry.AssignProperties_To_Registry_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 = &Registry_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (registry *Registry_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.Registry_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (registry *Registry_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.Registry_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.Registry_STATUS, got %T", armInput) + } + + // Set property "AdminUserEnabled": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.AdminUserEnabled != nil { + adminUserEnabled := *typedInput.Properties.AdminUserEnabled + registry.AdminUserEnabled = &adminUserEnabled + } + } + + // no assignment for property "Conditions" + + // Set property "CreationDate": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.CreationDate != nil { + creationDate := *typedInput.Properties.CreationDate + registry.CreationDate = &creationDate + } + } + + // Set property "DataEndpointEnabled": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.DataEndpointEnabled != nil { + dataEndpointEnabled := *typedInput.Properties.DataEndpointEnabled + registry.DataEndpointEnabled = &dataEndpointEnabled + } + } + + // Set property "DataEndpointHostNames": + // copying flattened property: + if typedInput.Properties != nil { + for _, item := range typedInput.Properties.DataEndpointHostNames { + registry.DataEndpointHostNames = append(registry.DataEndpointHostNames, item) + } + } + + // Set property "Encryption": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Encryption != nil { + var encryption1 EncryptionProperty_STATUS + err := encryption1.PopulateFromARM(owner, *typedInput.Properties.Encryption) + if err != nil { + return err + } + encryption := encryption1 + registry.Encryption = &encryption + } + } + + // Set property "Id": + if typedInput.Id != nil { + id := *typedInput.Id + registry.Id = &id + } + + // Set property "Identity": + if typedInput.Identity != nil { + var identity1 IdentityProperties_STATUS + err := identity1.PopulateFromARM(owner, *typedInput.Identity) + if err != nil { + return err + } + identity := identity1 + registry.Identity = &identity + } + + // Set property "Location": + if typedInput.Location != nil { + location := *typedInput.Location + registry.Location = &location + } + + // Set property "LoginServer": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.LoginServer != nil { + loginServer := *typedInput.Properties.LoginServer + registry.LoginServer = &loginServer + } + } + + // Set property "Name": + if typedInput.Name != nil { + name := *typedInput.Name + registry.Name = &name + } + + // Set property "NetworkRuleBypassOptions": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.NetworkRuleBypassOptions != nil { + var temp string + temp = string(*typedInput.Properties.NetworkRuleBypassOptions) + networkRuleBypassOptions := RegistryProperties_NetworkRuleBypassOptions_STATUS(temp) + registry.NetworkRuleBypassOptions = &networkRuleBypassOptions + } + } + + // Set property "NetworkRuleSet": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.NetworkRuleSet != nil { + var networkRuleSet1 NetworkRuleSet_STATUS + err := networkRuleSet1.PopulateFromARM(owner, *typedInput.Properties.NetworkRuleSet) + if err != nil { + return err + } + networkRuleSet := networkRuleSet1 + registry.NetworkRuleSet = &networkRuleSet + } + } + + // Set property "Policies": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Policies != nil { + var policies1 Policies_STATUS + err := policies1.PopulateFromARM(owner, *typedInput.Properties.Policies) + if err != nil { + return err + } + policies := policies1 + registry.Policies = &policies + } + } + + // Set property "PrivateEndpointConnections": + // copying flattened property: + if typedInput.Properties != nil { + for _, item := range typedInput.Properties.PrivateEndpointConnections { + var item1 PrivateEndpointConnection_STATUS + err := item1.PopulateFromARM(owner, item) + if err != nil { + return err + } + registry.PrivateEndpointConnections = append(registry.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 := RegistryProperties_ProvisioningState_STATUS(temp) + registry.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 := RegistryProperties_PublicNetworkAccess_STATUS(temp) + registry.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 + registry.Sku = &sku + } + + // Set property "Status": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.Status != nil { + var status1 Status_STATUS + err := status1.PopulateFromARM(owner, *typedInput.Properties.Status) + if err != nil { + return err + } + status := status1 + registry.Status = &status + } + } + + // Set property "SystemData": + if typedInput.SystemData != nil { + var systemData1 SystemData_STATUS + err := systemData1.PopulateFromARM(owner, *typedInput.SystemData) + if err != nil { + return err + } + systemData := systemData1 + registry.SystemData = &systemData + } + + // Set property "Tags": + if typedInput.Tags != nil { + registry.Tags = make(map[string]string, len(typedInput.Tags)) + for key, value := range typedInput.Tags { + registry.Tags[key] = value + } + } + + // Set property "Type": + if typedInput.Type != nil { + typeVar := *typedInput.Type + registry.Type = &typeVar + } + + // Set property "ZoneRedundancy": + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.ZoneRedundancy != nil { + var temp string + temp = string(*typedInput.Properties.ZoneRedundancy) + zoneRedundancy := RegistryProperties_ZoneRedundancy_STATUS(temp) + registry.ZoneRedundancy = &zoneRedundancy + } + } + + // No error + return nil +} + +// AssignProperties_From_Registry_STATUS populates our Registry_STATUS from the provided source Registry_STATUS +func (registry *Registry_STATUS) AssignProperties_From_Registry_STATUS(source *storage.Registry_STATUS) error { + + // AdminUserEnabled + if source.AdminUserEnabled != nil { + adminUserEnabled := *source.AdminUserEnabled + registry.AdminUserEnabled = &adminUserEnabled + } else { + registry.AdminUserEnabled = nil + } + + // Conditions + registry.Conditions = genruntime.CloneSliceOfCondition(source.Conditions) + + // CreationDate + registry.CreationDate = genruntime.ClonePointerToString(source.CreationDate) + + // DataEndpointEnabled + if source.DataEndpointEnabled != nil { + dataEndpointEnabled := *source.DataEndpointEnabled + registry.DataEndpointEnabled = &dataEndpointEnabled + } else { + registry.DataEndpointEnabled = nil + } + + // DataEndpointHostNames + registry.DataEndpointHostNames = genruntime.CloneSliceOfString(source.DataEndpointHostNames) + + // Encryption + if source.Encryption != nil { + var encryption EncryptionProperty_STATUS + err := encryption.AssignProperties_From_EncryptionProperty_STATUS(source.Encryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_EncryptionProperty_STATUS() to populate field Encryption") + } + registry.Encryption = &encryption + } else { + registry.Encryption = nil + } + + // Id + registry.Id = genruntime.ClonePointerToString(source.Id) + + // Identity + if source.Identity != nil { + var identity IdentityProperties_STATUS + err := identity.AssignProperties_From_IdentityProperties_STATUS(source.Identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_IdentityProperties_STATUS() to populate field Identity") + } + registry.Identity = &identity + } else { + registry.Identity = nil + } + + // Location + registry.Location = genruntime.ClonePointerToString(source.Location) + + // LoginServer + registry.LoginServer = genruntime.ClonePointerToString(source.LoginServer) + + // Name + registry.Name = genruntime.ClonePointerToString(source.Name) + + // NetworkRuleBypassOptions + if source.NetworkRuleBypassOptions != nil { + networkRuleBypassOption := *source.NetworkRuleBypassOptions + networkRuleBypassOptionTemp := genruntime.ToEnum(networkRuleBypassOption, registryProperties_NetworkRuleBypassOptions_STATUS_Values) + registry.NetworkRuleBypassOptions = &networkRuleBypassOptionTemp + } else { + registry.NetworkRuleBypassOptions = nil + } + + // NetworkRuleSet + if source.NetworkRuleSet != nil { + var networkRuleSet NetworkRuleSet_STATUS + err := networkRuleSet.AssignProperties_From_NetworkRuleSet_STATUS(source.NetworkRuleSet) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_NetworkRuleSet_STATUS() to populate field NetworkRuleSet") + } + registry.NetworkRuleSet = &networkRuleSet + } else { + registry.NetworkRuleSet = nil + } + + // Policies + if source.Policies != nil { + var policy Policies_STATUS + err := policy.AssignProperties_From_Policies_STATUS(source.Policies) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Policies_STATUS() to populate field Policies") + } + registry.Policies = &policy + } else { + registry.Policies = nil + } + + // PrivateEndpointConnections + if source.PrivateEndpointConnections != nil { + privateEndpointConnectionList := make([]PrivateEndpointConnection_STATUS, len(source.PrivateEndpointConnections)) + for privateEndpointConnectionIndex, privateEndpointConnectionItem := range source.PrivateEndpointConnections { + // Shadow the loop variable to avoid aliasing + privateEndpointConnectionItem := privateEndpointConnectionItem + var privateEndpointConnection PrivateEndpointConnection_STATUS + err := privateEndpointConnection.AssignProperties_From_PrivateEndpointConnection_STATUS(&privateEndpointConnectionItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_PrivateEndpointConnection_STATUS() to populate field PrivateEndpointConnections") + } + privateEndpointConnectionList[privateEndpointConnectionIndex] = privateEndpointConnection + } + registry.PrivateEndpointConnections = privateEndpointConnectionList + } else { + registry.PrivateEndpointConnections = nil + } + + // ProvisioningState + if source.ProvisioningState != nil { + provisioningState := *source.ProvisioningState + provisioningStateTemp := genruntime.ToEnum(provisioningState, registryProperties_ProvisioningState_STATUS_Values) + registry.ProvisioningState = &provisioningStateTemp + } else { + registry.ProvisioningState = nil + } + + // PublicNetworkAccess + if source.PublicNetworkAccess != nil { + publicNetworkAccess := *source.PublicNetworkAccess + publicNetworkAccessTemp := genruntime.ToEnum(publicNetworkAccess, registryProperties_PublicNetworkAccess_STATUS_Values) + registry.PublicNetworkAccess = &publicNetworkAccessTemp + } else { + registry.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") + } + registry.Sku = &sku + } else { + registry.Sku = nil + } + + // Status + if source.Status != nil { + var status Status_STATUS + err := status.AssignProperties_From_Status_STATUS(source.Status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_Status_STATUS() to populate field Status") + } + registry.Status = &status + } else { + registry.Status = 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") + } + registry.SystemData = &systemDatum + } else { + registry.SystemData = nil + } + + // Tags + registry.Tags = genruntime.CloneMapOfStringToString(source.Tags) + + // Type + registry.Type = genruntime.ClonePointerToString(source.Type) + + // ZoneRedundancy + if source.ZoneRedundancy != nil { + zoneRedundancy := *source.ZoneRedundancy + zoneRedundancyTemp := genruntime.ToEnum(zoneRedundancy, registryProperties_ZoneRedundancy_STATUS_Values) + registry.ZoneRedundancy = &zoneRedundancyTemp + } else { + registry.ZoneRedundancy = nil + } + + // No error + return nil +} + +// AssignProperties_To_Registry_STATUS populates the provided destination Registry_STATUS from our Registry_STATUS +func (registry *Registry_STATUS) AssignProperties_To_Registry_STATUS(destination *storage.Registry_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AdminUserEnabled + if registry.AdminUserEnabled != nil { + adminUserEnabled := *registry.AdminUserEnabled + destination.AdminUserEnabled = &adminUserEnabled + } else { + destination.AdminUserEnabled = nil + } + + // Conditions + destination.Conditions = genruntime.CloneSliceOfCondition(registry.Conditions) + + // CreationDate + destination.CreationDate = genruntime.ClonePointerToString(registry.CreationDate) + + // DataEndpointEnabled + if registry.DataEndpointEnabled != nil { + dataEndpointEnabled := *registry.DataEndpointEnabled + destination.DataEndpointEnabled = &dataEndpointEnabled + } else { + destination.DataEndpointEnabled = nil + } + + // DataEndpointHostNames + destination.DataEndpointHostNames = genruntime.CloneSliceOfString(registry.DataEndpointHostNames) + + // Encryption + if registry.Encryption != nil { + var encryption storage.EncryptionProperty_STATUS + err := registry.Encryption.AssignProperties_To_EncryptionProperty_STATUS(&encryption) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_EncryptionProperty_STATUS() to populate field Encryption") + } + destination.Encryption = &encryption + } else { + destination.Encryption = nil + } + + // Id + destination.Id = genruntime.ClonePointerToString(registry.Id) + + // Identity + if registry.Identity != nil { + var identity storage.IdentityProperties_STATUS + err := registry.Identity.AssignProperties_To_IdentityProperties_STATUS(&identity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_IdentityProperties_STATUS() to populate field Identity") + } + destination.Identity = &identity + } else { + destination.Identity = nil + } + + // Location + destination.Location = genruntime.ClonePointerToString(registry.Location) + + // LoginServer + destination.LoginServer = genruntime.ClonePointerToString(registry.LoginServer) + + // Name + destination.Name = genruntime.ClonePointerToString(registry.Name) + + // NetworkRuleBypassOptions + if registry.NetworkRuleBypassOptions != nil { + networkRuleBypassOption := string(*registry.NetworkRuleBypassOptions) + destination.NetworkRuleBypassOptions = &networkRuleBypassOption + } else { + destination.NetworkRuleBypassOptions = nil + } + + // NetworkRuleSet + if registry.NetworkRuleSet != nil { + var networkRuleSet storage.NetworkRuleSet_STATUS + err := registry.NetworkRuleSet.AssignProperties_To_NetworkRuleSet_STATUS(&networkRuleSet) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_NetworkRuleSet_STATUS() to populate field NetworkRuleSet") + } + destination.NetworkRuleSet = &networkRuleSet + } else { + destination.NetworkRuleSet = nil + } + + // Policies + if registry.Policies != nil { + var policy storage.Policies_STATUS + err := registry.Policies.AssignProperties_To_Policies_STATUS(&policy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Policies_STATUS() to populate field Policies") + } + destination.Policies = &policy + } else { + destination.Policies = nil + } + + // PrivateEndpointConnections + if registry.PrivateEndpointConnections != nil { + privateEndpointConnectionList := make([]storage.PrivateEndpointConnection_STATUS, len(registry.PrivateEndpointConnections)) + for privateEndpointConnectionIndex, privateEndpointConnectionItem := range registry.PrivateEndpointConnections { + // Shadow the loop variable to avoid aliasing + privateEndpointConnectionItem := privateEndpointConnectionItem + var privateEndpointConnection storage.PrivateEndpointConnection_STATUS + err := privateEndpointConnectionItem.AssignProperties_To_PrivateEndpointConnection_STATUS(&privateEndpointConnection) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_PrivateEndpointConnection_STATUS() to populate field PrivateEndpointConnections") + } + privateEndpointConnectionList[privateEndpointConnectionIndex] = privateEndpointConnection + } + destination.PrivateEndpointConnections = privateEndpointConnectionList + } else { + destination.PrivateEndpointConnections = nil + } + + // ProvisioningState + if registry.ProvisioningState != nil { + provisioningState := string(*registry.ProvisioningState) + destination.ProvisioningState = &provisioningState + } else { + destination.ProvisioningState = nil + } + + // PublicNetworkAccess + if registry.PublicNetworkAccess != nil { + publicNetworkAccess := string(*registry.PublicNetworkAccess) + destination.PublicNetworkAccess = &publicNetworkAccess + } else { + destination.PublicNetworkAccess = nil + } + + // Sku + if registry.Sku != nil { + var sku storage.Sku_STATUS + err := registry.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 + } + + // Status + if registry.Status != nil { + var status storage.Status_STATUS + err := registry.Status.AssignProperties_To_Status_STATUS(&status) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_Status_STATUS() to populate field Status") + } + destination.Status = &status + } else { + destination.Status = nil + } + + // SystemData + if registry.SystemData != nil { + var systemDatum storage.SystemData_STATUS + err := registry.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(registry.Tags) + + // Type + destination.Type = genruntime.ClonePointerToString(registry.Type) + + // ZoneRedundancy + if registry.ZoneRedundancy != nil { + zoneRedundancy := string(*registry.ZoneRedundancy) + destination.ZoneRedundancy = &zoneRedundancy + } else { + destination.ZoneRedundancy = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +type EncryptionProperty struct { + // KeyVaultProperties: Key vault properties. + KeyVaultProperties *KeyVaultProperties `json:"keyVaultProperties,omitempty"` + + // Status: Indicates whether or not the encryption is enabled for container registry. + Status *EncryptionProperty_Status `json:"status,omitempty"` +} + +var _ genruntime.ARMTransformer = &EncryptionProperty{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (property *EncryptionProperty) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if property == nil { + return nil, nil + } + result := &arm.EncryptionProperty{} + + // Set property "KeyVaultProperties": + if property.KeyVaultProperties != nil { + keyVaultProperties_ARM, err := (*property.KeyVaultProperties).ConvertToARM(resolved) + if err != nil { + return nil, err + } + keyVaultProperties := *keyVaultProperties_ARM.(*arm.KeyVaultProperties) + result.KeyVaultProperties = &keyVaultProperties + } + + // Set property "Status": + if property.Status != nil { + var temp string + temp = string(*property.Status) + status := arm.EncryptionProperty_Status(temp) + result.Status = &status + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (property *EncryptionProperty) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.EncryptionProperty{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (property *EncryptionProperty) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.EncryptionProperty) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.EncryptionProperty, 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 + property.KeyVaultProperties = &keyVaultProperties + } + + // Set property "Status": + if typedInput.Status != nil { + var temp string + temp = string(*typedInput.Status) + status := EncryptionProperty_Status(temp) + property.Status = &status + } + + // No error + return nil +} + +// AssignProperties_From_EncryptionProperty populates our EncryptionProperty from the provided source EncryptionProperty +func (property *EncryptionProperty) AssignProperties_From_EncryptionProperty(source *storage.EncryptionProperty) 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") + } + property.KeyVaultProperties = &keyVaultProperty + } else { + property.KeyVaultProperties = nil + } + + // Status + if source.Status != nil { + status := *source.Status + statusTemp := genruntime.ToEnum(status, encryptionProperty_Status_Values) + property.Status = &statusTemp + } else { + property.Status = nil + } + + // No error + return nil +} + +// AssignProperties_To_EncryptionProperty populates the provided destination EncryptionProperty from our EncryptionProperty +func (property *EncryptionProperty) AssignProperties_To_EncryptionProperty(destination *storage.EncryptionProperty) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // KeyVaultProperties + if property.KeyVaultProperties != nil { + var keyVaultProperty storage.KeyVaultProperties + err := property.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 + } + + // Status + if property.Status != nil { + status := string(*property.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 +} + +// Initialize_From_EncryptionProperty_STATUS populates our EncryptionProperty from the provided source EncryptionProperty_STATUS +func (property *EncryptionProperty) Initialize_From_EncryptionProperty_STATUS(source *EncryptionProperty_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") + } + property.KeyVaultProperties = &keyVaultProperty + } else { + property.KeyVaultProperties = nil + } + + // Status + if source.Status != nil { + status := genruntime.ToEnum(string(*source.Status), encryptionProperty_Status_Values) + property.Status = &status + } else { + property.Status = nil + } + + // No error + return nil +} + +type EncryptionProperty_STATUS struct { + // KeyVaultProperties: Key vault properties. + KeyVaultProperties *KeyVaultProperties_STATUS `json:"keyVaultProperties,omitempty"` + + // Status: Indicates whether or not the encryption is enabled for container registry. + Status *EncryptionProperty_Status_STATUS `json:"status,omitempty"` +} + +var _ genruntime.FromARMConverter = &EncryptionProperty_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (property *EncryptionProperty_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.EncryptionProperty_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (property *EncryptionProperty_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.EncryptionProperty_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.EncryptionProperty_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 + property.KeyVaultProperties = &keyVaultProperties + } + + // Set property "Status": + if typedInput.Status != nil { + var temp string + temp = string(*typedInput.Status) + status := EncryptionProperty_Status_STATUS(temp) + property.Status = &status + } + + // No error + return nil +} + +// AssignProperties_From_EncryptionProperty_STATUS populates our EncryptionProperty_STATUS from the provided source EncryptionProperty_STATUS +func (property *EncryptionProperty_STATUS) AssignProperties_From_EncryptionProperty_STATUS(source *storage.EncryptionProperty_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") + } + property.KeyVaultProperties = &keyVaultProperty + } else { + property.KeyVaultProperties = nil + } + + // Status + if source.Status != nil { + status := *source.Status + statusTemp := genruntime.ToEnum(status, encryptionProperty_Status_STATUS_Values) + property.Status = &statusTemp + } else { + property.Status = nil + } + + // No error + return nil +} + +// AssignProperties_To_EncryptionProperty_STATUS populates the provided destination EncryptionProperty_STATUS from our EncryptionProperty_STATUS +func (property *EncryptionProperty_STATUS) AssignProperties_To_EncryptionProperty_STATUS(destination *storage.EncryptionProperty_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // KeyVaultProperties + if property.KeyVaultProperties != nil { + var keyVaultProperty storage.KeyVaultProperties_STATUS + err := property.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 + } + + // Status + if property.Status != nil { + status := string(*property.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 +} + +// Managed identity for the resource. +type IdentityProperties struct { + // Type: The identity type. + Type *IdentityProperties_Type `json:"type,omitempty"` + + // UserAssignedIdentities: The list of user identities associated with the resource. The user identity + // dictionary key references 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 = &IdentityProperties{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (properties *IdentityProperties) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if properties == nil { + return nil, nil + } + result := &arm.IdentityProperties{} + + // Set property "Type": + if properties.Type != nil { + var temp string + temp = string(*properties.Type) + typeVar := arm.IdentityProperties_Type(temp) + result.Type = &typeVar + } + + // Set property "UserAssignedIdentities": + result.UserAssignedIdentities = make(map[string]arm.UserAssignedIdentityDetails, len(properties.UserAssignedIdentities)) + for _, ident := range properties.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 (properties *IdentityProperties) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.IdentityProperties{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (properties *IdentityProperties) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.IdentityProperties) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.IdentityProperties, got %T", armInput) + } + + // Set property "Type": + if typedInput.Type != nil { + var temp string + temp = string(*typedInput.Type) + typeVar := IdentityProperties_Type(temp) + properties.Type = &typeVar + } + + // no assignment for property "UserAssignedIdentities" + + // No error + return nil +} + +// AssignProperties_From_IdentityProperties populates our IdentityProperties from the provided source IdentityProperties +func (properties *IdentityProperties) AssignProperties_From_IdentityProperties(source *storage.IdentityProperties) error { + + // Type + if source.Type != nil { + typeVar := *source.Type + typeTemp := genruntime.ToEnum(typeVar, identityProperties_Type_Values) + properties.Type = &typeTemp + } else { + properties.Type = nil + } + + // UserAssignedIdentities + if source.UserAssignedIdentities != nil { + userAssignedIdentityList := make([]UserAssignedIdentityDetails, len(source.UserAssignedIdentities)) + for userAssignedIdentityIndex, userAssignedIdentityItem := range source.UserAssignedIdentities { + // Shadow the loop variable to avoid aliasing + userAssignedIdentityItem := userAssignedIdentityItem + var userAssignedIdentity UserAssignedIdentityDetails + err := userAssignedIdentity.AssignProperties_From_UserAssignedIdentityDetails(&userAssignedIdentityItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_UserAssignedIdentityDetails() to populate field UserAssignedIdentities") + } + userAssignedIdentityList[userAssignedIdentityIndex] = userAssignedIdentity + } + properties.UserAssignedIdentities = userAssignedIdentityList + } else { + properties.UserAssignedIdentities = nil + } + + // No error + return nil +} + +// AssignProperties_To_IdentityProperties populates the provided destination IdentityProperties from our IdentityProperties +func (properties *IdentityProperties) AssignProperties_To_IdentityProperties(destination *storage.IdentityProperties) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Type + if properties.Type != nil { + typeVar := string(*properties.Type) + destination.Type = &typeVar + } else { + destination.Type = nil + } + + // UserAssignedIdentities + if properties.UserAssignedIdentities != nil { + userAssignedIdentityList := make([]storage.UserAssignedIdentityDetails, len(properties.UserAssignedIdentities)) + for userAssignedIdentityIndex, userAssignedIdentityItem := range properties.UserAssignedIdentities { + // Shadow the loop variable to avoid aliasing + userAssignedIdentityItem := userAssignedIdentityItem + var userAssignedIdentity storage.UserAssignedIdentityDetails + err := userAssignedIdentityItem.AssignProperties_To_UserAssignedIdentityDetails(&userAssignedIdentity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_UserAssignedIdentityDetails() to populate field UserAssignedIdentities") + } + userAssignedIdentityList[userAssignedIdentityIndex] = userAssignedIdentity + } + destination.UserAssignedIdentities = userAssignedIdentityList + } else { + destination.UserAssignedIdentities = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_IdentityProperties_STATUS populates our IdentityProperties from the provided source IdentityProperties_STATUS +func (properties *IdentityProperties) Initialize_From_IdentityProperties_STATUS(source *IdentityProperties_STATUS) error { + + // Type + if source.Type != nil { + typeVar := genruntime.ToEnum(string(*source.Type), identityProperties_Type_Values) + properties.Type = &typeVar + } else { + properties.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}) + } + properties.UserAssignedIdentities = userAssignedIdentityList + } else { + properties.UserAssignedIdentities = nil + } + + // No error + return nil +} + +// Managed identity for the resource. +type IdentityProperties_STATUS struct { + // PrincipalId: The principal ID of resource identity. + PrincipalId *string `json:"principalId,omitempty"` + + // TenantId: The tenant ID of resource. + TenantId *string `json:"tenantId,omitempty"` + + // Type: The identity type. + Type *IdentityProperties_Type_STATUS `json:"type,omitempty"` + + // UserAssignedIdentities: The list of user identities associated with the resource. The user identity + // dictionary key references will be ARM resource ids in the form: + // '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/ + // providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. + UserAssignedIdentities map[string]UserIdentityProperties_STATUS `json:"userAssignedIdentities,omitempty"` +} + +var _ genruntime.FromARMConverter = &IdentityProperties_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (properties *IdentityProperties_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.IdentityProperties_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (properties *IdentityProperties_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.IdentityProperties_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.IdentityProperties_STATUS, got %T", armInput) + } + + // Set property "PrincipalId": + if typedInput.PrincipalId != nil { + principalId := *typedInput.PrincipalId + properties.PrincipalId = &principalId + } + + // Set property "TenantId": + if typedInput.TenantId != nil { + tenantId := *typedInput.TenantId + properties.TenantId = &tenantId + } + + // Set property "Type": + if typedInput.Type != nil { + var temp string + temp = string(*typedInput.Type) + typeVar := IdentityProperties_Type_STATUS(temp) + properties.Type = &typeVar + } + + // Set property "UserAssignedIdentities": + if typedInput.UserAssignedIdentities != nil { + properties.UserAssignedIdentities = make(map[string]UserIdentityProperties_STATUS, len(typedInput.UserAssignedIdentities)) + for key, value := range typedInput.UserAssignedIdentities { + var value1 UserIdentityProperties_STATUS + err := value1.PopulateFromARM(owner, value) + if err != nil { + return err + } + properties.UserAssignedIdentities[key] = value1 + } + } + + // No error + return nil +} + +// AssignProperties_From_IdentityProperties_STATUS populates our IdentityProperties_STATUS from the provided source IdentityProperties_STATUS +func (properties *IdentityProperties_STATUS) AssignProperties_From_IdentityProperties_STATUS(source *storage.IdentityProperties_STATUS) error { + + // PrincipalId + properties.PrincipalId = genruntime.ClonePointerToString(source.PrincipalId) + + // TenantId + properties.TenantId = genruntime.ClonePointerToString(source.TenantId) + + // Type + if source.Type != nil { + typeVar := *source.Type + typeTemp := genruntime.ToEnum(typeVar, identityProperties_Type_STATUS_Values) + properties.Type = &typeTemp + } else { + properties.Type = nil + } + + // UserAssignedIdentities + if source.UserAssignedIdentities != nil { + userAssignedIdentityMap := make(map[string]UserIdentityProperties_STATUS, len(source.UserAssignedIdentities)) + for userAssignedIdentityKey, userAssignedIdentityValue := range source.UserAssignedIdentities { + // Shadow the loop variable to avoid aliasing + userAssignedIdentityValue := userAssignedIdentityValue + var userAssignedIdentity UserIdentityProperties_STATUS + err := userAssignedIdentity.AssignProperties_From_UserIdentityProperties_STATUS(&userAssignedIdentityValue) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_UserIdentityProperties_STATUS() to populate field UserAssignedIdentities") + } + userAssignedIdentityMap[userAssignedIdentityKey] = userAssignedIdentity + } + properties.UserAssignedIdentities = userAssignedIdentityMap + } else { + properties.UserAssignedIdentities = nil + } + + // No error + return nil +} + +// AssignProperties_To_IdentityProperties_STATUS populates the provided destination IdentityProperties_STATUS from our IdentityProperties_STATUS +func (properties *IdentityProperties_STATUS) AssignProperties_To_IdentityProperties_STATUS(destination *storage.IdentityProperties_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // PrincipalId + destination.PrincipalId = genruntime.ClonePointerToString(properties.PrincipalId) + + // TenantId + destination.TenantId = genruntime.ClonePointerToString(properties.TenantId) + + // Type + if properties.Type != nil { + typeVar := string(*properties.Type) + destination.Type = &typeVar + } else { + destination.Type = nil + } + + // UserAssignedIdentities + if properties.UserAssignedIdentities != nil { + userAssignedIdentityMap := make(map[string]storage.UserIdentityProperties_STATUS, len(properties.UserAssignedIdentities)) + for userAssignedIdentityKey, userAssignedIdentityValue := range properties.UserAssignedIdentities { + // Shadow the loop variable to avoid aliasing + userAssignedIdentityValue := userAssignedIdentityValue + var userAssignedIdentity storage.UserIdentityProperties_STATUS + err := userAssignedIdentityValue.AssignProperties_To_UserIdentityProperties_STATUS(&userAssignedIdentity) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_UserIdentityProperties_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 +} + +// The network rule set for a container registry. +type NetworkRuleSet struct { + // +kubebuilder:validation:Required + // DefaultAction: The default action of allow or deny when no other rules match. + DefaultAction *NetworkRuleSet_DefaultAction `json:"defaultAction,omitempty"` + + // IpRules: The IP ACL rules. + IpRules []IPRule `json:"ipRules,omitempty"` +} + +var _ genruntime.ARMTransformer = &NetworkRuleSet{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (ruleSet *NetworkRuleSet) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if ruleSet == nil { + return nil, nil + } + result := &arm.NetworkRuleSet{} + + // Set property "DefaultAction": + if ruleSet.DefaultAction != nil { + var temp string + temp = string(*ruleSet.DefaultAction) + defaultAction := arm.NetworkRuleSet_DefaultAction(temp) + result.DefaultAction = &defaultAction + } + + // Set property "IpRules": + for _, item := range ruleSet.IpRules { + item_ARM, err := item.ConvertToARM(resolved) + if err != nil { + return nil, err + } + result.IpRules = append(result.IpRules, *item_ARM.(*arm.IPRule)) + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (ruleSet *NetworkRuleSet) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.NetworkRuleSet{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (ruleSet *NetworkRuleSet) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.NetworkRuleSet) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.NetworkRuleSet, got %T", armInput) + } + + // Set property "DefaultAction": + if typedInput.DefaultAction != nil { + var temp string + temp = string(*typedInput.DefaultAction) + defaultAction := NetworkRuleSet_DefaultAction(temp) + ruleSet.DefaultAction = &defaultAction + } + + // Set property "IpRules": + for _, item := range typedInput.IpRules { + var item1 IPRule + err := item1.PopulateFromARM(owner, item) + if err != nil { + return err + } + ruleSet.IpRules = append(ruleSet.IpRules, item1) + } + + // No error + return nil +} + +// AssignProperties_From_NetworkRuleSet populates our NetworkRuleSet from the provided source NetworkRuleSet +func (ruleSet *NetworkRuleSet) AssignProperties_From_NetworkRuleSet(source *storage.NetworkRuleSet) error { + + // DefaultAction + if source.DefaultAction != nil { + defaultAction := *source.DefaultAction + defaultActionTemp := genruntime.ToEnum(defaultAction, networkRuleSet_DefaultAction_Values) + ruleSet.DefaultAction = &defaultActionTemp + } else { + ruleSet.DefaultAction = nil + } + + // IpRules + if source.IpRules != nil { + ipRuleList := make([]IPRule, len(source.IpRules)) + for ipRuleIndex, ipRuleItem := range source.IpRules { + // Shadow the loop variable to avoid aliasing + ipRuleItem := ipRuleItem + var ipRule IPRule + err := ipRule.AssignProperties_From_IPRule(&ipRuleItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_IPRule() to populate field IpRules") + } + ipRuleList[ipRuleIndex] = ipRule + } + ruleSet.IpRules = ipRuleList + } else { + ruleSet.IpRules = nil + } + + // No error + return nil +} + +// AssignProperties_To_NetworkRuleSet populates the provided destination NetworkRuleSet from our NetworkRuleSet +func (ruleSet *NetworkRuleSet) AssignProperties_To_NetworkRuleSet(destination *storage.NetworkRuleSet) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // DefaultAction + if ruleSet.DefaultAction != nil { + defaultAction := string(*ruleSet.DefaultAction) + destination.DefaultAction = &defaultAction + } else { + destination.DefaultAction = nil + } + + // IpRules + if ruleSet.IpRules != nil { + ipRuleList := make([]storage.IPRule, len(ruleSet.IpRules)) + for ipRuleIndex, ipRuleItem := range ruleSet.IpRules { + // Shadow the loop variable to avoid aliasing + ipRuleItem := ipRuleItem + var ipRule storage.IPRule + err := ipRuleItem.AssignProperties_To_IPRule(&ipRule) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_IPRule() to populate field IpRules") + } + ipRuleList[ipRuleIndex] = ipRule + } + destination.IpRules = ipRuleList + } else { + destination.IpRules = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_NetworkRuleSet_STATUS populates our NetworkRuleSet from the provided source NetworkRuleSet_STATUS +func (ruleSet *NetworkRuleSet) Initialize_From_NetworkRuleSet_STATUS(source *NetworkRuleSet_STATUS) error { + + // DefaultAction + if source.DefaultAction != nil { + defaultAction := genruntime.ToEnum(string(*source.DefaultAction), networkRuleSet_DefaultAction_Values) + ruleSet.DefaultAction = &defaultAction + } else { + ruleSet.DefaultAction = nil + } + + // IpRules + if source.IpRules != nil { + ipRuleList := make([]IPRule, len(source.IpRules)) + for ipRuleIndex, ipRuleItem := range source.IpRules { + // Shadow the loop variable to avoid aliasing + ipRuleItem := ipRuleItem + var ipRule IPRule + err := ipRule.Initialize_From_IPRule_STATUS(&ipRuleItem) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_IPRule_STATUS() to populate field IpRules") + } + ipRuleList[ipRuleIndex] = ipRule + } + ruleSet.IpRules = ipRuleList + } else { + ruleSet.IpRules = nil + } + + // No error + return nil +} + +// The network rule set for a container registry. +type NetworkRuleSet_STATUS struct { + // DefaultAction: The default action of allow or deny when no other rules match. + DefaultAction *NetworkRuleSet_DefaultAction_STATUS `json:"defaultAction,omitempty"` + + // IpRules: The IP ACL rules. + IpRules []IPRule_STATUS `json:"ipRules,omitempty"` +} + +var _ genruntime.FromARMConverter = &NetworkRuleSet_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (ruleSet *NetworkRuleSet_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.NetworkRuleSet_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (ruleSet *NetworkRuleSet_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.NetworkRuleSet_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.NetworkRuleSet_STATUS, got %T", armInput) + } + + // Set property "DefaultAction": + if typedInput.DefaultAction != nil { + var temp string + temp = string(*typedInput.DefaultAction) + defaultAction := NetworkRuleSet_DefaultAction_STATUS(temp) + ruleSet.DefaultAction = &defaultAction + } + + // Set property "IpRules": + for _, item := range typedInput.IpRules { + var item1 IPRule_STATUS + err := item1.PopulateFromARM(owner, item) + if err != nil { + return err + } + ruleSet.IpRules = append(ruleSet.IpRules, item1) + } + + // No error + return nil +} + +// AssignProperties_From_NetworkRuleSet_STATUS populates our NetworkRuleSet_STATUS from the provided source NetworkRuleSet_STATUS +func (ruleSet *NetworkRuleSet_STATUS) AssignProperties_From_NetworkRuleSet_STATUS(source *storage.NetworkRuleSet_STATUS) error { + + // DefaultAction + if source.DefaultAction != nil { + defaultAction := *source.DefaultAction + defaultActionTemp := genruntime.ToEnum(defaultAction, networkRuleSet_DefaultAction_STATUS_Values) + ruleSet.DefaultAction = &defaultActionTemp + } else { + ruleSet.DefaultAction = nil + } + + // IpRules + if source.IpRules != nil { + ipRuleList := make([]IPRule_STATUS, len(source.IpRules)) + for ipRuleIndex, ipRuleItem := range source.IpRules { + // Shadow the loop variable to avoid aliasing + ipRuleItem := ipRuleItem + var ipRule IPRule_STATUS + err := ipRule.AssignProperties_From_IPRule_STATUS(&ipRuleItem) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_IPRule_STATUS() to populate field IpRules") + } + ipRuleList[ipRuleIndex] = ipRule + } + ruleSet.IpRules = ipRuleList + } else { + ruleSet.IpRules = nil + } + + // No error + return nil +} + +// AssignProperties_To_NetworkRuleSet_STATUS populates the provided destination NetworkRuleSet_STATUS from our NetworkRuleSet_STATUS +func (ruleSet *NetworkRuleSet_STATUS) AssignProperties_To_NetworkRuleSet_STATUS(destination *storage.NetworkRuleSet_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // DefaultAction + if ruleSet.DefaultAction != nil { + defaultAction := string(*ruleSet.DefaultAction) + destination.DefaultAction = &defaultAction + } else { + destination.DefaultAction = nil + } + + // IpRules + if ruleSet.IpRules != nil { + ipRuleList := make([]storage.IPRule_STATUS, len(ruleSet.IpRules)) + for ipRuleIndex, ipRuleItem := range ruleSet.IpRules { + // Shadow the loop variable to avoid aliasing + ipRuleItem := ipRuleItem + var ipRule storage.IPRule_STATUS + err := ipRuleItem.AssignProperties_To_IPRule_STATUS(&ipRule) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_IPRule_STATUS() to populate field IpRules") + } + ipRuleList[ipRuleIndex] = ipRule + } + destination.IpRules = ipRuleList + } else { + destination.IpRules = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// The policies for a container registry. +type Policies struct { + // ExportPolicy: The export policy for a container registry. + ExportPolicy *ExportPolicy `json:"exportPolicy,omitempty"` + + // QuarantinePolicy: The quarantine policy for a container registry. + QuarantinePolicy *QuarantinePolicy `json:"quarantinePolicy,omitempty"` + + // RetentionPolicy: The retention policy for a container registry. + RetentionPolicy *RetentionPolicy `json:"retentionPolicy,omitempty"` + + // TrustPolicy: The content trust policy for a container registry. + TrustPolicy *TrustPolicy `json:"trustPolicy,omitempty"` +} + +var _ genruntime.ARMTransformer = &Policies{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (policies *Policies) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if policies == nil { + return nil, nil + } + result := &arm.Policies{} + + // Set property "ExportPolicy": + if policies.ExportPolicy != nil { + exportPolicy_ARM, err := (*policies.ExportPolicy).ConvertToARM(resolved) + if err != nil { + return nil, err + } + exportPolicy := *exportPolicy_ARM.(*arm.ExportPolicy) + result.ExportPolicy = &exportPolicy + } + + // Set property "QuarantinePolicy": + if policies.QuarantinePolicy != nil { + quarantinePolicy_ARM, err := (*policies.QuarantinePolicy).ConvertToARM(resolved) + if err != nil { + return nil, err + } + quarantinePolicy := *quarantinePolicy_ARM.(*arm.QuarantinePolicy) + result.QuarantinePolicy = &quarantinePolicy + } + + // Set property "RetentionPolicy": + if policies.RetentionPolicy != nil { + retentionPolicy_ARM, err := (*policies.RetentionPolicy).ConvertToARM(resolved) + if err != nil { + return nil, err + } + retentionPolicy := *retentionPolicy_ARM.(*arm.RetentionPolicy) + result.RetentionPolicy = &retentionPolicy + } + + // Set property "TrustPolicy": + if policies.TrustPolicy != nil { + trustPolicy_ARM, err := (*policies.TrustPolicy).ConvertToARM(resolved) + if err != nil { + return nil, err + } + trustPolicy := *trustPolicy_ARM.(*arm.TrustPolicy) + result.TrustPolicy = &trustPolicy + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (policies *Policies) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.Policies{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (policies *Policies) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.Policies) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.Policies, got %T", armInput) + } + + // Set property "ExportPolicy": + if typedInput.ExportPolicy != nil { + var exportPolicy1 ExportPolicy + err := exportPolicy1.PopulateFromARM(owner, *typedInput.ExportPolicy) + if err != nil { + return err + } + exportPolicy := exportPolicy1 + policies.ExportPolicy = &exportPolicy + } + + // Set property "QuarantinePolicy": + if typedInput.QuarantinePolicy != nil { + var quarantinePolicy1 QuarantinePolicy + err := quarantinePolicy1.PopulateFromARM(owner, *typedInput.QuarantinePolicy) + if err != nil { + return err + } + quarantinePolicy := quarantinePolicy1 + policies.QuarantinePolicy = &quarantinePolicy + } + + // Set property "RetentionPolicy": + if typedInput.RetentionPolicy != nil { + var retentionPolicy1 RetentionPolicy + err := retentionPolicy1.PopulateFromARM(owner, *typedInput.RetentionPolicy) + if err != nil { + return err + } + retentionPolicy := retentionPolicy1 + policies.RetentionPolicy = &retentionPolicy + } + + // Set property "TrustPolicy": + if typedInput.TrustPolicy != nil { + var trustPolicy1 TrustPolicy + err := trustPolicy1.PopulateFromARM(owner, *typedInput.TrustPolicy) + if err != nil { + return err + } + trustPolicy := trustPolicy1 + policies.TrustPolicy = &trustPolicy + } + + // No error + return nil +} + +// AssignProperties_From_Policies populates our Policies from the provided source Policies +func (policies *Policies) AssignProperties_From_Policies(source *storage.Policies) error { + + // ExportPolicy + if source.ExportPolicy != nil { + var exportPolicy ExportPolicy + err := exportPolicy.AssignProperties_From_ExportPolicy(source.ExportPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ExportPolicy() to populate field ExportPolicy") + } + policies.ExportPolicy = &exportPolicy + } else { + policies.ExportPolicy = nil + } + + // QuarantinePolicy + if source.QuarantinePolicy != nil { + var quarantinePolicy QuarantinePolicy + err := quarantinePolicy.AssignProperties_From_QuarantinePolicy(source.QuarantinePolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_QuarantinePolicy() to populate field QuarantinePolicy") + } + policies.QuarantinePolicy = &quarantinePolicy + } else { + policies.QuarantinePolicy = nil + } + + // RetentionPolicy + if source.RetentionPolicy != nil { + var retentionPolicy RetentionPolicy + err := retentionPolicy.AssignProperties_From_RetentionPolicy(source.RetentionPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_RetentionPolicy() to populate field RetentionPolicy") + } + policies.RetentionPolicy = &retentionPolicy + } else { + policies.RetentionPolicy = nil + } + + // TrustPolicy + if source.TrustPolicy != nil { + var trustPolicy TrustPolicy + err := trustPolicy.AssignProperties_From_TrustPolicy(source.TrustPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_TrustPolicy() to populate field TrustPolicy") + } + policies.TrustPolicy = &trustPolicy + } else { + policies.TrustPolicy = nil + } + + // No error + return nil +} + +// AssignProperties_To_Policies populates the provided destination Policies from our Policies +func (policies *Policies) AssignProperties_To_Policies(destination *storage.Policies) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // ExportPolicy + if policies.ExportPolicy != nil { + var exportPolicy storage.ExportPolicy + err := policies.ExportPolicy.AssignProperties_To_ExportPolicy(&exportPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ExportPolicy() to populate field ExportPolicy") + } + destination.ExportPolicy = &exportPolicy + } else { + destination.ExportPolicy = nil + } + + // QuarantinePolicy + if policies.QuarantinePolicy != nil { + var quarantinePolicy storage.QuarantinePolicy + err := policies.QuarantinePolicy.AssignProperties_To_QuarantinePolicy(&quarantinePolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_QuarantinePolicy() to populate field QuarantinePolicy") + } + destination.QuarantinePolicy = &quarantinePolicy + } else { + destination.QuarantinePolicy = nil + } + + // RetentionPolicy + if policies.RetentionPolicy != nil { + var retentionPolicy storage.RetentionPolicy + err := policies.RetentionPolicy.AssignProperties_To_RetentionPolicy(&retentionPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_RetentionPolicy() to populate field RetentionPolicy") + } + destination.RetentionPolicy = &retentionPolicy + } else { + destination.RetentionPolicy = nil + } + + // TrustPolicy + if policies.TrustPolicy != nil { + var trustPolicy storage.TrustPolicy + err := policies.TrustPolicy.AssignProperties_To_TrustPolicy(&trustPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_TrustPolicy() to populate field TrustPolicy") + } + destination.TrustPolicy = &trustPolicy + } else { + destination.TrustPolicy = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_Policies_STATUS populates our Policies from the provided source Policies_STATUS +func (policies *Policies) Initialize_From_Policies_STATUS(source *Policies_STATUS) error { + + // ExportPolicy + if source.ExportPolicy != nil { + var exportPolicy ExportPolicy + err := exportPolicy.Initialize_From_ExportPolicy_STATUS(source.ExportPolicy) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_ExportPolicy_STATUS() to populate field ExportPolicy") + } + policies.ExportPolicy = &exportPolicy + } else { + policies.ExportPolicy = nil + } + + // QuarantinePolicy + if source.QuarantinePolicy != nil { + var quarantinePolicy QuarantinePolicy + err := quarantinePolicy.Initialize_From_QuarantinePolicy_STATUS(source.QuarantinePolicy) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_QuarantinePolicy_STATUS() to populate field QuarantinePolicy") + } + policies.QuarantinePolicy = &quarantinePolicy + } else { + policies.QuarantinePolicy = nil + } + + // RetentionPolicy + if source.RetentionPolicy != nil { + var retentionPolicy RetentionPolicy + err := retentionPolicy.Initialize_From_RetentionPolicy_STATUS(source.RetentionPolicy) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_RetentionPolicy_STATUS() to populate field RetentionPolicy") + } + policies.RetentionPolicy = &retentionPolicy + } else { + policies.RetentionPolicy = nil + } + + // TrustPolicy + if source.TrustPolicy != nil { + var trustPolicy TrustPolicy + err := trustPolicy.Initialize_From_TrustPolicy_STATUS(source.TrustPolicy) + if err != nil { + return eris.Wrap(err, "calling Initialize_From_TrustPolicy_STATUS() to populate field TrustPolicy") + } + policies.TrustPolicy = &trustPolicy + } else { + policies.TrustPolicy = nil + } + + // No error + return nil +} + +// The policies for a container registry. +type Policies_STATUS struct { + // ExportPolicy: The export policy for a container registry. + ExportPolicy *ExportPolicy_STATUS `json:"exportPolicy,omitempty"` + + // QuarantinePolicy: The quarantine policy for a container registry. + QuarantinePolicy *QuarantinePolicy_STATUS `json:"quarantinePolicy,omitempty"` + + // RetentionPolicy: The retention policy for a container registry. + RetentionPolicy *RetentionPolicy_STATUS `json:"retentionPolicy,omitempty"` + + // TrustPolicy: The content trust policy for a container registry. + TrustPolicy *TrustPolicy_STATUS `json:"trustPolicy,omitempty"` +} + +var _ genruntime.FromARMConverter = &Policies_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (policies *Policies_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.Policies_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (policies *Policies_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.Policies_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.Policies_STATUS, got %T", armInput) + } + + // Set property "ExportPolicy": + if typedInput.ExportPolicy != nil { + var exportPolicy1 ExportPolicy_STATUS + err := exportPolicy1.PopulateFromARM(owner, *typedInput.ExportPolicy) + if err != nil { + return err + } + exportPolicy := exportPolicy1 + policies.ExportPolicy = &exportPolicy + } + + // Set property "QuarantinePolicy": + if typedInput.QuarantinePolicy != nil { + var quarantinePolicy1 QuarantinePolicy_STATUS + err := quarantinePolicy1.PopulateFromARM(owner, *typedInput.QuarantinePolicy) + if err != nil { + return err + } + quarantinePolicy := quarantinePolicy1 + policies.QuarantinePolicy = &quarantinePolicy + } + + // Set property "RetentionPolicy": + if typedInput.RetentionPolicy != nil { + var retentionPolicy1 RetentionPolicy_STATUS + err := retentionPolicy1.PopulateFromARM(owner, *typedInput.RetentionPolicy) + if err != nil { + return err + } + retentionPolicy := retentionPolicy1 + policies.RetentionPolicy = &retentionPolicy + } + + // Set property "TrustPolicy": + if typedInput.TrustPolicy != nil { + var trustPolicy1 TrustPolicy_STATUS + err := trustPolicy1.PopulateFromARM(owner, *typedInput.TrustPolicy) + if err != nil { + return err + } + trustPolicy := trustPolicy1 + policies.TrustPolicy = &trustPolicy + } + + // No error + return nil +} + +// AssignProperties_From_Policies_STATUS populates our Policies_STATUS from the provided source Policies_STATUS +func (policies *Policies_STATUS) AssignProperties_From_Policies_STATUS(source *storage.Policies_STATUS) error { + + // ExportPolicy + if source.ExportPolicy != nil { + var exportPolicy ExportPolicy_STATUS + err := exportPolicy.AssignProperties_From_ExportPolicy_STATUS(source.ExportPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_ExportPolicy_STATUS() to populate field ExportPolicy") + } + policies.ExportPolicy = &exportPolicy + } else { + policies.ExportPolicy = nil + } + + // QuarantinePolicy + if source.QuarantinePolicy != nil { + var quarantinePolicy QuarantinePolicy_STATUS + err := quarantinePolicy.AssignProperties_From_QuarantinePolicy_STATUS(source.QuarantinePolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_QuarantinePolicy_STATUS() to populate field QuarantinePolicy") + } + policies.QuarantinePolicy = &quarantinePolicy + } else { + policies.QuarantinePolicy = nil + } + + // RetentionPolicy + if source.RetentionPolicy != nil { + var retentionPolicy RetentionPolicy_STATUS + err := retentionPolicy.AssignProperties_From_RetentionPolicy_STATUS(source.RetentionPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_RetentionPolicy_STATUS() to populate field RetentionPolicy") + } + policies.RetentionPolicy = &retentionPolicy + } else { + policies.RetentionPolicy = nil + } + + // TrustPolicy + if source.TrustPolicy != nil { + var trustPolicy TrustPolicy_STATUS + err := trustPolicy.AssignProperties_From_TrustPolicy_STATUS(source.TrustPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_From_TrustPolicy_STATUS() to populate field TrustPolicy") + } + policies.TrustPolicy = &trustPolicy + } else { + policies.TrustPolicy = nil + } + + // No error + return nil +} + +// AssignProperties_To_Policies_STATUS populates the provided destination Policies_STATUS from our Policies_STATUS +func (policies *Policies_STATUS) AssignProperties_To_Policies_STATUS(destination *storage.Policies_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // ExportPolicy + if policies.ExportPolicy != nil { + var exportPolicy storage.ExportPolicy_STATUS + err := policies.ExportPolicy.AssignProperties_To_ExportPolicy_STATUS(&exportPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_ExportPolicy_STATUS() to populate field ExportPolicy") + } + destination.ExportPolicy = &exportPolicy + } else { + destination.ExportPolicy = nil + } + + // QuarantinePolicy + if policies.QuarantinePolicy != nil { + var quarantinePolicy storage.QuarantinePolicy_STATUS + err := policies.QuarantinePolicy.AssignProperties_To_QuarantinePolicy_STATUS(&quarantinePolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_QuarantinePolicy_STATUS() to populate field QuarantinePolicy") + } + destination.QuarantinePolicy = &quarantinePolicy + } else { + destination.QuarantinePolicy = nil + } + + // RetentionPolicy + if policies.RetentionPolicy != nil { + var retentionPolicy storage.RetentionPolicy_STATUS + err := policies.RetentionPolicy.AssignProperties_To_RetentionPolicy_STATUS(&retentionPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_RetentionPolicy_STATUS() to populate field RetentionPolicy") + } + destination.RetentionPolicy = &retentionPolicy + } else { + destination.RetentionPolicy = nil + } + + // TrustPolicy + if policies.TrustPolicy != nil { + var trustPolicy storage.TrustPolicy_STATUS + err := policies.TrustPolicy.AssignProperties_To_TrustPolicy_STATUS(&trustPolicy) + if err != nil { + return eris.Wrap(err, "calling AssignProperties_To_TrustPolicy_STATUS() to populate field TrustPolicy") + } + destination.TrustPolicy = &trustPolicy + } else { + destination.TrustPolicy = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// An object that represents a private endpoint connection for a container registry. +type PrivateEndpointConnection_STATUS struct { + // Id: The resource ID. + Id *string `json:"id,omitempty"` +} + +var _ genruntime.FromARMConverter = &PrivateEndpointConnection_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (connection *PrivateEndpointConnection_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.PrivateEndpointConnection_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (connection *PrivateEndpointConnection_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.PrivateEndpointConnection_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.PrivateEndpointConnection_STATUS, got %T", armInput) + } + + // Set property "Id": + if typedInput.Id != nil { + id := *typedInput.Id + connection.Id = &id + } + + // No error + return nil +} + +// AssignProperties_From_PrivateEndpointConnection_STATUS populates our PrivateEndpointConnection_STATUS from the provided source PrivateEndpointConnection_STATUS +func (connection *PrivateEndpointConnection_STATUS) AssignProperties_From_PrivateEndpointConnection_STATUS(source *storage.PrivateEndpointConnection_STATUS) error { + + // Id + connection.Id = genruntime.ClonePointerToString(source.Id) + + // No error + return nil +} + +// AssignProperties_To_PrivateEndpointConnection_STATUS populates the provided destination PrivateEndpointConnection_STATUS from our PrivateEndpointConnection_STATUS +func (connection *PrivateEndpointConnection_STATUS) AssignProperties_To_PrivateEndpointConnection_STATUS(destination *storage.PrivateEndpointConnection_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Id + destination.Id = genruntime.ClonePointerToString(connection.Id) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type RegistryOperatorSpec 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_RegistryOperatorSpec populates our RegistryOperatorSpec from the provided source RegistryOperatorSpec +func (operator *RegistryOperatorSpec) AssignProperties_From_RegistryOperatorSpec(source *storage.RegistryOperatorSpec) error { + + // ConfigMapExpressions + if source.ConfigMapExpressions != nil { + configMapExpressionList := make([]*core.DestinationExpression, len(source.ConfigMapExpressions)) + for configMapExpressionIndex, configMapExpressionItem := range source.ConfigMapExpressions { + // Shadow the loop variable to avoid aliasing + configMapExpressionItem := configMapExpressionItem + if configMapExpressionItem != nil { + configMapExpression := *configMapExpressionItem.DeepCopy() + configMapExpressionList[configMapExpressionIndex] = &configMapExpression + } else { + configMapExpressionList[configMapExpressionIndex] = nil + } + } + operator.ConfigMapExpressions = configMapExpressionList + } else { + operator.ConfigMapExpressions = nil + } + + // SecretExpressions + if source.SecretExpressions != nil { + secretExpressionList := make([]*core.DestinationExpression, len(source.SecretExpressions)) + for secretExpressionIndex, secretExpressionItem := range source.SecretExpressions { + // Shadow the loop variable to avoid aliasing + secretExpressionItem := secretExpressionItem + if secretExpressionItem != nil { + secretExpression := *secretExpressionItem.DeepCopy() + secretExpressionList[secretExpressionIndex] = &secretExpression + } else { + secretExpressionList[secretExpressionIndex] = nil + } + } + operator.SecretExpressions = secretExpressionList + } else { + operator.SecretExpressions = nil + } + + // No error + return nil +} + +// AssignProperties_To_RegistryOperatorSpec populates the provided destination RegistryOperatorSpec from our RegistryOperatorSpec +func (operator *RegistryOperatorSpec) AssignProperties_To_RegistryOperatorSpec(destination *storage.RegistryOperatorSpec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // ConfigMapExpressions + if operator.ConfigMapExpressions != nil { + configMapExpressionList := make([]*core.DestinationExpression, len(operator.ConfigMapExpressions)) + for configMapExpressionIndex, configMapExpressionItem := range operator.ConfigMapExpressions { + // Shadow the loop variable to avoid aliasing + configMapExpressionItem := configMapExpressionItem + if configMapExpressionItem != nil { + configMapExpression := *configMapExpressionItem.DeepCopy() + configMapExpressionList[configMapExpressionIndex] = &configMapExpression + } else { + configMapExpressionList[configMapExpressionIndex] = nil + } + } + destination.ConfigMapExpressions = configMapExpressionList + } else { + destination.ConfigMapExpressions = nil + } + + // SecretExpressions + if operator.SecretExpressions != nil { + secretExpressionList := make([]*core.DestinationExpression, len(operator.SecretExpressions)) + for secretExpressionIndex, secretExpressionItem := range operator.SecretExpressions { + // Shadow the loop variable to avoid aliasing + secretExpressionItem := secretExpressionItem + if secretExpressionItem != nil { + secretExpression := *secretExpressionItem.DeepCopy() + secretExpressionList[secretExpressionIndex] = &secretExpression + } else { + secretExpressionList[secretExpressionIndex] = nil + } + } + destination.SecretExpressions = secretExpressionList + } else { + destination.SecretExpressions = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// +kubebuilder:validation:Enum={"AzureServices","None"} +type RegistryProperties_NetworkRuleBypassOptions string + +const ( + RegistryProperties_NetworkRuleBypassOptions_AzureServices = RegistryProperties_NetworkRuleBypassOptions("AzureServices") + RegistryProperties_NetworkRuleBypassOptions_None = RegistryProperties_NetworkRuleBypassOptions("None") +) + +// Mapping from string to RegistryProperties_NetworkRuleBypassOptions +var registryProperties_NetworkRuleBypassOptions_Values = map[string]RegistryProperties_NetworkRuleBypassOptions{ + "azureservices": RegistryProperties_NetworkRuleBypassOptions_AzureServices, + "none": RegistryProperties_NetworkRuleBypassOptions_None, +} + +type RegistryProperties_NetworkRuleBypassOptions_STATUS string + +const ( + RegistryProperties_NetworkRuleBypassOptions_STATUS_AzureServices = RegistryProperties_NetworkRuleBypassOptions_STATUS("AzureServices") + RegistryProperties_NetworkRuleBypassOptions_STATUS_None = RegistryProperties_NetworkRuleBypassOptions_STATUS("None") +) + +// Mapping from string to RegistryProperties_NetworkRuleBypassOptions_STATUS +var registryProperties_NetworkRuleBypassOptions_STATUS_Values = map[string]RegistryProperties_NetworkRuleBypassOptions_STATUS{ + "azureservices": RegistryProperties_NetworkRuleBypassOptions_STATUS_AzureServices, + "none": RegistryProperties_NetworkRuleBypassOptions_STATUS_None, +} + +type RegistryProperties_ProvisioningState_STATUS string + +const ( + RegistryProperties_ProvisioningState_STATUS_Canceled = RegistryProperties_ProvisioningState_STATUS("Canceled") + RegistryProperties_ProvisioningState_STATUS_Creating = RegistryProperties_ProvisioningState_STATUS("Creating") + RegistryProperties_ProvisioningState_STATUS_Deleting = RegistryProperties_ProvisioningState_STATUS("Deleting") + RegistryProperties_ProvisioningState_STATUS_Failed = RegistryProperties_ProvisioningState_STATUS("Failed") + RegistryProperties_ProvisioningState_STATUS_Succeeded = RegistryProperties_ProvisioningState_STATUS("Succeeded") + RegistryProperties_ProvisioningState_STATUS_Updating = RegistryProperties_ProvisioningState_STATUS("Updating") +) + +// Mapping from string to RegistryProperties_ProvisioningState_STATUS +var registryProperties_ProvisioningState_STATUS_Values = map[string]RegistryProperties_ProvisioningState_STATUS{ + "canceled": RegistryProperties_ProvisioningState_STATUS_Canceled, + "creating": RegistryProperties_ProvisioningState_STATUS_Creating, + "deleting": RegistryProperties_ProvisioningState_STATUS_Deleting, + "failed": RegistryProperties_ProvisioningState_STATUS_Failed, + "succeeded": RegistryProperties_ProvisioningState_STATUS_Succeeded, + "updating": RegistryProperties_ProvisioningState_STATUS_Updating, +} + +// +kubebuilder:validation:Enum={"Disabled","Enabled"} +type RegistryProperties_PublicNetworkAccess string + +const ( + RegistryProperties_PublicNetworkAccess_Disabled = RegistryProperties_PublicNetworkAccess("Disabled") + RegistryProperties_PublicNetworkAccess_Enabled = RegistryProperties_PublicNetworkAccess("Enabled") +) + +// Mapping from string to RegistryProperties_PublicNetworkAccess +var registryProperties_PublicNetworkAccess_Values = map[string]RegistryProperties_PublicNetworkAccess{ + "disabled": RegistryProperties_PublicNetworkAccess_Disabled, + "enabled": RegistryProperties_PublicNetworkAccess_Enabled, +} + +type RegistryProperties_PublicNetworkAccess_STATUS string + +const ( + RegistryProperties_PublicNetworkAccess_STATUS_Disabled = RegistryProperties_PublicNetworkAccess_STATUS("Disabled") + RegistryProperties_PublicNetworkAccess_STATUS_Enabled = RegistryProperties_PublicNetworkAccess_STATUS("Enabled") +) + +// Mapping from string to RegistryProperties_PublicNetworkAccess_STATUS +var registryProperties_PublicNetworkAccess_STATUS_Values = map[string]RegistryProperties_PublicNetworkAccess_STATUS{ + "disabled": RegistryProperties_PublicNetworkAccess_STATUS_Disabled, + "enabled": RegistryProperties_PublicNetworkAccess_STATUS_Enabled, +} + +// +kubebuilder:validation:Enum={"Disabled","Enabled"} +type RegistryProperties_ZoneRedundancy string + +const ( + RegistryProperties_ZoneRedundancy_Disabled = RegistryProperties_ZoneRedundancy("Disabled") + RegistryProperties_ZoneRedundancy_Enabled = RegistryProperties_ZoneRedundancy("Enabled") +) + +// Mapping from string to RegistryProperties_ZoneRedundancy +var registryProperties_ZoneRedundancy_Values = map[string]RegistryProperties_ZoneRedundancy{ + "disabled": RegistryProperties_ZoneRedundancy_Disabled, + "enabled": RegistryProperties_ZoneRedundancy_Enabled, +} + +type RegistryProperties_ZoneRedundancy_STATUS string + +const ( + RegistryProperties_ZoneRedundancy_STATUS_Disabled = RegistryProperties_ZoneRedundancy_STATUS("Disabled") + RegistryProperties_ZoneRedundancy_STATUS_Enabled = RegistryProperties_ZoneRedundancy_STATUS("Enabled") +) + +// Mapping from string to RegistryProperties_ZoneRedundancy_STATUS +var registryProperties_ZoneRedundancy_STATUS_Values = map[string]RegistryProperties_ZoneRedundancy_STATUS{ + "disabled": RegistryProperties_ZoneRedundancy_STATUS_Disabled, + "enabled": RegistryProperties_ZoneRedundancy_STATUS_Enabled, +} + +// The SKU of a container registry. +type Sku struct { + // +kubebuilder:validation:Required + // Name: The SKU name of the container registry. Required for registry creation. + Name *Sku_Name `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 { + var temp string + temp = string(*sku.Name) + name := arm.Sku_Name(temp) + 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 { + var temp string + temp = string(*typedInput.Name) + name := Sku_Name(temp) + 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 + if source.Name != nil { + name := *source.Name + nameTemp := genruntime.ToEnum(name, sku_Name_Values) + sku.Name = &nameTemp + } else { + sku.Name = nil + } + + // 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 + if sku.Name != nil { + name := string(*sku.Name) + destination.Name = &name + } else { + destination.Name = nil + } + + // 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 + if source.Name != nil { + name := genruntime.ToEnum(string(*source.Name), sku_Name_Values) + sku.Name = &name + } else { + sku.Name = nil + } + + // No error + return nil +} + +// The SKU of a container registry. +type Sku_STATUS struct { + // Name: The SKU name of the container registry. Required for registry creation. + Name *Sku_Name_STATUS `json:"name,omitempty"` + + // Tier: The SKU tier based on the SKU name. + Tier *Sku_Tier_STATUS `json:"tier,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 { + var temp string + temp = string(*typedInput.Name) + name := Sku_Name_STATUS(temp) + sku.Name = &name + } + + // Set property "Tier": + if typedInput.Tier != nil { + var temp string + temp = string(*typedInput.Tier) + tier := Sku_Tier_STATUS(temp) + sku.Tier = &tier + } + + // 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 + if source.Name != nil { + name := *source.Name + nameTemp := genruntime.ToEnum(name, sku_Name_STATUS_Values) + sku.Name = &nameTemp + } else { + sku.Name = nil + } + + // Tier + if source.Tier != nil { + tier := *source.Tier + tierTemp := genruntime.ToEnum(tier, sku_Tier_STATUS_Values) + sku.Tier = &tierTemp + } else { + sku.Tier = nil + } + + // 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 + if sku.Name != nil { + name := string(*sku.Name) + destination.Name = &name + } else { + destination.Name = nil + } + + // Tier + if sku.Tier != nil { + tier := string(*sku.Tier) + destination.Tier = &tier + } else { + destination.Tier = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// The status of an Azure resource at the time the operation was called. +type Status_STATUS struct { + // DisplayStatus: The short label for the status. + DisplayStatus *string `json:"displayStatus,omitempty"` + + // Message: The detailed message for the status, including alerts and error messages. + Message *string `json:"message,omitempty"` + + // Timestamp: The timestamp when the status was changed to the current value. + Timestamp *string `json:"timestamp,omitempty"` +} + +var _ genruntime.FromARMConverter = &Status_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (status *Status_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.Status_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (status *Status_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.Status_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.Status_STATUS, got %T", armInput) + } + + // Set property "DisplayStatus": + if typedInput.DisplayStatus != nil { + displayStatus := *typedInput.DisplayStatus + status.DisplayStatus = &displayStatus + } + + // Set property "Message": + if typedInput.Message != nil { + message := *typedInput.Message + status.Message = &message + } + + // Set property "Timestamp": + if typedInput.Timestamp != nil { + timestamp := *typedInput.Timestamp + status.Timestamp = ×tamp + } + + // No error + return nil +} + +// AssignProperties_From_Status_STATUS populates our Status_STATUS from the provided source Status_STATUS +func (status *Status_STATUS) AssignProperties_From_Status_STATUS(source *storage.Status_STATUS) error { + + // DisplayStatus + status.DisplayStatus = genruntime.ClonePointerToString(source.DisplayStatus) + + // Message + status.Message = genruntime.ClonePointerToString(source.Message) + + // Timestamp + status.Timestamp = genruntime.ClonePointerToString(source.Timestamp) + + // No error + return nil +} + +// AssignProperties_To_Status_STATUS populates the provided destination Status_STATUS from our Status_STATUS +func (status *Status_STATUS) AssignProperties_To_Status_STATUS(destination *storage.Status_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // DisplayStatus + destination.DisplayStatus = genruntime.ClonePointerToString(status.DisplayStatus) + + // Message + destination.Message = genruntime.ClonePointerToString(status.Message) + + // Timestamp + destination.Timestamp = genruntime.ClonePointerToString(status.Timestamp) + + // 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 modification (UTC). + LastModifiedAt *string `json:"lastModifiedAt,omitempty"` + + // LastModifiedBy: The identity that last modified the resource. + LastModifiedBy *string `json:"lastModifiedBy,omitempty"` + + // LastModifiedByType: The type of identity that last modified the resource. + LastModifiedByType *SystemData_LastModifiedByType_STATUS `json:"lastModifiedByType,omitempty"` +} + +var _ genruntime.FromARMConverter = &SystemData_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (data *SystemData_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.SystemData_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (data *SystemData_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.SystemData_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.SystemData_STATUS, got %T", armInput) + } + + // Set property "CreatedAt": + if typedInput.CreatedAt != nil { + createdAt := *typedInput.CreatedAt + data.CreatedAt = &createdAt + } + + // Set property "CreatedBy": + if typedInput.CreatedBy != nil { + createdBy := *typedInput.CreatedBy + data.CreatedBy = &createdBy + } + + // Set property "CreatedByType": + if typedInput.CreatedByType != nil { + var temp string + temp = string(*typedInput.CreatedByType) + createdByType := SystemData_CreatedByType_STATUS(temp) + data.CreatedByType = &createdByType + } + + // Set property "LastModifiedAt": + if typedInput.LastModifiedAt != nil { + lastModifiedAt := *typedInput.LastModifiedAt + data.LastModifiedAt = &lastModifiedAt + } + + // Set property "LastModifiedBy": + if typedInput.LastModifiedBy != nil { + lastModifiedBy := *typedInput.LastModifiedBy + data.LastModifiedBy = &lastModifiedBy + } + + // Set property "LastModifiedByType": + if typedInput.LastModifiedByType != nil { + var temp string + temp = string(*typedInput.LastModifiedByType) + lastModifiedByType := SystemData_LastModifiedByType_STATUS(temp) + data.LastModifiedByType = &lastModifiedByType + } + + // No error + return nil +} + +// AssignProperties_From_SystemData_STATUS populates our SystemData_STATUS from the provided source SystemData_STATUS +func (data *SystemData_STATUS) AssignProperties_From_SystemData_STATUS(source *storage.SystemData_STATUS) error { + + // CreatedAt + data.CreatedAt = genruntime.ClonePointerToString(source.CreatedAt) + + // CreatedBy + data.CreatedBy = genruntime.ClonePointerToString(source.CreatedBy) + + // CreatedByType + if source.CreatedByType != nil { + createdByType := *source.CreatedByType + createdByTypeTemp := genruntime.ToEnum(createdByType, systemData_CreatedByType_STATUS_Values) + data.CreatedByType = &createdByTypeTemp + } else { + data.CreatedByType = nil + } + + // LastModifiedAt + data.LastModifiedAt = genruntime.ClonePointerToString(source.LastModifiedAt) + + // LastModifiedBy + data.LastModifiedBy = genruntime.ClonePointerToString(source.LastModifiedBy) + + // LastModifiedByType + if source.LastModifiedByType != nil { + lastModifiedByType := *source.LastModifiedByType + lastModifiedByTypeTemp := genruntime.ToEnum(lastModifiedByType, systemData_LastModifiedByType_STATUS_Values) + data.LastModifiedByType = &lastModifiedByTypeTemp + } else { + data.LastModifiedByType = nil + } + + // No error + return nil +} + +// AssignProperties_To_SystemData_STATUS populates the provided destination SystemData_STATUS from our SystemData_STATUS +func (data *SystemData_STATUS) AssignProperties_To_SystemData_STATUS(destination *storage.SystemData_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // CreatedAt + destination.CreatedAt = genruntime.ClonePointerToString(data.CreatedAt) + + // CreatedBy + destination.CreatedBy = genruntime.ClonePointerToString(data.CreatedBy) + + // CreatedByType + if data.CreatedByType != nil { + createdByType := string(*data.CreatedByType) + destination.CreatedByType = &createdByType + } else { + destination.CreatedByType = nil + } + + // LastModifiedAt + destination.LastModifiedAt = genruntime.ClonePointerToString(data.LastModifiedAt) + + // LastModifiedBy + destination.LastModifiedBy = genruntime.ClonePointerToString(data.LastModifiedBy) + + // LastModifiedByType + if data.LastModifiedByType != nil { + lastModifiedByType := string(*data.LastModifiedByType) + destination.LastModifiedByType = &lastModifiedByType + } else { + destination.LastModifiedByType = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// +kubebuilder:validation:Enum={"disabled","enabled"} +type EncryptionProperty_Status string + +const ( + EncryptionProperty_Status_Disabled = EncryptionProperty_Status("disabled") + EncryptionProperty_Status_Enabled = EncryptionProperty_Status("enabled") +) + +// Mapping from string to EncryptionProperty_Status +var encryptionProperty_Status_Values = map[string]EncryptionProperty_Status{ + "disabled": EncryptionProperty_Status_Disabled, + "enabled": EncryptionProperty_Status_Enabled, +} + +type EncryptionProperty_Status_STATUS string + +const ( + EncryptionProperty_Status_STATUS_Disabled = EncryptionProperty_Status_STATUS("disabled") + EncryptionProperty_Status_STATUS_Enabled = EncryptionProperty_Status_STATUS("enabled") +) + +// Mapping from string to EncryptionProperty_Status_STATUS +var encryptionProperty_Status_STATUS_Values = map[string]EncryptionProperty_Status_STATUS{ + "disabled": EncryptionProperty_Status_STATUS_Disabled, + "enabled": EncryptionProperty_Status_STATUS_Enabled, +} + +// The export policy for a container registry. +type ExportPolicy struct { + // Status: The value that indicates whether the policy is enabled or not. + Status *ExportPolicy_Status `json:"status,omitempty"` +} + +var _ genruntime.ARMTransformer = &ExportPolicy{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (policy *ExportPolicy) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if policy == nil { + return nil, nil + } + result := &arm.ExportPolicy{} + + // Set property "Status": + if policy.Status != nil { + var temp string + temp = string(*policy.Status) + status := arm.ExportPolicy_Status(temp) + result.Status = &status + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (policy *ExportPolicy) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ExportPolicy{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (policy *ExportPolicy) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ExportPolicy) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ExportPolicy, got %T", armInput) + } + + // Set property "Status": + if typedInput.Status != nil { + var temp string + temp = string(*typedInput.Status) + status := ExportPolicy_Status(temp) + policy.Status = &status + } + + // No error + return nil +} + +// AssignProperties_From_ExportPolicy populates our ExportPolicy from the provided source ExportPolicy +func (policy *ExportPolicy) AssignProperties_From_ExportPolicy(source *storage.ExportPolicy) error { + + // Status + if source.Status != nil { + status := *source.Status + statusTemp := genruntime.ToEnum(status, exportPolicy_Status_Values) + policy.Status = &statusTemp + } else { + policy.Status = nil + } + + // No error + return nil +} + +// AssignProperties_To_ExportPolicy populates the provided destination ExportPolicy from our ExportPolicy +func (policy *ExportPolicy) AssignProperties_To_ExportPolicy(destination *storage.ExportPolicy) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Status + if policy.Status != nil { + status := string(*policy.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 +} + +// Initialize_From_ExportPolicy_STATUS populates our ExportPolicy from the provided source ExportPolicy_STATUS +func (policy *ExportPolicy) Initialize_From_ExportPolicy_STATUS(source *ExportPolicy_STATUS) error { + + // Status + if source.Status != nil { + status := genruntime.ToEnum(string(*source.Status), exportPolicy_Status_Values) + policy.Status = &status + } else { + policy.Status = nil + } + + // No error + return nil +} + +// The export policy for a container registry. +type ExportPolicy_STATUS struct { + // Status: The value that indicates whether the policy is enabled or not. + Status *ExportPolicy_Status_STATUS `json:"status,omitempty"` +} + +var _ genruntime.FromARMConverter = &ExportPolicy_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (policy *ExportPolicy_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.ExportPolicy_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (policy *ExportPolicy_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.ExportPolicy_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.ExportPolicy_STATUS, got %T", armInput) + } + + // Set property "Status": + if typedInput.Status != nil { + var temp string + temp = string(*typedInput.Status) + status := ExportPolicy_Status_STATUS(temp) + policy.Status = &status + } + + // No error + return nil +} + +// AssignProperties_From_ExportPolicy_STATUS populates our ExportPolicy_STATUS from the provided source ExportPolicy_STATUS +func (policy *ExportPolicy_STATUS) AssignProperties_From_ExportPolicy_STATUS(source *storage.ExportPolicy_STATUS) error { + + // Status + if source.Status != nil { + status := *source.Status + statusTemp := genruntime.ToEnum(status, exportPolicy_Status_STATUS_Values) + policy.Status = &statusTemp + } else { + policy.Status = nil + } + + // No error + return nil +} + +// AssignProperties_To_ExportPolicy_STATUS populates the provided destination ExportPolicy_STATUS from our ExportPolicy_STATUS +func (policy *ExportPolicy_STATUS) AssignProperties_To_ExportPolicy_STATUS(destination *storage.ExportPolicy_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Status + if policy.Status != nil { + status := string(*policy.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 IdentityProperties_Type string + +const ( + IdentityProperties_Type_None = IdentityProperties_Type("None") + IdentityProperties_Type_SystemAssigned = IdentityProperties_Type("SystemAssigned") + IdentityProperties_Type_SystemAssignedUserAssigned = IdentityProperties_Type("SystemAssigned, UserAssigned") + IdentityProperties_Type_UserAssigned = IdentityProperties_Type("UserAssigned") +) + +// Mapping from string to IdentityProperties_Type +var identityProperties_Type_Values = map[string]IdentityProperties_Type{ + "none": IdentityProperties_Type_None, + "systemassigned": IdentityProperties_Type_SystemAssigned, + "systemassigned, userassigned": IdentityProperties_Type_SystemAssignedUserAssigned, + "userassigned": IdentityProperties_Type_UserAssigned, +} + +type IdentityProperties_Type_STATUS string + +const ( + IdentityProperties_Type_STATUS_None = IdentityProperties_Type_STATUS("None") + IdentityProperties_Type_STATUS_SystemAssigned = IdentityProperties_Type_STATUS("SystemAssigned") + IdentityProperties_Type_STATUS_SystemAssignedUserAssigned = IdentityProperties_Type_STATUS("SystemAssigned, UserAssigned") + IdentityProperties_Type_STATUS_UserAssigned = IdentityProperties_Type_STATUS("UserAssigned") +) + +// Mapping from string to IdentityProperties_Type_STATUS +var identityProperties_Type_STATUS_Values = map[string]IdentityProperties_Type_STATUS{ + "none": IdentityProperties_Type_STATUS_None, + "systemassigned": IdentityProperties_Type_STATUS_SystemAssigned, + "systemassigned, userassigned": IdentityProperties_Type_STATUS_SystemAssignedUserAssigned, + "userassigned": IdentityProperties_Type_STATUS_UserAssigned, +} + +// IP rule with specific IP or IP range in CIDR format. +type IPRule struct { + // Action: The action of IP ACL rule. + Action *IPRule_Action `json:"action,omitempty"` + + // +kubebuilder:validation:Required + // Value: Specifies the IP or IP range in CIDR format. Only IPV4 address is allowed. + Value *string `json:"value,omitempty"` +} + +var _ genruntime.ARMTransformer = &IPRule{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (rule *IPRule) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if rule == nil { + return nil, nil + } + result := &arm.IPRule{} + + // Set property "Action": + if rule.Action != nil { + var temp string + temp = string(*rule.Action) + action := arm.IPRule_Action(temp) + result.Action = &action + } + + // Set property "Value": + if rule.Value != nil { + value := *rule.Value + result.Value = &value + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (rule *IPRule) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.IPRule{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (rule *IPRule) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.IPRule) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.IPRule, got %T", armInput) + } + + // Set property "Action": + if typedInput.Action != nil { + var temp string + temp = string(*typedInput.Action) + action := IPRule_Action(temp) + rule.Action = &action + } + + // Set property "Value": + if typedInput.Value != nil { + value := *typedInput.Value + rule.Value = &value + } + + // No error + return nil +} + +// AssignProperties_From_IPRule populates our IPRule from the provided source IPRule +func (rule *IPRule) AssignProperties_From_IPRule(source *storage.IPRule) error { + + // Action + if source.Action != nil { + action := *source.Action + actionTemp := genruntime.ToEnum(action, iPRule_Action_Values) + rule.Action = &actionTemp + } else { + rule.Action = nil + } + + // Value + rule.Value = genruntime.ClonePointerToString(source.Value) + + // No error + return nil +} + +// AssignProperties_To_IPRule populates the provided destination IPRule from our IPRule +func (rule *IPRule) AssignProperties_To_IPRule(destination *storage.IPRule) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Action + if rule.Action != nil { + action := string(*rule.Action) + destination.Action = &action + } else { + destination.Action = nil + } + + // Value + destination.Value = genruntime.ClonePointerToString(rule.Value) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_IPRule_STATUS populates our IPRule from the provided source IPRule_STATUS +func (rule *IPRule) Initialize_From_IPRule_STATUS(source *IPRule_STATUS) error { + + // Action + if source.Action != nil { + action := genruntime.ToEnum(string(*source.Action), iPRule_Action_Values) + rule.Action = &action + } else { + rule.Action = nil + } + + // Value + rule.Value = genruntime.ClonePointerToString(source.Value) + + // No error + return nil +} + +// IP rule with specific IP or IP range in CIDR format. +type IPRule_STATUS struct { + // Action: The action of IP ACL rule. + Action *IPRule_Action_STATUS `json:"action,omitempty"` + + // Value: Specifies the IP or IP range in CIDR format. Only IPV4 address is allowed. + Value *string `json:"value,omitempty"` +} + +var _ genruntime.FromARMConverter = &IPRule_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (rule *IPRule_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.IPRule_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (rule *IPRule_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.IPRule_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.IPRule_STATUS, got %T", armInput) + } + + // Set property "Action": + if typedInput.Action != nil { + var temp string + temp = string(*typedInput.Action) + action := IPRule_Action_STATUS(temp) + rule.Action = &action + } + + // Set property "Value": + if typedInput.Value != nil { + value := *typedInput.Value + rule.Value = &value + } + + // No error + return nil +} + +// AssignProperties_From_IPRule_STATUS populates our IPRule_STATUS from the provided source IPRule_STATUS +func (rule *IPRule_STATUS) AssignProperties_From_IPRule_STATUS(source *storage.IPRule_STATUS) error { + + // Action + if source.Action != nil { + action := *source.Action + actionTemp := genruntime.ToEnum(action, iPRule_Action_STATUS_Values) + rule.Action = &actionTemp + } else { + rule.Action = nil + } + + // Value + rule.Value = genruntime.ClonePointerToString(source.Value) + + // No error + return nil +} + +// AssignProperties_To_IPRule_STATUS populates the provided destination IPRule_STATUS from our IPRule_STATUS +func (rule *IPRule_STATUS) AssignProperties_To_IPRule_STATUS(destination *storage.IPRule_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Action + if rule.Action != nil { + action := string(*rule.Action) + destination.Action = &action + } else { + destination.Action = nil + } + + // Value + destination.Value = genruntime.ClonePointerToString(rule.Value) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +type KeyVaultProperties struct { + // Identity: The client id of the identity which will be used to access key vault. + Identity *string `json:"identity,omitempty" optionalConfigMapPair:"Identity"` + + // IdentityFromConfig: The client id of the identity which will be used to access key vault. + IdentityFromConfig *genruntime.ConfigMapReference `json:"identityFromConfig,omitempty" optionalConfigMapPair:"Identity"` + + // KeyIdentifier: Key vault uri to access the encryption key. + 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 "Identity": + if properties.Identity != nil { + identity := *properties.Identity + result.Identity = &identity + } + if properties.IdentityFromConfig != nil { + identityValue, err := resolved.ResolvedConfigMaps.Lookup(*properties.IdentityFromConfig) + if err != nil { + return nil, eris.Wrap(err, "looking up configmap for property Identity") + } + identity := identityValue + result.Identity = &identity + } + + // 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 "Identity": + if typedInput.Identity != nil { + identity := *typedInput.Identity + properties.Identity = &identity + } + + // no assignment for property "IdentityFromConfig" + + // 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 { + + // Identity + properties.Identity = genruntime.ClonePointerToString(source.Identity) + + // IdentityFromConfig + if source.IdentityFromConfig != nil { + identityFromConfig := source.IdentityFromConfig.Copy() + properties.IdentityFromConfig = &identityFromConfig + } else { + properties.IdentityFromConfig = nil + } + + // 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() + + // Identity + destination.Identity = genruntime.ClonePointerToString(properties.Identity) + + // IdentityFromConfig + if properties.IdentityFromConfig != nil { + identityFromConfig := properties.IdentityFromConfig.Copy() + destination.IdentityFromConfig = &identityFromConfig + } else { + destination.IdentityFromConfig = nil + } + + // 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 { + + // Identity + properties.Identity = genruntime.ClonePointerToString(source.Identity) + + // KeyIdentifier + properties.KeyIdentifier = genruntime.ClonePointerToString(source.KeyIdentifier) + + // No error + return nil +} + +type KeyVaultProperties_STATUS struct { + // Identity: The client id of the identity which will be used to access key vault. + Identity *string `json:"identity,omitempty"` + + // KeyIdentifier: Key vault uri to access the encryption key. + KeyIdentifier *string `json:"keyIdentifier,omitempty"` + + // KeyRotationEnabled: Auto key rotation status for a CMK enabled registry. + KeyRotationEnabled *bool `json:"keyRotationEnabled,omitempty"` + + // LastKeyRotationTimestamp: Timestamp of the last successful key rotation. + LastKeyRotationTimestamp *string `json:"lastKeyRotationTimestamp,omitempty"` + + // VersionedKeyIdentifier: The fully qualified key identifier that includes the version of the key that is actually used + // for encryption. + VersionedKeyIdentifier *string `json:"versionedKeyIdentifier,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 "Identity": + if typedInput.Identity != nil { + identity := *typedInput.Identity + properties.Identity = &identity + } + + // Set property "KeyIdentifier": + if typedInput.KeyIdentifier != nil { + keyIdentifier := *typedInput.KeyIdentifier + properties.KeyIdentifier = &keyIdentifier + } + + // Set property "KeyRotationEnabled": + if typedInput.KeyRotationEnabled != nil { + keyRotationEnabled := *typedInput.KeyRotationEnabled + properties.KeyRotationEnabled = &keyRotationEnabled + } + + // Set property "LastKeyRotationTimestamp": + if typedInput.LastKeyRotationTimestamp != nil { + lastKeyRotationTimestamp := *typedInput.LastKeyRotationTimestamp + properties.LastKeyRotationTimestamp = &lastKeyRotationTimestamp + } + + // Set property "VersionedKeyIdentifier": + if typedInput.VersionedKeyIdentifier != nil { + versionedKeyIdentifier := *typedInput.VersionedKeyIdentifier + properties.VersionedKeyIdentifier = &versionedKeyIdentifier + } + + // 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 { + + // Identity + properties.Identity = genruntime.ClonePointerToString(source.Identity) + + // KeyIdentifier + properties.KeyIdentifier = genruntime.ClonePointerToString(source.KeyIdentifier) + + // KeyRotationEnabled + if source.KeyRotationEnabled != nil { + keyRotationEnabled := *source.KeyRotationEnabled + properties.KeyRotationEnabled = &keyRotationEnabled + } else { + properties.KeyRotationEnabled = nil + } + + // LastKeyRotationTimestamp + properties.LastKeyRotationTimestamp = genruntime.ClonePointerToString(source.LastKeyRotationTimestamp) + + // VersionedKeyIdentifier + properties.VersionedKeyIdentifier = genruntime.ClonePointerToString(source.VersionedKeyIdentifier) + + // 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() + + // Identity + destination.Identity = genruntime.ClonePointerToString(properties.Identity) + + // KeyIdentifier + destination.KeyIdentifier = genruntime.ClonePointerToString(properties.KeyIdentifier) + + // KeyRotationEnabled + if properties.KeyRotationEnabled != nil { + keyRotationEnabled := *properties.KeyRotationEnabled + destination.KeyRotationEnabled = &keyRotationEnabled + } else { + destination.KeyRotationEnabled = nil + } + + // LastKeyRotationTimestamp + destination.LastKeyRotationTimestamp = genruntime.ClonePointerToString(properties.LastKeyRotationTimestamp) + + // VersionedKeyIdentifier + destination.VersionedKeyIdentifier = genruntime.ClonePointerToString(properties.VersionedKeyIdentifier) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// +kubebuilder:validation:Enum={"Allow","Deny"} +type NetworkRuleSet_DefaultAction string + +const ( + NetworkRuleSet_DefaultAction_Allow = NetworkRuleSet_DefaultAction("Allow") + NetworkRuleSet_DefaultAction_Deny = NetworkRuleSet_DefaultAction("Deny") +) + +// Mapping from string to NetworkRuleSet_DefaultAction +var networkRuleSet_DefaultAction_Values = map[string]NetworkRuleSet_DefaultAction{ + "allow": NetworkRuleSet_DefaultAction_Allow, + "deny": NetworkRuleSet_DefaultAction_Deny, +} + +type NetworkRuleSet_DefaultAction_STATUS string + +const ( + NetworkRuleSet_DefaultAction_STATUS_Allow = NetworkRuleSet_DefaultAction_STATUS("Allow") + NetworkRuleSet_DefaultAction_STATUS_Deny = NetworkRuleSet_DefaultAction_STATUS("Deny") +) + +// Mapping from string to NetworkRuleSet_DefaultAction_STATUS +var networkRuleSet_DefaultAction_STATUS_Values = map[string]NetworkRuleSet_DefaultAction_STATUS{ + "allow": NetworkRuleSet_DefaultAction_STATUS_Allow, + "deny": NetworkRuleSet_DefaultAction_STATUS_Deny, +} + +// The quarantine policy for a container registry. +type QuarantinePolicy struct { + // Status: The value that indicates whether the policy is enabled or not. + Status *QuarantinePolicy_Status `json:"status,omitempty"` +} + +var _ genruntime.ARMTransformer = &QuarantinePolicy{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (policy *QuarantinePolicy) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if policy == nil { + return nil, nil + } + result := &arm.QuarantinePolicy{} + + // Set property "Status": + if policy.Status != nil { + var temp string + temp = string(*policy.Status) + status := arm.QuarantinePolicy_Status(temp) + result.Status = &status + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (policy *QuarantinePolicy) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.QuarantinePolicy{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (policy *QuarantinePolicy) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.QuarantinePolicy) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.QuarantinePolicy, got %T", armInput) + } + + // Set property "Status": + if typedInput.Status != nil { + var temp string + temp = string(*typedInput.Status) + status := QuarantinePolicy_Status(temp) + policy.Status = &status + } + + // No error + return nil +} + +// AssignProperties_From_QuarantinePolicy populates our QuarantinePolicy from the provided source QuarantinePolicy +func (policy *QuarantinePolicy) AssignProperties_From_QuarantinePolicy(source *storage.QuarantinePolicy) error { + + // Status + if source.Status != nil { + status := *source.Status + statusTemp := genruntime.ToEnum(status, quarantinePolicy_Status_Values) + policy.Status = &statusTemp + } else { + policy.Status = nil + } + + // No error + return nil +} + +// AssignProperties_To_QuarantinePolicy populates the provided destination QuarantinePolicy from our QuarantinePolicy +func (policy *QuarantinePolicy) AssignProperties_To_QuarantinePolicy(destination *storage.QuarantinePolicy) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Status + if policy.Status != nil { + status := string(*policy.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 +} + +// Initialize_From_QuarantinePolicy_STATUS populates our QuarantinePolicy from the provided source QuarantinePolicy_STATUS +func (policy *QuarantinePolicy) Initialize_From_QuarantinePolicy_STATUS(source *QuarantinePolicy_STATUS) error { + + // Status + if source.Status != nil { + status := genruntime.ToEnum(string(*source.Status), quarantinePolicy_Status_Values) + policy.Status = &status + } else { + policy.Status = nil + } + + // No error + return nil +} + +// The quarantine policy for a container registry. +type QuarantinePolicy_STATUS struct { + // Status: The value that indicates whether the policy is enabled or not. + Status *QuarantinePolicy_Status_STATUS `json:"status,omitempty"` +} + +var _ genruntime.FromARMConverter = &QuarantinePolicy_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (policy *QuarantinePolicy_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.QuarantinePolicy_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (policy *QuarantinePolicy_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.QuarantinePolicy_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.QuarantinePolicy_STATUS, got %T", armInput) + } + + // Set property "Status": + if typedInput.Status != nil { + var temp string + temp = string(*typedInput.Status) + status := QuarantinePolicy_Status_STATUS(temp) + policy.Status = &status + } + + // No error + return nil +} + +// AssignProperties_From_QuarantinePolicy_STATUS populates our QuarantinePolicy_STATUS from the provided source QuarantinePolicy_STATUS +func (policy *QuarantinePolicy_STATUS) AssignProperties_From_QuarantinePolicy_STATUS(source *storage.QuarantinePolicy_STATUS) error { + + // Status + if source.Status != nil { + status := *source.Status + statusTemp := genruntime.ToEnum(status, quarantinePolicy_Status_STATUS_Values) + policy.Status = &statusTemp + } else { + policy.Status = nil + } + + // No error + return nil +} + +// AssignProperties_To_QuarantinePolicy_STATUS populates the provided destination QuarantinePolicy_STATUS from our QuarantinePolicy_STATUS +func (policy *QuarantinePolicy_STATUS) AssignProperties_To_QuarantinePolicy_STATUS(destination *storage.QuarantinePolicy_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Status + if policy.Status != nil { + status := string(*policy.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 +} + +// The retention policy for a container registry. +type RetentionPolicy struct { + // Days: The number of days to retain an untagged manifest after which it gets purged. + Days *int `json:"days,omitempty"` + + // Status: The value that indicates whether the policy is enabled or not. + Status *RetentionPolicy_Status `json:"status,omitempty"` +} + +var _ genruntime.ARMTransformer = &RetentionPolicy{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (policy *RetentionPolicy) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if policy == nil { + return nil, nil + } + result := &arm.RetentionPolicy{} + + // Set property "Days": + if policy.Days != nil { + days := *policy.Days + result.Days = &days + } + + // Set property "Status": + if policy.Status != nil { + var temp string + temp = string(*policy.Status) + status := arm.RetentionPolicy_Status(temp) + result.Status = &status + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (policy *RetentionPolicy) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.RetentionPolicy{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (policy *RetentionPolicy) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.RetentionPolicy) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.RetentionPolicy, got %T", armInput) + } + + // Set property "Days": + if typedInput.Days != nil { + days := *typedInput.Days + policy.Days = &days + } + + // Set property "Status": + if typedInput.Status != nil { + var temp string + temp = string(*typedInput.Status) + status := RetentionPolicy_Status(temp) + policy.Status = &status + } + + // No error + return nil +} + +// AssignProperties_From_RetentionPolicy populates our RetentionPolicy from the provided source RetentionPolicy +func (policy *RetentionPolicy) AssignProperties_From_RetentionPolicy(source *storage.RetentionPolicy) error { + + // Days + policy.Days = genruntime.ClonePointerToInt(source.Days) + + // Status + if source.Status != nil { + status := *source.Status + statusTemp := genruntime.ToEnum(status, retentionPolicy_Status_Values) + policy.Status = &statusTemp + } else { + policy.Status = nil + } + + // No error + return nil +} + +// AssignProperties_To_RetentionPolicy populates the provided destination RetentionPolicy from our RetentionPolicy +func (policy *RetentionPolicy) AssignProperties_To_RetentionPolicy(destination *storage.RetentionPolicy) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Days + destination.Days = genruntime.ClonePointerToInt(policy.Days) + + // Status + if policy.Status != nil { + status := string(*policy.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 +} + +// Initialize_From_RetentionPolicy_STATUS populates our RetentionPolicy from the provided source RetentionPolicy_STATUS +func (policy *RetentionPolicy) Initialize_From_RetentionPolicy_STATUS(source *RetentionPolicy_STATUS) error { + + // Days + policy.Days = genruntime.ClonePointerToInt(source.Days) + + // Status + if source.Status != nil { + status := genruntime.ToEnum(string(*source.Status), retentionPolicy_Status_Values) + policy.Status = &status + } else { + policy.Status = nil + } + + // No error + return nil +} + +// The retention policy for a container registry. +type RetentionPolicy_STATUS struct { + // Days: The number of days to retain an untagged manifest after which it gets purged. + Days *int `json:"days,omitempty"` + + // LastUpdatedTime: The timestamp when the policy was last updated. + LastUpdatedTime *string `json:"lastUpdatedTime,omitempty"` + + // Status: The value that indicates whether the policy is enabled or not. + Status *RetentionPolicy_Status_STATUS `json:"status,omitempty"` +} + +var _ genruntime.FromARMConverter = &RetentionPolicy_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (policy *RetentionPolicy_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.RetentionPolicy_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (policy *RetentionPolicy_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.RetentionPolicy_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.RetentionPolicy_STATUS, got %T", armInput) + } + + // Set property "Days": + if typedInput.Days != nil { + days := *typedInput.Days + policy.Days = &days + } + + // Set property "LastUpdatedTime": + if typedInput.LastUpdatedTime != nil { + lastUpdatedTime := *typedInput.LastUpdatedTime + policy.LastUpdatedTime = &lastUpdatedTime + } + + // Set property "Status": + if typedInput.Status != nil { + var temp string + temp = string(*typedInput.Status) + status := RetentionPolicy_Status_STATUS(temp) + policy.Status = &status + } + + // No error + return nil +} + +// AssignProperties_From_RetentionPolicy_STATUS populates our RetentionPolicy_STATUS from the provided source RetentionPolicy_STATUS +func (policy *RetentionPolicy_STATUS) AssignProperties_From_RetentionPolicy_STATUS(source *storage.RetentionPolicy_STATUS) error { + + // Days + policy.Days = genruntime.ClonePointerToInt(source.Days) + + // LastUpdatedTime + policy.LastUpdatedTime = genruntime.ClonePointerToString(source.LastUpdatedTime) + + // Status + if source.Status != nil { + status := *source.Status + statusTemp := genruntime.ToEnum(status, retentionPolicy_Status_STATUS_Values) + policy.Status = &statusTemp + } else { + policy.Status = nil + } + + // No error + return nil +} + +// AssignProperties_To_RetentionPolicy_STATUS populates the provided destination RetentionPolicy_STATUS from our RetentionPolicy_STATUS +func (policy *RetentionPolicy_STATUS) AssignProperties_To_RetentionPolicy_STATUS(destination *storage.RetentionPolicy_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Days + destination.Days = genruntime.ClonePointerToInt(policy.Days) + + // LastUpdatedTime + destination.LastUpdatedTime = genruntime.ClonePointerToString(policy.LastUpdatedTime) + + // Status + if policy.Status != nil { + status := string(*policy.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={"Basic","Classic","Premium","Standard"} +type Sku_Name string + +const ( + Sku_Name_Basic = Sku_Name("Basic") + Sku_Name_Classic = Sku_Name("Classic") + Sku_Name_Premium = Sku_Name("Premium") + Sku_Name_Standard = Sku_Name("Standard") +) + +// Mapping from string to Sku_Name +var sku_Name_Values = map[string]Sku_Name{ + "basic": Sku_Name_Basic, + "classic": Sku_Name_Classic, + "premium": Sku_Name_Premium, + "standard": Sku_Name_Standard, +} + +type Sku_Name_STATUS string + +const ( + Sku_Name_STATUS_Basic = Sku_Name_STATUS("Basic") + Sku_Name_STATUS_Classic = Sku_Name_STATUS("Classic") + Sku_Name_STATUS_Premium = Sku_Name_STATUS("Premium") + Sku_Name_STATUS_Standard = Sku_Name_STATUS("Standard") +) + +// Mapping from string to Sku_Name_STATUS +var sku_Name_STATUS_Values = map[string]Sku_Name_STATUS{ + "basic": Sku_Name_STATUS_Basic, + "classic": Sku_Name_STATUS_Classic, + "premium": Sku_Name_STATUS_Premium, + "standard": Sku_Name_STATUS_Standard, +} + +type Sku_Tier_STATUS string + +const ( + Sku_Tier_STATUS_Basic = Sku_Tier_STATUS("Basic") + Sku_Tier_STATUS_Classic = Sku_Tier_STATUS("Classic") + Sku_Tier_STATUS_Premium = Sku_Tier_STATUS("Premium") + Sku_Tier_STATUS_Standard = Sku_Tier_STATUS("Standard") +) + +// Mapping from string to Sku_Tier_STATUS +var sku_Tier_STATUS_Values = map[string]Sku_Tier_STATUS{ + "basic": Sku_Tier_STATUS_Basic, + "classic": Sku_Tier_STATUS_Classic, + "premium": Sku_Tier_STATUS_Premium, + "standard": Sku_Tier_STATUS_Standard, +} + +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, +} + +// The content trust policy for a container registry. +type TrustPolicy struct { + // Status: The value that indicates whether the policy is enabled or not. + Status *TrustPolicy_Status `json:"status,omitempty"` + + // Type: The type of trust policy. + Type *TrustPolicy_Type `json:"type,omitempty"` +} + +var _ genruntime.ARMTransformer = &TrustPolicy{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (policy *TrustPolicy) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if policy == nil { + return nil, nil + } + result := &arm.TrustPolicy{} + + // Set property "Status": + if policy.Status != nil { + var temp string + temp = string(*policy.Status) + status := arm.TrustPolicy_Status(temp) + result.Status = &status + } + + // Set property "Type": + if policy.Type != nil { + var temp string + temp = string(*policy.Type) + typeVar := arm.TrustPolicy_Type(temp) + result.Type = &typeVar + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (policy *TrustPolicy) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.TrustPolicy{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (policy *TrustPolicy) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.TrustPolicy) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.TrustPolicy, got %T", armInput) + } + + // Set property "Status": + if typedInput.Status != nil { + var temp string + temp = string(*typedInput.Status) + status := TrustPolicy_Status(temp) + policy.Status = &status + } + + // Set property "Type": + if typedInput.Type != nil { + var temp string + temp = string(*typedInput.Type) + typeVar := TrustPolicy_Type(temp) + policy.Type = &typeVar + } + + // No error + return nil +} + +// AssignProperties_From_TrustPolicy populates our TrustPolicy from the provided source TrustPolicy +func (policy *TrustPolicy) AssignProperties_From_TrustPolicy(source *storage.TrustPolicy) error { + + // Status + if source.Status != nil { + status := *source.Status + statusTemp := genruntime.ToEnum(status, trustPolicy_Status_Values) + policy.Status = &statusTemp + } else { + policy.Status = nil + } + + // Type + if source.Type != nil { + typeVar := *source.Type + typeTemp := genruntime.ToEnum(typeVar, trustPolicy_Type_Values) + policy.Type = &typeTemp + } else { + policy.Type = nil + } + + // No error + return nil +} + +// AssignProperties_To_TrustPolicy populates the provided destination TrustPolicy from our TrustPolicy +func (policy *TrustPolicy) AssignProperties_To_TrustPolicy(destination *storage.TrustPolicy) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Status + if policy.Status != nil { + status := string(*policy.Status) + destination.Status = &status + } else { + destination.Status = nil + } + + // Type + if policy.Type != nil { + typeVar := string(*policy.Type) + destination.Type = &typeVar + } else { + destination.Type = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_TrustPolicy_STATUS populates our TrustPolicy from the provided source TrustPolicy_STATUS +func (policy *TrustPolicy) Initialize_From_TrustPolicy_STATUS(source *TrustPolicy_STATUS) error { + + // Status + if source.Status != nil { + status := genruntime.ToEnum(string(*source.Status), trustPolicy_Status_Values) + policy.Status = &status + } else { + policy.Status = nil + } + + // Type + if source.Type != nil { + typeVar := genruntime.ToEnum(string(*source.Type), trustPolicy_Type_Values) + policy.Type = &typeVar + } else { + policy.Type = nil + } + + // No error + return nil +} + +// The content trust policy for a container registry. +type TrustPolicy_STATUS struct { + // Status: The value that indicates whether the policy is enabled or not. + Status *TrustPolicy_Status_STATUS `json:"status,omitempty"` + + // Type: The type of trust policy. + Type *TrustPolicy_Type_STATUS `json:"type,omitempty"` +} + +var _ genruntime.FromARMConverter = &TrustPolicy_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (policy *TrustPolicy_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.TrustPolicy_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (policy *TrustPolicy_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.TrustPolicy_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.TrustPolicy_STATUS, got %T", armInput) + } + + // Set property "Status": + if typedInput.Status != nil { + var temp string + temp = string(*typedInput.Status) + status := TrustPolicy_Status_STATUS(temp) + policy.Status = &status + } + + // Set property "Type": + if typedInput.Type != nil { + var temp string + temp = string(*typedInput.Type) + typeVar := TrustPolicy_Type_STATUS(temp) + policy.Type = &typeVar + } + + // No error + return nil +} + +// AssignProperties_From_TrustPolicy_STATUS populates our TrustPolicy_STATUS from the provided source TrustPolicy_STATUS +func (policy *TrustPolicy_STATUS) AssignProperties_From_TrustPolicy_STATUS(source *storage.TrustPolicy_STATUS) error { + + // Status + if source.Status != nil { + status := *source.Status + statusTemp := genruntime.ToEnum(status, trustPolicy_Status_STATUS_Values) + policy.Status = &statusTemp + } else { + policy.Status = nil + } + + // Type + if source.Type != nil { + typeVar := *source.Type + typeTemp := genruntime.ToEnum(typeVar, trustPolicy_Type_STATUS_Values) + policy.Type = &typeTemp + } else { + policy.Type = nil + } + + // No error + return nil +} + +// AssignProperties_To_TrustPolicy_STATUS populates the provided destination TrustPolicy_STATUS from our TrustPolicy_STATUS +func (policy *TrustPolicy_STATUS) AssignProperties_To_TrustPolicy_STATUS(destination *storage.TrustPolicy_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Status + if policy.Status != nil { + status := string(*policy.Status) + destination.Status = &status + } else { + destination.Status = nil + } + + // Type + if policy.Type != nil { + typeVar := string(*policy.Type) + destination.Type = &typeVar + } else { + destination.Type = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// 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 +} + +type UserIdentityProperties_STATUS struct { + // ClientId: The client id of user assigned identity. + ClientId *string `json:"clientId,omitempty"` + + // PrincipalId: The principal id of user assigned identity. + PrincipalId *string `json:"principalId,omitempty"` +} + +var _ genruntime.FromARMConverter = &UserIdentityProperties_STATUS{} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (properties *UserIdentityProperties_STATUS) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &arm.UserIdentityProperties_STATUS{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (properties *UserIdentityProperties_STATUS) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(arm.UserIdentityProperties_STATUS) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected arm.UserIdentityProperties_STATUS, got %T", armInput) + } + + // Set property "ClientId": + if typedInput.ClientId != nil { + clientId := *typedInput.ClientId + properties.ClientId = &clientId + } + + // Set property "PrincipalId": + if typedInput.PrincipalId != nil { + principalId := *typedInput.PrincipalId + properties.PrincipalId = &principalId + } + + // No error + return nil +} + +// AssignProperties_From_UserIdentityProperties_STATUS populates our UserIdentityProperties_STATUS from the provided source UserIdentityProperties_STATUS +func (properties *UserIdentityProperties_STATUS) AssignProperties_From_UserIdentityProperties_STATUS(source *storage.UserIdentityProperties_STATUS) error { + + // ClientId + properties.ClientId = genruntime.ClonePointerToString(source.ClientId) + + // PrincipalId + properties.PrincipalId = genruntime.ClonePointerToString(source.PrincipalId) + + // No error + return nil +} + +// AssignProperties_To_UserIdentityProperties_STATUS populates the provided destination UserIdentityProperties_STATUS from our UserIdentityProperties_STATUS +func (properties *UserIdentityProperties_STATUS) AssignProperties_To_UserIdentityProperties_STATUS(destination *storage.UserIdentityProperties_STATUS) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // ClientId + destination.ClientId = genruntime.ClonePointerToString(properties.ClientId) + + // PrincipalId + destination.PrincipalId = genruntime.ClonePointerToString(properties.PrincipalId) + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// +kubebuilder:validation:Enum={"disabled","enabled"} +type ExportPolicy_Status string + +const ( + ExportPolicy_Status_Disabled = ExportPolicy_Status("disabled") + ExportPolicy_Status_Enabled = ExportPolicy_Status("enabled") +) + +// Mapping from string to ExportPolicy_Status +var exportPolicy_Status_Values = map[string]ExportPolicy_Status{ + "disabled": ExportPolicy_Status_Disabled, + "enabled": ExportPolicy_Status_Enabled, +} + +type ExportPolicy_Status_STATUS string + +const ( + ExportPolicy_Status_STATUS_Disabled = ExportPolicy_Status_STATUS("disabled") + ExportPolicy_Status_STATUS_Enabled = ExportPolicy_Status_STATUS("enabled") +) + +// Mapping from string to ExportPolicy_Status_STATUS +var exportPolicy_Status_STATUS_Values = map[string]ExportPolicy_Status_STATUS{ + "disabled": ExportPolicy_Status_STATUS_Disabled, + "enabled": ExportPolicy_Status_STATUS_Enabled, +} + +// +kubebuilder:validation:Enum={"Allow"} +type IPRule_Action string + +const IPRule_Action_Allow = IPRule_Action("Allow") + +// Mapping from string to IPRule_Action +var iPRule_Action_Values = map[string]IPRule_Action{ + "allow": IPRule_Action_Allow, +} + +type IPRule_Action_STATUS string + +const IPRule_Action_STATUS_Allow = IPRule_Action_STATUS("Allow") + +// Mapping from string to IPRule_Action_STATUS +var iPRule_Action_STATUS_Values = map[string]IPRule_Action_STATUS{ + "allow": IPRule_Action_STATUS_Allow, +} + +// +kubebuilder:validation:Enum={"disabled","enabled"} +type QuarantinePolicy_Status string + +const ( + QuarantinePolicy_Status_Disabled = QuarantinePolicy_Status("disabled") + QuarantinePolicy_Status_Enabled = QuarantinePolicy_Status("enabled") +) + +// Mapping from string to QuarantinePolicy_Status +var quarantinePolicy_Status_Values = map[string]QuarantinePolicy_Status{ + "disabled": QuarantinePolicy_Status_Disabled, + "enabled": QuarantinePolicy_Status_Enabled, +} + +type QuarantinePolicy_Status_STATUS string + +const ( + QuarantinePolicy_Status_STATUS_Disabled = QuarantinePolicy_Status_STATUS("disabled") + QuarantinePolicy_Status_STATUS_Enabled = QuarantinePolicy_Status_STATUS("enabled") +) + +// Mapping from string to QuarantinePolicy_Status_STATUS +var quarantinePolicy_Status_STATUS_Values = map[string]QuarantinePolicy_Status_STATUS{ + "disabled": QuarantinePolicy_Status_STATUS_Disabled, + "enabled": QuarantinePolicy_Status_STATUS_Enabled, +} + +// +kubebuilder:validation:Enum={"disabled","enabled"} +type RetentionPolicy_Status string + +const ( + RetentionPolicy_Status_Disabled = RetentionPolicy_Status("disabled") + RetentionPolicy_Status_Enabled = RetentionPolicy_Status("enabled") +) + +// Mapping from string to RetentionPolicy_Status +var retentionPolicy_Status_Values = map[string]RetentionPolicy_Status{ + "disabled": RetentionPolicy_Status_Disabled, + "enabled": RetentionPolicy_Status_Enabled, +} + +type RetentionPolicy_Status_STATUS string + +const ( + RetentionPolicy_Status_STATUS_Disabled = RetentionPolicy_Status_STATUS("disabled") + RetentionPolicy_Status_STATUS_Enabled = RetentionPolicy_Status_STATUS("enabled") +) + +// Mapping from string to RetentionPolicy_Status_STATUS +var retentionPolicy_Status_STATUS_Values = map[string]RetentionPolicy_Status_STATUS{ + "disabled": RetentionPolicy_Status_STATUS_Disabled, + "enabled": RetentionPolicy_Status_STATUS_Enabled, +} + +// +kubebuilder:validation:Enum={"disabled","enabled"} +type TrustPolicy_Status string + +const ( + TrustPolicy_Status_Disabled = TrustPolicy_Status("disabled") + TrustPolicy_Status_Enabled = TrustPolicy_Status("enabled") +) + +// Mapping from string to TrustPolicy_Status +var trustPolicy_Status_Values = map[string]TrustPolicy_Status{ + "disabled": TrustPolicy_Status_Disabled, + "enabled": TrustPolicy_Status_Enabled, +} + +type TrustPolicy_Status_STATUS string + +const ( + TrustPolicy_Status_STATUS_Disabled = TrustPolicy_Status_STATUS("disabled") + TrustPolicy_Status_STATUS_Enabled = TrustPolicy_Status_STATUS("enabled") +) + +// Mapping from string to TrustPolicy_Status_STATUS +var trustPolicy_Status_STATUS_Values = map[string]TrustPolicy_Status_STATUS{ + "disabled": TrustPolicy_Status_STATUS_Disabled, + "enabled": TrustPolicy_Status_STATUS_Enabled, +} + +// +kubebuilder:validation:Enum={"Notary"} +type TrustPolicy_Type string + +const TrustPolicy_Type_Notary = TrustPolicy_Type("Notary") + +// Mapping from string to TrustPolicy_Type +var trustPolicy_Type_Values = map[string]TrustPolicy_Type{ + "notary": TrustPolicy_Type_Notary, +} + +type TrustPolicy_Type_STATUS string + +const TrustPolicy_Type_STATUS_Notary = TrustPolicy_Type_STATUS("Notary") + +// Mapping from string to TrustPolicy_Type_STATUS +var trustPolicy_Type_STATUS_Values = map[string]TrustPolicy_Type_STATUS{ + "notary": TrustPolicy_Type_STATUS_Notary, +} + +func init() { + SchemeBuilder.Register(&Registry{}, &RegistryList{}) +} diff --git a/v2/api/containerregistry/v1api20230701/registry_types_gen_test.go b/v2/api/containerregistry/v1api20230701/registry_types_gen_test.go new file mode 100644 index 00000000000..ba2eb1cbd6e --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/registry_types_gen_test.go @@ -0,0 +1,3437 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package v1api20230701 + +import ( + "encoding/json" + storage "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20230701/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_EncryptionProperty_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from EncryptionProperty to EncryptionProperty via AssignProperties_To_EncryptionProperty & AssignProperties_From_EncryptionProperty returns original", + prop.ForAll(RunPropertyAssignmentTestForEncryptionProperty, EncryptionPropertyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForEncryptionProperty tests if a specific instance of EncryptionProperty can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForEncryptionProperty(subject EncryptionProperty) 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.EncryptionProperty + err := copied.AssignProperties_To_EncryptionProperty(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual EncryptionProperty + err = actual.AssignProperties_From_EncryptionProperty(&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_EncryptionProperty_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 EncryptionProperty via JSON returns original", + prop.ForAll(RunJSONSerializationTestForEncryptionProperty, EncryptionPropertyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForEncryptionProperty runs a test to see if a specific instance of EncryptionProperty round trips to JSON and back losslessly +func RunJSONSerializationTestForEncryptionProperty(subject EncryptionProperty) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual EncryptionProperty + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of EncryptionProperty instances for property testing - lazily instantiated by EncryptionPropertyGenerator() +var encryptionPropertyGenerator gopter.Gen + +// EncryptionPropertyGenerator returns a generator of EncryptionProperty instances for property testing. +// We first initialize encryptionPropertyGenerator 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 EncryptionPropertyGenerator() gopter.Gen { + if encryptionPropertyGenerator != nil { + return encryptionPropertyGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForEncryptionProperty(generators) + encryptionPropertyGenerator = gen.Struct(reflect.TypeOf(EncryptionProperty{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForEncryptionProperty(generators) + AddRelatedPropertyGeneratorsForEncryptionProperty(generators) + encryptionPropertyGenerator = gen.Struct(reflect.TypeOf(EncryptionProperty{}), generators) + + return encryptionPropertyGenerator +} + +// AddIndependentPropertyGeneratorsForEncryptionProperty is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForEncryptionProperty(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.OneConstOf(EncryptionProperty_Status_Disabled, EncryptionProperty_Status_Enabled)) +} + +// AddRelatedPropertyGeneratorsForEncryptionProperty is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForEncryptionProperty(gens map[string]gopter.Gen) { + gens["KeyVaultProperties"] = gen.PtrOf(KeyVaultPropertiesGenerator()) +} + +func Test_EncryptionProperty_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from EncryptionProperty_STATUS to EncryptionProperty_STATUS via AssignProperties_To_EncryptionProperty_STATUS & AssignProperties_From_EncryptionProperty_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForEncryptionProperty_STATUS, EncryptionProperty_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForEncryptionProperty_STATUS tests if a specific instance of EncryptionProperty_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForEncryptionProperty_STATUS(subject EncryptionProperty_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.EncryptionProperty_STATUS + err := copied.AssignProperties_To_EncryptionProperty_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual EncryptionProperty_STATUS + err = actual.AssignProperties_From_EncryptionProperty_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_EncryptionProperty_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 EncryptionProperty_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForEncryptionProperty_STATUS, EncryptionProperty_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForEncryptionProperty_STATUS runs a test to see if a specific instance of EncryptionProperty_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForEncryptionProperty_STATUS(subject EncryptionProperty_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual EncryptionProperty_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 EncryptionProperty_STATUS instances for property testing - lazily instantiated by +// EncryptionProperty_STATUSGenerator() +var encryptionProperty_STATUSGenerator gopter.Gen + +// EncryptionProperty_STATUSGenerator returns a generator of EncryptionProperty_STATUS instances for property testing. +// We first initialize encryptionProperty_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 EncryptionProperty_STATUSGenerator() gopter.Gen { + if encryptionProperty_STATUSGenerator != nil { + return encryptionProperty_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForEncryptionProperty_STATUS(generators) + encryptionProperty_STATUSGenerator = gen.Struct(reflect.TypeOf(EncryptionProperty_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForEncryptionProperty_STATUS(generators) + AddRelatedPropertyGeneratorsForEncryptionProperty_STATUS(generators) + encryptionProperty_STATUSGenerator = gen.Struct(reflect.TypeOf(EncryptionProperty_STATUS{}), generators) + + return encryptionProperty_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForEncryptionProperty_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForEncryptionProperty_STATUS(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.OneConstOf(EncryptionProperty_Status_STATUS_Disabled, EncryptionProperty_Status_STATUS_Enabled)) +} + +// AddRelatedPropertyGeneratorsForEncryptionProperty_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForEncryptionProperty_STATUS(gens map[string]gopter.Gen) { + gens["KeyVaultProperties"] = gen.PtrOf(KeyVaultProperties_STATUSGenerator()) +} + +func Test_ExportPolicy_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ExportPolicy to ExportPolicy via AssignProperties_To_ExportPolicy & AssignProperties_From_ExportPolicy returns original", + prop.ForAll(RunPropertyAssignmentTestForExportPolicy, ExportPolicyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForExportPolicy tests if a specific instance of ExportPolicy can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForExportPolicy(subject ExportPolicy) 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.ExportPolicy + err := copied.AssignProperties_To_ExportPolicy(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ExportPolicy + err = actual.AssignProperties_From_ExportPolicy(&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_ExportPolicy_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 ExportPolicy via JSON returns original", + prop.ForAll(RunJSONSerializationTestForExportPolicy, ExportPolicyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForExportPolicy runs a test to see if a specific instance of ExportPolicy round trips to JSON and back losslessly +func RunJSONSerializationTestForExportPolicy(subject ExportPolicy) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ExportPolicy + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ExportPolicy instances for property testing - lazily instantiated by ExportPolicyGenerator() +var exportPolicyGenerator gopter.Gen + +// ExportPolicyGenerator returns a generator of ExportPolicy instances for property testing. +func ExportPolicyGenerator() gopter.Gen { + if exportPolicyGenerator != nil { + return exportPolicyGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForExportPolicy(generators) + exportPolicyGenerator = gen.Struct(reflect.TypeOf(ExportPolicy{}), generators) + + return exportPolicyGenerator +} + +// AddIndependentPropertyGeneratorsForExportPolicy is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForExportPolicy(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.OneConstOf(ExportPolicy_Status_Disabled, ExportPolicy_Status_Enabled)) +} + +func Test_ExportPolicy_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from ExportPolicy_STATUS to ExportPolicy_STATUS via AssignProperties_To_ExportPolicy_STATUS & AssignProperties_From_ExportPolicy_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForExportPolicy_STATUS, ExportPolicy_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForExportPolicy_STATUS tests if a specific instance of ExportPolicy_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForExportPolicy_STATUS(subject ExportPolicy_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.ExportPolicy_STATUS + err := copied.AssignProperties_To_ExportPolicy_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual ExportPolicy_STATUS + err = actual.AssignProperties_From_ExportPolicy_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_ExportPolicy_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 ExportPolicy_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForExportPolicy_STATUS, ExportPolicy_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForExportPolicy_STATUS runs a test to see if a specific instance of ExportPolicy_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForExportPolicy_STATUS(subject ExportPolicy_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ExportPolicy_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 ExportPolicy_STATUS instances for property testing - lazily instantiated by +// ExportPolicy_STATUSGenerator() +var exportPolicy_STATUSGenerator gopter.Gen + +// ExportPolicy_STATUSGenerator returns a generator of ExportPolicy_STATUS instances for property testing. +func ExportPolicy_STATUSGenerator() gopter.Gen { + if exportPolicy_STATUSGenerator != nil { + return exportPolicy_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForExportPolicy_STATUS(generators) + exportPolicy_STATUSGenerator = gen.Struct(reflect.TypeOf(ExportPolicy_STATUS{}), generators) + + return exportPolicy_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForExportPolicy_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForExportPolicy_STATUS(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.OneConstOf(ExportPolicy_Status_STATUS_Disabled, ExportPolicy_Status_STATUS_Enabled)) +} + +func Test_IPRule_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from IPRule to IPRule via AssignProperties_To_IPRule & AssignProperties_From_IPRule returns original", + prop.ForAll(RunPropertyAssignmentTestForIPRule, IPRuleGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForIPRule tests if a specific instance of IPRule can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForIPRule(subject IPRule) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.IPRule + err := copied.AssignProperties_To_IPRule(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual IPRule + err = actual.AssignProperties_From_IPRule(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_IPRule_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of IPRule via JSON returns original", + prop.ForAll(RunJSONSerializationTestForIPRule, IPRuleGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForIPRule runs a test to see if a specific instance of IPRule round trips to JSON and back losslessly +func RunJSONSerializationTestForIPRule(subject IPRule) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual IPRule + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of IPRule instances for property testing - lazily instantiated by IPRuleGenerator() +var ipRuleGenerator gopter.Gen + +// IPRuleGenerator returns a generator of IPRule instances for property testing. +func IPRuleGenerator() gopter.Gen { + if ipRuleGenerator != nil { + return ipRuleGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIPRule(generators) + ipRuleGenerator = gen.Struct(reflect.TypeOf(IPRule{}), generators) + + return ipRuleGenerator +} + +// AddIndependentPropertyGeneratorsForIPRule is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForIPRule(gens map[string]gopter.Gen) { + gens["Action"] = gen.PtrOf(gen.OneConstOf(IPRule_Action_Allow)) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_IPRule_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from IPRule_STATUS to IPRule_STATUS via AssignProperties_To_IPRule_STATUS & AssignProperties_From_IPRule_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForIPRule_STATUS, IPRule_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForIPRule_STATUS tests if a specific instance of IPRule_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForIPRule_STATUS(subject IPRule_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.IPRule_STATUS + err := copied.AssignProperties_To_IPRule_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual IPRule_STATUS + err = actual.AssignProperties_From_IPRule_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_IPRule_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of IPRule_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForIPRule_STATUS, IPRule_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForIPRule_STATUS runs a test to see if a specific instance of IPRule_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForIPRule_STATUS(subject IPRule_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual IPRule_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of IPRule_STATUS instances for property testing - lazily instantiated by IPRule_STATUSGenerator() +var ipRule_STATUSGenerator gopter.Gen + +// IPRule_STATUSGenerator returns a generator of IPRule_STATUS instances for property testing. +func IPRule_STATUSGenerator() gopter.Gen { + if ipRule_STATUSGenerator != nil { + return ipRule_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIPRule_STATUS(generators) + ipRule_STATUSGenerator = gen.Struct(reflect.TypeOf(IPRule_STATUS{}), generators) + + return ipRule_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForIPRule_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForIPRule_STATUS(gens map[string]gopter.Gen) { + gens["Action"] = gen.PtrOf(gen.OneConstOf(IPRule_Action_STATUS_Allow)) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_IdentityProperties_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from IdentityProperties to IdentityProperties via AssignProperties_To_IdentityProperties & AssignProperties_From_IdentityProperties returns original", + prop.ForAll(RunPropertyAssignmentTestForIdentityProperties, IdentityPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForIdentityProperties tests if a specific instance of IdentityProperties can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForIdentityProperties(subject IdentityProperties) 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.IdentityProperties + err := copied.AssignProperties_To_IdentityProperties(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual IdentityProperties + err = actual.AssignProperties_From_IdentityProperties(&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_IdentityProperties_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 IdentityProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForIdentityProperties, IdentityPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForIdentityProperties runs a test to see if a specific instance of IdentityProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForIdentityProperties(subject IdentityProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual IdentityProperties + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of IdentityProperties instances for property testing - lazily instantiated by IdentityPropertiesGenerator() +var identityPropertiesGenerator gopter.Gen + +// IdentityPropertiesGenerator returns a generator of IdentityProperties instances for property testing. +// We first initialize identityPropertiesGenerator 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 IdentityPropertiesGenerator() gopter.Gen { + if identityPropertiesGenerator != nil { + return identityPropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIdentityProperties(generators) + identityPropertiesGenerator = gen.Struct(reflect.TypeOf(IdentityProperties{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIdentityProperties(generators) + AddRelatedPropertyGeneratorsForIdentityProperties(generators) + identityPropertiesGenerator = gen.Struct(reflect.TypeOf(IdentityProperties{}), generators) + + return identityPropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForIdentityProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForIdentityProperties(gens map[string]gopter.Gen) { + gens["Type"] = gen.PtrOf(gen.OneConstOf( + IdentityProperties_Type_None, + IdentityProperties_Type_SystemAssigned, + IdentityProperties_Type_SystemAssignedUserAssigned, + IdentityProperties_Type_UserAssigned)) +} + +// AddRelatedPropertyGeneratorsForIdentityProperties is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForIdentityProperties(gens map[string]gopter.Gen) { + gens["UserAssignedIdentities"] = gen.SliceOf(UserAssignedIdentityDetailsGenerator()) +} + +func Test_IdentityProperties_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from IdentityProperties_STATUS to IdentityProperties_STATUS via AssignProperties_To_IdentityProperties_STATUS & AssignProperties_From_IdentityProperties_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForIdentityProperties_STATUS, IdentityProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForIdentityProperties_STATUS tests if a specific instance of IdentityProperties_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForIdentityProperties_STATUS(subject IdentityProperties_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.IdentityProperties_STATUS + err := copied.AssignProperties_To_IdentityProperties_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual IdentityProperties_STATUS + err = actual.AssignProperties_From_IdentityProperties_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_IdentityProperties_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 IdentityProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForIdentityProperties_STATUS, IdentityProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForIdentityProperties_STATUS runs a test to see if a specific instance of IdentityProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForIdentityProperties_STATUS(subject IdentityProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual IdentityProperties_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 IdentityProperties_STATUS instances for property testing - lazily instantiated by +// IdentityProperties_STATUSGenerator() +var identityProperties_STATUSGenerator gopter.Gen + +// IdentityProperties_STATUSGenerator returns a generator of IdentityProperties_STATUS instances for property testing. +// We first initialize identityProperties_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 IdentityProperties_STATUSGenerator() gopter.Gen { + if identityProperties_STATUSGenerator != nil { + return identityProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIdentityProperties_STATUS(generators) + identityProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(IdentityProperties_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIdentityProperties_STATUS(generators) + AddRelatedPropertyGeneratorsForIdentityProperties_STATUS(generators) + identityProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(IdentityProperties_STATUS{}), generators) + + return identityProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForIdentityProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForIdentityProperties_STATUS(gens map[string]gopter.Gen) { + gens["PrincipalId"] = gen.PtrOf(gen.AlphaString()) + gens["TenantId"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.OneConstOf( + IdentityProperties_Type_STATUS_None, + IdentityProperties_Type_STATUS_SystemAssigned, + IdentityProperties_Type_STATUS_SystemAssignedUserAssigned, + IdentityProperties_Type_STATUS_UserAssigned)) +} + +// AddRelatedPropertyGeneratorsForIdentityProperties_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForIdentityProperties_STATUS(gens map[string]gopter.Gen) { + gens["UserAssignedIdentities"] = gen.MapOf( + gen.AlphaString(), + UserIdentityProperties_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["Identity"] = 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["Identity"] = gen.PtrOf(gen.AlphaString()) + gens["KeyIdentifier"] = gen.PtrOf(gen.AlphaString()) + gens["KeyRotationEnabled"] = gen.PtrOf(gen.Bool()) + gens["LastKeyRotationTimestamp"] = gen.PtrOf(gen.AlphaString()) + gens["VersionedKeyIdentifier"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_NetworkRuleSet_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from NetworkRuleSet to NetworkRuleSet via AssignProperties_To_NetworkRuleSet & AssignProperties_From_NetworkRuleSet returns original", + prop.ForAll(RunPropertyAssignmentTestForNetworkRuleSet, NetworkRuleSetGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForNetworkRuleSet tests if a specific instance of NetworkRuleSet can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForNetworkRuleSet(subject NetworkRuleSet) 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.NetworkRuleSet + err := copied.AssignProperties_To_NetworkRuleSet(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual NetworkRuleSet + err = actual.AssignProperties_From_NetworkRuleSet(&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_NetworkRuleSet_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 NetworkRuleSet via JSON returns original", + prop.ForAll(RunJSONSerializationTestForNetworkRuleSet, NetworkRuleSetGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForNetworkRuleSet runs a test to see if a specific instance of NetworkRuleSet round trips to JSON and back losslessly +func RunJSONSerializationTestForNetworkRuleSet(subject NetworkRuleSet) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual NetworkRuleSet + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of NetworkRuleSet instances for property testing - lazily instantiated by NetworkRuleSetGenerator() +var networkRuleSetGenerator gopter.Gen + +// NetworkRuleSetGenerator returns a generator of NetworkRuleSet instances for property testing. +// We first initialize networkRuleSetGenerator 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 NetworkRuleSetGenerator() gopter.Gen { + if networkRuleSetGenerator != nil { + return networkRuleSetGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetworkRuleSet(generators) + networkRuleSetGenerator = gen.Struct(reflect.TypeOf(NetworkRuleSet{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetworkRuleSet(generators) + AddRelatedPropertyGeneratorsForNetworkRuleSet(generators) + networkRuleSetGenerator = gen.Struct(reflect.TypeOf(NetworkRuleSet{}), generators) + + return networkRuleSetGenerator +} + +// AddIndependentPropertyGeneratorsForNetworkRuleSet is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForNetworkRuleSet(gens map[string]gopter.Gen) { + gens["DefaultAction"] = gen.PtrOf(gen.OneConstOf(NetworkRuleSet_DefaultAction_Allow, NetworkRuleSet_DefaultAction_Deny)) +} + +// AddRelatedPropertyGeneratorsForNetworkRuleSet is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForNetworkRuleSet(gens map[string]gopter.Gen) { + gens["IpRules"] = gen.SliceOf(IPRuleGenerator()) +} + +func Test_NetworkRuleSet_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from NetworkRuleSet_STATUS to NetworkRuleSet_STATUS via AssignProperties_To_NetworkRuleSet_STATUS & AssignProperties_From_NetworkRuleSet_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForNetworkRuleSet_STATUS, NetworkRuleSet_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForNetworkRuleSet_STATUS tests if a specific instance of NetworkRuleSet_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForNetworkRuleSet_STATUS(subject NetworkRuleSet_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.NetworkRuleSet_STATUS + err := copied.AssignProperties_To_NetworkRuleSet_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual NetworkRuleSet_STATUS + err = actual.AssignProperties_From_NetworkRuleSet_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_NetworkRuleSet_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 NetworkRuleSet_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForNetworkRuleSet_STATUS, NetworkRuleSet_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForNetworkRuleSet_STATUS runs a test to see if a specific instance of NetworkRuleSet_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForNetworkRuleSet_STATUS(subject NetworkRuleSet_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual NetworkRuleSet_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 NetworkRuleSet_STATUS instances for property testing - lazily instantiated by +// NetworkRuleSet_STATUSGenerator() +var networkRuleSet_STATUSGenerator gopter.Gen + +// NetworkRuleSet_STATUSGenerator returns a generator of NetworkRuleSet_STATUS instances for property testing. +// We first initialize networkRuleSet_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 NetworkRuleSet_STATUSGenerator() gopter.Gen { + if networkRuleSet_STATUSGenerator != nil { + return networkRuleSet_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetworkRuleSet_STATUS(generators) + networkRuleSet_STATUSGenerator = gen.Struct(reflect.TypeOf(NetworkRuleSet_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetworkRuleSet_STATUS(generators) + AddRelatedPropertyGeneratorsForNetworkRuleSet_STATUS(generators) + networkRuleSet_STATUSGenerator = gen.Struct(reflect.TypeOf(NetworkRuleSet_STATUS{}), generators) + + return networkRuleSet_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForNetworkRuleSet_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForNetworkRuleSet_STATUS(gens map[string]gopter.Gen) { + gens["DefaultAction"] = gen.PtrOf(gen.OneConstOf(NetworkRuleSet_DefaultAction_STATUS_Allow, NetworkRuleSet_DefaultAction_STATUS_Deny)) +} + +// AddRelatedPropertyGeneratorsForNetworkRuleSet_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForNetworkRuleSet_STATUS(gens map[string]gopter.Gen) { + gens["IpRules"] = gen.SliceOf(IPRule_STATUSGenerator()) +} + +func Test_Policies_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Policies to Policies via AssignProperties_To_Policies & AssignProperties_From_Policies returns original", + prop.ForAll(RunPropertyAssignmentTestForPolicies, PoliciesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForPolicies tests if a specific instance of Policies can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForPolicies(subject Policies) 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.Policies + err := copied.AssignProperties_To_Policies(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Policies + err = actual.AssignProperties_From_Policies(&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_Policies_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 Policies via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPolicies, PoliciesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPolicies runs a test to see if a specific instance of Policies round trips to JSON and back losslessly +func RunJSONSerializationTestForPolicies(subject Policies) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Policies + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Policies instances for property testing - lazily instantiated by PoliciesGenerator() +var policiesGenerator gopter.Gen + +// PoliciesGenerator returns a generator of Policies instances for property testing. +func PoliciesGenerator() gopter.Gen { + if policiesGenerator != nil { + return policiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForPolicies(generators) + policiesGenerator = gen.Struct(reflect.TypeOf(Policies{}), generators) + + return policiesGenerator +} + +// AddRelatedPropertyGeneratorsForPolicies is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForPolicies(gens map[string]gopter.Gen) { + gens["ExportPolicy"] = gen.PtrOf(ExportPolicyGenerator()) + gens["QuarantinePolicy"] = gen.PtrOf(QuarantinePolicyGenerator()) + gens["RetentionPolicy"] = gen.PtrOf(RetentionPolicyGenerator()) + gens["TrustPolicy"] = gen.PtrOf(TrustPolicyGenerator()) +} + +func Test_Policies_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Policies_STATUS to Policies_STATUS via AssignProperties_To_Policies_STATUS & AssignProperties_From_Policies_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForPolicies_STATUS, Policies_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForPolicies_STATUS tests if a specific instance of Policies_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForPolicies_STATUS(subject Policies_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.Policies_STATUS + err := copied.AssignProperties_To_Policies_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Policies_STATUS + err = actual.AssignProperties_From_Policies_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_Policies_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 Policies_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPolicies_STATUS, Policies_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPolicies_STATUS runs a test to see if a specific instance of Policies_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForPolicies_STATUS(subject Policies_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Policies_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 Policies_STATUS instances for property testing - lazily instantiated by Policies_STATUSGenerator() +var policies_STATUSGenerator gopter.Gen + +// Policies_STATUSGenerator returns a generator of Policies_STATUS instances for property testing. +func Policies_STATUSGenerator() gopter.Gen { + if policies_STATUSGenerator != nil { + return policies_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForPolicies_STATUS(generators) + policies_STATUSGenerator = gen.Struct(reflect.TypeOf(Policies_STATUS{}), generators) + + return policies_STATUSGenerator +} + +// AddRelatedPropertyGeneratorsForPolicies_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForPolicies_STATUS(gens map[string]gopter.Gen) { + gens["ExportPolicy"] = gen.PtrOf(ExportPolicy_STATUSGenerator()) + gens["QuarantinePolicy"] = gen.PtrOf(QuarantinePolicy_STATUSGenerator()) + gens["RetentionPolicy"] = gen.PtrOf(RetentionPolicy_STATUSGenerator()) + gens["TrustPolicy"] = gen.PtrOf(TrustPolicy_STATUSGenerator()) +} + +func Test_PrivateEndpointConnection_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from PrivateEndpointConnection_STATUS to PrivateEndpointConnection_STATUS via AssignProperties_To_PrivateEndpointConnection_STATUS & AssignProperties_From_PrivateEndpointConnection_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForPrivateEndpointConnection_STATUS, PrivateEndpointConnection_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForPrivateEndpointConnection_STATUS tests if a specific instance of PrivateEndpointConnection_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForPrivateEndpointConnection_STATUS(subject PrivateEndpointConnection_STATUS) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other storage.PrivateEndpointConnection_STATUS + err := copied.AssignProperties_To_PrivateEndpointConnection_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual PrivateEndpointConnection_STATUS + err = actual.AssignProperties_From_PrivateEndpointConnection_STATUS(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_PrivateEndpointConnection_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of PrivateEndpointConnection_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateEndpointConnection_STATUS, PrivateEndpointConnection_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateEndpointConnection_STATUS runs a test to see if a specific instance of PrivateEndpointConnection_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateEndpointConnection_STATUS(subject PrivateEndpointConnection_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateEndpointConnection_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of PrivateEndpointConnection_STATUS instances for property testing - lazily instantiated by +// PrivateEndpointConnection_STATUSGenerator() +var privateEndpointConnection_STATUSGenerator gopter.Gen + +// PrivateEndpointConnection_STATUSGenerator returns a generator of PrivateEndpointConnection_STATUS instances for property testing. +func PrivateEndpointConnection_STATUSGenerator() gopter.Gen { + if privateEndpointConnection_STATUSGenerator != nil { + return privateEndpointConnection_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS(generators) + privateEndpointConnection_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointConnection_STATUS{}), generators) + + return privateEndpointConnection_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_QuarantinePolicy_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from QuarantinePolicy to QuarantinePolicy via AssignProperties_To_QuarantinePolicy & AssignProperties_From_QuarantinePolicy returns original", + prop.ForAll(RunPropertyAssignmentTestForQuarantinePolicy, QuarantinePolicyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForQuarantinePolicy tests if a specific instance of QuarantinePolicy can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForQuarantinePolicy(subject QuarantinePolicy) 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.QuarantinePolicy + err := copied.AssignProperties_To_QuarantinePolicy(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual QuarantinePolicy + err = actual.AssignProperties_From_QuarantinePolicy(&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_QuarantinePolicy_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 QuarantinePolicy via JSON returns original", + prop.ForAll(RunJSONSerializationTestForQuarantinePolicy, QuarantinePolicyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForQuarantinePolicy runs a test to see if a specific instance of QuarantinePolicy round trips to JSON and back losslessly +func RunJSONSerializationTestForQuarantinePolicy(subject QuarantinePolicy) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual QuarantinePolicy + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of QuarantinePolicy instances for property testing - lazily instantiated by QuarantinePolicyGenerator() +var quarantinePolicyGenerator gopter.Gen + +// QuarantinePolicyGenerator returns a generator of QuarantinePolicy instances for property testing. +func QuarantinePolicyGenerator() gopter.Gen { + if quarantinePolicyGenerator != nil { + return quarantinePolicyGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForQuarantinePolicy(generators) + quarantinePolicyGenerator = gen.Struct(reflect.TypeOf(QuarantinePolicy{}), generators) + + return quarantinePolicyGenerator +} + +// AddIndependentPropertyGeneratorsForQuarantinePolicy is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForQuarantinePolicy(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.OneConstOf(QuarantinePolicy_Status_Disabled, QuarantinePolicy_Status_Enabled)) +} + +func Test_QuarantinePolicy_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from QuarantinePolicy_STATUS to QuarantinePolicy_STATUS via AssignProperties_To_QuarantinePolicy_STATUS & AssignProperties_From_QuarantinePolicy_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForQuarantinePolicy_STATUS, QuarantinePolicy_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForQuarantinePolicy_STATUS tests if a specific instance of QuarantinePolicy_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForQuarantinePolicy_STATUS(subject QuarantinePolicy_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.QuarantinePolicy_STATUS + err := copied.AssignProperties_To_QuarantinePolicy_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual QuarantinePolicy_STATUS + err = actual.AssignProperties_From_QuarantinePolicy_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_QuarantinePolicy_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 QuarantinePolicy_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForQuarantinePolicy_STATUS, QuarantinePolicy_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForQuarantinePolicy_STATUS runs a test to see if a specific instance of QuarantinePolicy_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForQuarantinePolicy_STATUS(subject QuarantinePolicy_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual QuarantinePolicy_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 QuarantinePolicy_STATUS instances for property testing - lazily instantiated by +// QuarantinePolicy_STATUSGenerator() +var quarantinePolicy_STATUSGenerator gopter.Gen + +// QuarantinePolicy_STATUSGenerator returns a generator of QuarantinePolicy_STATUS instances for property testing. +func QuarantinePolicy_STATUSGenerator() gopter.Gen { + if quarantinePolicy_STATUSGenerator != nil { + return quarantinePolicy_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForQuarantinePolicy_STATUS(generators) + quarantinePolicy_STATUSGenerator = gen.Struct(reflect.TypeOf(QuarantinePolicy_STATUS{}), generators) + + return quarantinePolicy_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForQuarantinePolicy_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForQuarantinePolicy_STATUS(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.OneConstOf(QuarantinePolicy_Status_STATUS_Disabled, QuarantinePolicy_Status_STATUS_Enabled)) +} + +func Test_Registry_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 Registry to hub returns original", + prop.ForAll(RunResourceConversionTestForRegistry, RegistryGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunResourceConversionTestForRegistry tests if a specific instance of Registry round trips to the hub storage version and back losslessly +func RunResourceConversionTestForRegistry(subject Registry) string { + // Copy subject to make sure conversion doesn't modify it + copied := subject.DeepCopy() + + // Convert to our hub version + var hub storage.Registry + err := copied.ConvertTo(&hub) + if err != nil { + return err.Error() + } + + // Convert from our hub version + var actual Registry + 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_Registry_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Registry to Registry via AssignProperties_To_Registry & AssignProperties_From_Registry returns original", + prop.ForAll(RunPropertyAssignmentTestForRegistry, RegistryGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForRegistry tests if a specific instance of Registry can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForRegistry(subject Registry) 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.Registry + err := copied.AssignProperties_To_Registry(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Registry + err = actual.AssignProperties_From_Registry(&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_Registry_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 Registry via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRegistry, RegistryGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRegistry runs a test to see if a specific instance of Registry round trips to JSON and back losslessly +func RunJSONSerializationTestForRegistry(subject Registry) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Registry + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Registry instances for property testing - lazily instantiated by RegistryGenerator() +var registryGenerator gopter.Gen + +// RegistryGenerator returns a generator of Registry instances for property testing. +func RegistryGenerator() gopter.Gen { + if registryGenerator != nil { + return registryGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForRegistry(generators) + registryGenerator = gen.Struct(reflect.TypeOf(Registry{}), generators) + + return registryGenerator +} + +// AddRelatedPropertyGeneratorsForRegistry is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForRegistry(gens map[string]gopter.Gen) { + gens["Spec"] = Registry_SpecGenerator() + gens["Status"] = Registry_STATUSGenerator() +} + +func Test_RegistryOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from RegistryOperatorSpec to RegistryOperatorSpec via AssignProperties_To_RegistryOperatorSpec & AssignProperties_From_RegistryOperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForRegistryOperatorSpec, RegistryOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForRegistryOperatorSpec tests if a specific instance of RegistryOperatorSpec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForRegistryOperatorSpec(subject RegistryOperatorSpec) 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.RegistryOperatorSpec + err := copied.AssignProperties_To_RegistryOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual RegistryOperatorSpec + err = actual.AssignProperties_From_RegistryOperatorSpec(&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_RegistryOperatorSpec_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 RegistryOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRegistryOperatorSpec, RegistryOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRegistryOperatorSpec runs a test to see if a specific instance of RegistryOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForRegistryOperatorSpec(subject RegistryOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual RegistryOperatorSpec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of RegistryOperatorSpec instances for property testing - lazily instantiated by +// RegistryOperatorSpecGenerator() +var registryOperatorSpecGenerator gopter.Gen + +// RegistryOperatorSpecGenerator returns a generator of RegistryOperatorSpec instances for property testing. +func RegistryOperatorSpecGenerator() gopter.Gen { + if registryOperatorSpecGenerator != nil { + return registryOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + registryOperatorSpecGenerator = gen.Struct(reflect.TypeOf(RegistryOperatorSpec{}), generators) + + return registryOperatorSpecGenerator +} + +func Test_Registry_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Registry_STATUS to Registry_STATUS via AssignProperties_To_Registry_STATUS & AssignProperties_From_Registry_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForRegistry_STATUS, Registry_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForRegistry_STATUS tests if a specific instance of Registry_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForRegistry_STATUS(subject Registry_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.Registry_STATUS + err := copied.AssignProperties_To_Registry_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Registry_STATUS + err = actual.AssignProperties_From_Registry_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_Registry_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 Registry_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRegistry_STATUS, Registry_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRegistry_STATUS runs a test to see if a specific instance of Registry_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForRegistry_STATUS(subject Registry_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Registry_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 Registry_STATUS instances for property testing - lazily instantiated by Registry_STATUSGenerator() +var registry_STATUSGenerator gopter.Gen + +// Registry_STATUSGenerator returns a generator of Registry_STATUS instances for property testing. +// We first initialize registry_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 Registry_STATUSGenerator() gopter.Gen { + if registry_STATUSGenerator != nil { + return registry_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistry_STATUS(generators) + registry_STATUSGenerator = gen.Struct(reflect.TypeOf(Registry_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistry_STATUS(generators) + AddRelatedPropertyGeneratorsForRegistry_STATUS(generators) + registry_STATUSGenerator = gen.Struct(reflect.TypeOf(Registry_STATUS{}), generators) + + return registry_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForRegistry_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForRegistry_STATUS(gens map[string]gopter.Gen) { + gens["AdminUserEnabled"] = gen.PtrOf(gen.Bool()) + gens["CreationDate"] = gen.PtrOf(gen.AlphaString()) + gens["DataEndpointEnabled"] = gen.PtrOf(gen.Bool()) + gens["DataEndpointHostNames"] = gen.SliceOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["LoginServer"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["NetworkRuleBypassOptions"] = gen.PtrOf(gen.OneConstOf(RegistryProperties_NetworkRuleBypassOptions_STATUS_AzureServices, RegistryProperties_NetworkRuleBypassOptions_STATUS_None)) + gens["ProvisioningState"] = gen.PtrOf(gen.OneConstOf( + RegistryProperties_ProvisioningState_STATUS_Canceled, + RegistryProperties_ProvisioningState_STATUS_Creating, + RegistryProperties_ProvisioningState_STATUS_Deleting, + RegistryProperties_ProvisioningState_STATUS_Failed, + RegistryProperties_ProvisioningState_STATUS_Succeeded, + RegistryProperties_ProvisioningState_STATUS_Updating)) + gens["PublicNetworkAccess"] = gen.PtrOf(gen.OneConstOf(RegistryProperties_PublicNetworkAccess_STATUS_Disabled, RegistryProperties_PublicNetworkAccess_STATUS_Enabled)) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) + gens["ZoneRedundancy"] = gen.PtrOf(gen.OneConstOf(RegistryProperties_ZoneRedundancy_STATUS_Disabled, RegistryProperties_ZoneRedundancy_STATUS_Enabled)) +} + +// AddRelatedPropertyGeneratorsForRegistry_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForRegistry_STATUS(gens map[string]gopter.Gen) { + gens["Encryption"] = gen.PtrOf(EncryptionProperty_STATUSGenerator()) + gens["Identity"] = gen.PtrOf(IdentityProperties_STATUSGenerator()) + gens["NetworkRuleSet"] = gen.PtrOf(NetworkRuleSet_STATUSGenerator()) + gens["Policies"] = gen.PtrOf(Policies_STATUSGenerator()) + gens["PrivateEndpointConnections"] = gen.SliceOf(PrivateEndpointConnection_STATUSGenerator()) + gens["Sku"] = gen.PtrOf(Sku_STATUSGenerator()) + gens["Status"] = gen.PtrOf(Status_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_Registry_Spec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Registry_Spec to Registry_Spec via AssignProperties_To_Registry_Spec & AssignProperties_From_Registry_Spec returns original", + prop.ForAll(RunPropertyAssignmentTestForRegistry_Spec, Registry_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForRegistry_Spec tests if a specific instance of Registry_Spec can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForRegistry_Spec(subject Registry_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.Registry_Spec + err := copied.AssignProperties_To_Registry_Spec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Registry_Spec + err = actual.AssignProperties_From_Registry_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_Registry_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 Registry_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRegistry_Spec, Registry_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRegistry_Spec runs a test to see if a specific instance of Registry_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForRegistry_Spec(subject Registry_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Registry_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 Registry_Spec instances for property testing - lazily instantiated by Registry_SpecGenerator() +var registry_SpecGenerator gopter.Gen + +// Registry_SpecGenerator returns a generator of Registry_Spec instances for property testing. +// We first initialize registry_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 Registry_SpecGenerator() gopter.Gen { + if registry_SpecGenerator != nil { + return registry_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistry_Spec(generators) + registry_SpecGenerator = gen.Struct(reflect.TypeOf(Registry_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistry_Spec(generators) + AddRelatedPropertyGeneratorsForRegistry_Spec(generators) + registry_SpecGenerator = gen.Struct(reflect.TypeOf(Registry_Spec{}), generators) + + return registry_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForRegistry_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForRegistry_Spec(gens map[string]gopter.Gen) { + gens["AdminUserEnabled"] = gen.PtrOf(gen.Bool()) + gens["AzureName"] = gen.AlphaString() + gens["DataEndpointEnabled"] = gen.PtrOf(gen.Bool()) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["NetworkRuleBypassOptions"] = gen.PtrOf(gen.OneConstOf(RegistryProperties_NetworkRuleBypassOptions_AzureServices, RegistryProperties_NetworkRuleBypassOptions_None)) + gens["PublicNetworkAccess"] = gen.PtrOf(gen.OneConstOf(RegistryProperties_PublicNetworkAccess_Disabled, RegistryProperties_PublicNetworkAccess_Enabled)) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["ZoneRedundancy"] = gen.PtrOf(gen.OneConstOf(RegistryProperties_ZoneRedundancy_Disabled, RegistryProperties_ZoneRedundancy_Enabled)) +} + +// AddRelatedPropertyGeneratorsForRegistry_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForRegistry_Spec(gens map[string]gopter.Gen) { + gens["Encryption"] = gen.PtrOf(EncryptionPropertyGenerator()) + gens["Identity"] = gen.PtrOf(IdentityPropertiesGenerator()) + gens["NetworkRuleSet"] = gen.PtrOf(NetworkRuleSetGenerator()) + gens["OperatorSpec"] = gen.PtrOf(RegistryOperatorSpecGenerator()) + gens["Policies"] = gen.PtrOf(PoliciesGenerator()) + gens["Sku"] = gen.PtrOf(SkuGenerator()) +} + +func Test_RetentionPolicy_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from RetentionPolicy to RetentionPolicy via AssignProperties_To_RetentionPolicy & AssignProperties_From_RetentionPolicy returns original", + prop.ForAll(RunPropertyAssignmentTestForRetentionPolicy, RetentionPolicyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForRetentionPolicy tests if a specific instance of RetentionPolicy can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForRetentionPolicy(subject RetentionPolicy) 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.RetentionPolicy + err := copied.AssignProperties_To_RetentionPolicy(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual RetentionPolicy + err = actual.AssignProperties_From_RetentionPolicy(&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_RetentionPolicy_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 RetentionPolicy via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRetentionPolicy, RetentionPolicyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRetentionPolicy runs a test to see if a specific instance of RetentionPolicy round trips to JSON and back losslessly +func RunJSONSerializationTestForRetentionPolicy(subject RetentionPolicy) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual RetentionPolicy + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of RetentionPolicy instances for property testing - lazily instantiated by RetentionPolicyGenerator() +var retentionPolicyGenerator gopter.Gen + +// RetentionPolicyGenerator returns a generator of RetentionPolicy instances for property testing. +func RetentionPolicyGenerator() gopter.Gen { + if retentionPolicyGenerator != nil { + return retentionPolicyGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRetentionPolicy(generators) + retentionPolicyGenerator = gen.Struct(reflect.TypeOf(RetentionPolicy{}), generators) + + return retentionPolicyGenerator +} + +// AddIndependentPropertyGeneratorsForRetentionPolicy is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForRetentionPolicy(gens map[string]gopter.Gen) { + gens["Days"] = gen.PtrOf(gen.Int()) + gens["Status"] = gen.PtrOf(gen.OneConstOf(RetentionPolicy_Status_Disabled, RetentionPolicy_Status_Enabled)) +} + +func Test_RetentionPolicy_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from RetentionPolicy_STATUS to RetentionPolicy_STATUS via AssignProperties_To_RetentionPolicy_STATUS & AssignProperties_From_RetentionPolicy_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForRetentionPolicy_STATUS, RetentionPolicy_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForRetentionPolicy_STATUS tests if a specific instance of RetentionPolicy_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForRetentionPolicy_STATUS(subject RetentionPolicy_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.RetentionPolicy_STATUS + err := copied.AssignProperties_To_RetentionPolicy_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual RetentionPolicy_STATUS + err = actual.AssignProperties_From_RetentionPolicy_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_RetentionPolicy_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 RetentionPolicy_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRetentionPolicy_STATUS, RetentionPolicy_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRetentionPolicy_STATUS runs a test to see if a specific instance of RetentionPolicy_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForRetentionPolicy_STATUS(subject RetentionPolicy_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual RetentionPolicy_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 RetentionPolicy_STATUS instances for property testing - lazily instantiated by +// RetentionPolicy_STATUSGenerator() +var retentionPolicy_STATUSGenerator gopter.Gen + +// RetentionPolicy_STATUSGenerator returns a generator of RetentionPolicy_STATUS instances for property testing. +func RetentionPolicy_STATUSGenerator() gopter.Gen { + if retentionPolicy_STATUSGenerator != nil { + return retentionPolicy_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRetentionPolicy_STATUS(generators) + retentionPolicy_STATUSGenerator = gen.Struct(reflect.TypeOf(RetentionPolicy_STATUS{}), generators) + + return retentionPolicy_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForRetentionPolicy_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForRetentionPolicy_STATUS(gens map[string]gopter.Gen) { + gens["Days"] = gen.PtrOf(gen.Int()) + gens["LastUpdatedTime"] = gen.PtrOf(gen.AlphaString()) + gens["Status"] = gen.PtrOf(gen.OneConstOf(RetentionPolicy_Status_STATUS_Disabled, RetentionPolicy_Status_STATUS_Enabled)) +} + +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.OneConstOf( + Sku_Name_Basic, + Sku_Name_Classic, + Sku_Name_Premium, + Sku_Name_Standard)) +} + +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.OneConstOf( + Sku_Name_STATUS_Basic, + Sku_Name_STATUS_Classic, + Sku_Name_STATUS_Premium, + Sku_Name_STATUS_Standard)) + gens["Tier"] = gen.PtrOf(gen.OneConstOf( + Sku_Tier_STATUS_Basic, + Sku_Tier_STATUS_Classic, + Sku_Tier_STATUS_Premium, + Sku_Tier_STATUS_Standard)) +} + +func Test_Status_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from Status_STATUS to Status_STATUS via AssignProperties_To_Status_STATUS & AssignProperties_From_Status_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForStatus_STATUS, Status_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForStatus_STATUS tests if a specific instance of Status_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForStatus_STATUS(subject Status_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.Status_STATUS + err := copied.AssignProperties_To_Status_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual Status_STATUS + err = actual.AssignProperties_From_Status_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_Status_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 Status_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForStatus_STATUS, Status_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForStatus_STATUS runs a test to see if a specific instance of Status_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForStatus_STATUS(subject Status_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Status_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 Status_STATUS instances for property testing - lazily instantiated by Status_STATUSGenerator() +var status_STATUSGenerator gopter.Gen + +// Status_STATUSGenerator returns a generator of Status_STATUS instances for property testing. +func Status_STATUSGenerator() gopter.Gen { + if status_STATUSGenerator != nil { + return status_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForStatus_STATUS(generators) + status_STATUSGenerator = gen.Struct(reflect.TypeOf(Status_STATUS{}), generators) + + return status_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForStatus_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForStatus_STATUS(gens map[string]gopter.Gen) { + gens["DisplayStatus"] = gen.PtrOf(gen.AlphaString()) + gens["Message"] = gen.PtrOf(gen.AlphaString()) + gens["Timestamp"] = 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_TrustPolicy_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from TrustPolicy to TrustPolicy via AssignProperties_To_TrustPolicy & AssignProperties_From_TrustPolicy returns original", + prop.ForAll(RunPropertyAssignmentTestForTrustPolicy, TrustPolicyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForTrustPolicy tests if a specific instance of TrustPolicy can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForTrustPolicy(subject TrustPolicy) 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.TrustPolicy + err := copied.AssignProperties_To_TrustPolicy(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual TrustPolicy + err = actual.AssignProperties_From_TrustPolicy(&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_TrustPolicy_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 TrustPolicy via JSON returns original", + prop.ForAll(RunJSONSerializationTestForTrustPolicy, TrustPolicyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForTrustPolicy runs a test to see if a specific instance of TrustPolicy round trips to JSON and back losslessly +func RunJSONSerializationTestForTrustPolicy(subject TrustPolicy) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual TrustPolicy + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of TrustPolicy instances for property testing - lazily instantiated by TrustPolicyGenerator() +var trustPolicyGenerator gopter.Gen + +// TrustPolicyGenerator returns a generator of TrustPolicy instances for property testing. +func TrustPolicyGenerator() gopter.Gen { + if trustPolicyGenerator != nil { + return trustPolicyGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForTrustPolicy(generators) + trustPolicyGenerator = gen.Struct(reflect.TypeOf(TrustPolicy{}), generators) + + return trustPolicyGenerator +} + +// AddIndependentPropertyGeneratorsForTrustPolicy is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForTrustPolicy(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.OneConstOf(TrustPolicy_Status_Disabled, TrustPolicy_Status_Enabled)) + gens["Type"] = gen.PtrOf(gen.OneConstOf(TrustPolicy_Type_Notary)) +} + +func Test_TrustPolicy_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from TrustPolicy_STATUS to TrustPolicy_STATUS via AssignProperties_To_TrustPolicy_STATUS & AssignProperties_From_TrustPolicy_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForTrustPolicy_STATUS, TrustPolicy_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForTrustPolicy_STATUS tests if a specific instance of TrustPolicy_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForTrustPolicy_STATUS(subject TrustPolicy_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.TrustPolicy_STATUS + err := copied.AssignProperties_To_TrustPolicy_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual TrustPolicy_STATUS + err = actual.AssignProperties_From_TrustPolicy_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_TrustPolicy_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 TrustPolicy_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForTrustPolicy_STATUS, TrustPolicy_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForTrustPolicy_STATUS runs a test to see if a specific instance of TrustPolicy_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForTrustPolicy_STATUS(subject TrustPolicy_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual TrustPolicy_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 TrustPolicy_STATUS instances for property testing - lazily instantiated by TrustPolicy_STATUSGenerator() +var trustPolicy_STATUSGenerator gopter.Gen + +// TrustPolicy_STATUSGenerator returns a generator of TrustPolicy_STATUS instances for property testing. +func TrustPolicy_STATUSGenerator() gopter.Gen { + if trustPolicy_STATUSGenerator != nil { + return trustPolicy_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForTrustPolicy_STATUS(generators) + trustPolicy_STATUSGenerator = gen.Struct(reflect.TypeOf(TrustPolicy_STATUS{}), generators) + + return trustPolicy_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForTrustPolicy_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForTrustPolicy_STATUS(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.OneConstOf(TrustPolicy_Status_STATUS_Disabled, TrustPolicy_Status_STATUS_Enabled)) + gens["Type"] = gen.PtrOf(gen.OneConstOf(TrustPolicy_Type_STATUS_Notary)) +} + +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_UserIdentityProperties_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from UserIdentityProperties_STATUS to UserIdentityProperties_STATUS via AssignProperties_To_UserIdentityProperties_STATUS & AssignProperties_From_UserIdentityProperties_STATUS returns original", + prop.ForAll(RunPropertyAssignmentTestForUserIdentityProperties_STATUS, UserIdentityProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForUserIdentityProperties_STATUS tests if a specific instance of UserIdentityProperties_STATUS can be assigned to storage and back losslessly +func RunPropertyAssignmentTestForUserIdentityProperties_STATUS(subject UserIdentityProperties_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.UserIdentityProperties_STATUS + err := copied.AssignProperties_To_UserIdentityProperties_STATUS(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual UserIdentityProperties_STATUS + err = actual.AssignProperties_From_UserIdentityProperties_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_UserIdentityProperties_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 UserIdentityProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUserIdentityProperties_STATUS, UserIdentityProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUserIdentityProperties_STATUS runs a test to see if a specific instance of UserIdentityProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForUserIdentityProperties_STATUS(subject UserIdentityProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UserIdentityProperties_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 UserIdentityProperties_STATUS instances for property testing - lazily instantiated by +// UserIdentityProperties_STATUSGenerator() +var userIdentityProperties_STATUSGenerator gopter.Gen + +// UserIdentityProperties_STATUSGenerator returns a generator of UserIdentityProperties_STATUS instances for property testing. +func UserIdentityProperties_STATUSGenerator() gopter.Gen { + if userIdentityProperties_STATUSGenerator != nil { + return userIdentityProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUserIdentityProperties_STATUS(generators) + userIdentityProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(UserIdentityProperties_STATUS{}), generators) + + return userIdentityProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForUserIdentityProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForUserIdentityProperties_STATUS(gens map[string]gopter.Gen) { + gens["ClientId"] = gen.PtrOf(gen.AlphaString()) + gens["PrincipalId"] = gen.PtrOf(gen.AlphaString()) +} diff --git a/v2/api/containerregistry/v1api20230701/storage/groupversion_info_gen.go b/v2/api/containerregistry/v1api20230701/storage/groupversion_info_gen.go new file mode 100644 index 00000000000..69702f6f1ed --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/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 containerregistry storage API group +// +kubebuilder:object:generate=true +// All object properties are optional by default, this will be overridden when needed: +// +kubebuilder:validation:Optional +// +groupName=containerregistry.azure.com +// +versionName=v1api20230701storage +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: "containerregistry.azure.com", Version: "v1api20230701storage"} + + // 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/containerregistry/v1api20230701/storage/registry_replication_types_gen.go b/v2/api/containerregistry/v1api20230701/storage/registry_replication_types_gen.go new file mode 100644 index 00000000000..c8babaf906b --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/storage/registry_replication_types_gen.go @@ -0,0 +1,254 @@ +// 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=containerregistry.azure.com,resources=registryreplications,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups=containerregistry.azure.com,resources={registryreplications/status,registryreplications/finalizers},verbs=get;update;patch + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion +// +kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="Severity",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].severity" +// +kubebuilder:printcolumn:name="Reason",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].reason" +// +kubebuilder:printcolumn:name="Message",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].message" +// Storage version of v1api20230701.RegistryReplication +// Generator information: +// - Generated from: /containerregistry/resource-manager/Microsoft.ContainerRegistry/stable/2023-07-01/containerregistry.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/replications/{replicationName} +type RegistryReplication struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec RegistryReplication_Spec `json:"spec,omitempty"` + Status RegistryReplication_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &RegistryReplication{} + +// GetConditions returns the conditions of the resource +func (replication *RegistryReplication) GetConditions() conditions.Conditions { + return replication.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (replication *RegistryReplication) SetConditions(conditions conditions.Conditions) { + replication.Status.Conditions = conditions +} + +var _ configmaps.Exporter = &RegistryReplication{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (replication *RegistryReplication) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if replication.Spec.OperatorSpec == nil { + return nil + } + return replication.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &RegistryReplication{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (replication *RegistryReplication) SecretDestinationExpressions() []*core.DestinationExpression { + if replication.Spec.OperatorSpec == nil { + return nil + } + return replication.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.KubernetesResource = &RegistryReplication{} + +// AzureName returns the Azure name of the resource +func (replication *RegistryReplication) AzureName() string { + return replication.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2023-07-01" +func (replication RegistryReplication) GetAPIVersion() string { + return "2023-07-01" +} + +// GetResourceScope returns the scope of the resource +func (replication *RegistryReplication) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (replication *RegistryReplication) GetSpec() genruntime.ConvertibleSpec { + return &replication.Spec +} + +// GetStatus returns the status of this resource +func (replication *RegistryReplication) GetStatus() genruntime.ConvertibleStatus { + return &replication.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (replication *RegistryReplication) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.ContainerRegistry/registries/replications" +func (replication *RegistryReplication) GetType() string { + return "Microsoft.ContainerRegistry/registries/replications" +} + +// NewEmptyStatus returns a new empty (blank) status +func (replication *RegistryReplication) NewEmptyStatus() genruntime.ConvertibleStatus { + return &RegistryReplication_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (replication *RegistryReplication) Owner() *genruntime.ResourceReference { + if replication.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(replication.Spec) + return replication.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (replication *RegistryReplication) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*RegistryReplication_STATUS); ok { + replication.Status = *st + return nil + } + + // Convert status to required version + var st RegistryReplication_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + replication.Status = st + return nil +} + +// Hub marks that this RegistryReplication is the hub type for conversion +func (replication *RegistryReplication) Hub() {} + +// OriginalGVK returns a GroupValueKind for the original API version used to create the resource +func (replication *RegistryReplication) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: replication.Spec.OriginalVersion, + Kind: "RegistryReplication", + } +} + +// +kubebuilder:object:root=true +// Storage version of v1api20230701.RegistryReplication +// Generator information: +// - Generated from: /containerregistry/resource-manager/Microsoft.ContainerRegistry/stable/2023-07-01/containerregistry.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName}/replications/{replicationName} +type RegistryReplicationList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []RegistryReplication `json:"items"` +} + +// Storage version of v1api20230701.RegistryReplication_Spec +type RegistryReplication_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 *RegistryReplicationOperatorSpec `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 containerregistry.azure.com/Registry resource + Owner *genruntime.KnownResourceReference `group:"containerregistry.azure.com" json:"owner,omitempty" kind:"Registry"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + RegionEndpointEnabled *bool `json:"regionEndpointEnabled,omitempty"` + Tags map[string]string `json:"tags,omitempty"` + ZoneRedundancy *string `json:"zoneRedundancy,omitempty"` +} + +var _ genruntime.ConvertibleSpec = &RegistryReplication_Spec{} + +// ConvertSpecFrom populates our RegistryReplication_Spec from the provided source +func (replication *RegistryReplication_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + if source == replication { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return source.ConvertSpecTo(replication) +} + +// ConvertSpecTo populates the provided destination from our RegistryReplication_Spec +func (replication *RegistryReplication_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + if destination == replication { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return destination.ConvertSpecFrom(replication) +} + +// Storage version of v1api20230701.RegistryReplication_STATUS +type RegistryReplication_STATUS struct { + Conditions []conditions.Condition `json:"conditions,omitempty"` + Id *string `json:"id,omitempty"` + Location *string `json:"location,omitempty"` + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + ProvisioningState *string `json:"provisioningState,omitempty"` + RegionEndpointEnabled *bool `json:"regionEndpointEnabled,omitempty"` + Status *Status_STATUS `json:"status,omitempty"` + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + Tags map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + ZoneRedundancy *string `json:"zoneRedundancy,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &RegistryReplication_STATUS{} + +// ConvertStatusFrom populates our RegistryReplication_STATUS from the provided source +func (replication *RegistryReplication_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + if source == replication { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return source.ConvertStatusTo(replication) +} + +// ConvertStatusTo populates the provided destination from our RegistryReplication_STATUS +func (replication *RegistryReplication_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + if destination == replication { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return destination.ConvertStatusFrom(replication) +} + +// Storage version of v1api20230701.RegistryReplicationOperatorSpec +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type RegistryReplicationOperatorSpec struct { + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` +} + +func init() { + SchemeBuilder.Register(&RegistryReplication{}, &RegistryReplicationList{}) +} diff --git a/v2/api/containerregistry/v1api20230701/storage/registry_replication_types_gen_test.go b/v2/api/containerregistry/v1api20230701/storage/registry_replication_types_gen_test.go new file mode 100644 index 00000000000..c8aaadfd99f --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/storage/registry_replication_types_gen_test.go @@ -0,0 +1,302 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT license. +package storage + +import ( + "encoding/json" + "github.com/google/go-cmp/cmp" + "github.com/google/go-cmp/cmp/cmpopts" + "github.com/kr/pretty" + "github.com/kylelemons/godebug/diff" + "github.com/leanovate/gopter" + "github.com/leanovate/gopter/gen" + "github.com/leanovate/gopter/prop" + "os" + "reflect" + "testing" +) + +func Test_RegistryReplication_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 RegistryReplication via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRegistryReplication, RegistryReplicationGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRegistryReplication runs a test to see if a specific instance of RegistryReplication round trips to JSON and back losslessly +func RunJSONSerializationTestForRegistryReplication(subject RegistryReplication) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual RegistryReplication + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of RegistryReplication instances for property testing - lazily instantiated by +// RegistryReplicationGenerator() +var registryReplicationGenerator gopter.Gen + +// RegistryReplicationGenerator returns a generator of RegistryReplication instances for property testing. +func RegistryReplicationGenerator() gopter.Gen { + if registryReplicationGenerator != nil { + return registryReplicationGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForRegistryReplication(generators) + registryReplicationGenerator = gen.Struct(reflect.TypeOf(RegistryReplication{}), generators) + + return registryReplicationGenerator +} + +// AddRelatedPropertyGeneratorsForRegistryReplication is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForRegistryReplication(gens map[string]gopter.Gen) { + gens["Spec"] = RegistryReplication_SpecGenerator() + gens["Status"] = RegistryReplication_STATUSGenerator() +} + +func Test_RegistryReplicationOperatorSpec_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 RegistryReplicationOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRegistryReplicationOperatorSpec, RegistryReplicationOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRegistryReplicationOperatorSpec runs a test to see if a specific instance of RegistryReplicationOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForRegistryReplicationOperatorSpec(subject RegistryReplicationOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual RegistryReplicationOperatorSpec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of RegistryReplicationOperatorSpec instances for property testing - lazily instantiated by +// RegistryReplicationOperatorSpecGenerator() +var registryReplicationOperatorSpecGenerator gopter.Gen + +// RegistryReplicationOperatorSpecGenerator returns a generator of RegistryReplicationOperatorSpec instances for property testing. +func RegistryReplicationOperatorSpecGenerator() gopter.Gen { + if registryReplicationOperatorSpecGenerator != nil { + return registryReplicationOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + registryReplicationOperatorSpecGenerator = gen.Struct(reflect.TypeOf(RegistryReplicationOperatorSpec{}), generators) + + return registryReplicationOperatorSpecGenerator +} + +func Test_RegistryReplication_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 RegistryReplication_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRegistryReplication_STATUS, RegistryReplication_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRegistryReplication_STATUS runs a test to see if a specific instance of RegistryReplication_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForRegistryReplication_STATUS(subject RegistryReplication_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual RegistryReplication_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 RegistryReplication_STATUS instances for property testing - lazily instantiated by +// RegistryReplication_STATUSGenerator() +var registryReplication_STATUSGenerator gopter.Gen + +// RegistryReplication_STATUSGenerator returns a generator of RegistryReplication_STATUS instances for property testing. +// We first initialize registryReplication_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 RegistryReplication_STATUSGenerator() gopter.Gen { + if registryReplication_STATUSGenerator != nil { + return registryReplication_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistryReplication_STATUS(generators) + registryReplication_STATUSGenerator = gen.Struct(reflect.TypeOf(RegistryReplication_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistryReplication_STATUS(generators) + AddRelatedPropertyGeneratorsForRegistryReplication_STATUS(generators) + registryReplication_STATUSGenerator = gen.Struct(reflect.TypeOf(RegistryReplication_STATUS{}), generators) + + return registryReplication_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForRegistryReplication_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForRegistryReplication_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.AlphaString()) + gens["RegionEndpointEnabled"] = gen.PtrOf(gen.Bool()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) + gens["ZoneRedundancy"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForRegistryReplication_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForRegistryReplication_STATUS(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(Status_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_RegistryReplication_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 RegistryReplication_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRegistryReplication_Spec, RegistryReplication_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRegistryReplication_Spec runs a test to see if a specific instance of RegistryReplication_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForRegistryReplication_Spec(subject RegistryReplication_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual RegistryReplication_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 RegistryReplication_Spec instances for property testing - lazily instantiated by +// RegistryReplication_SpecGenerator() +var registryReplication_SpecGenerator gopter.Gen + +// RegistryReplication_SpecGenerator returns a generator of RegistryReplication_Spec instances for property testing. +// We first initialize registryReplication_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 RegistryReplication_SpecGenerator() gopter.Gen { + if registryReplication_SpecGenerator != nil { + return registryReplication_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistryReplication_Spec(generators) + registryReplication_SpecGenerator = gen.Struct(reflect.TypeOf(RegistryReplication_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistryReplication_Spec(generators) + AddRelatedPropertyGeneratorsForRegistryReplication_Spec(generators) + registryReplication_SpecGenerator = gen.Struct(reflect.TypeOf(RegistryReplication_Spec{}), generators) + + return registryReplication_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForRegistryReplication_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForRegistryReplication_Spec(gens map[string]gopter.Gen) { + gens["AzureName"] = gen.AlphaString() + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["OriginalVersion"] = gen.AlphaString() + gens["RegionEndpointEnabled"] = gen.PtrOf(gen.Bool()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["ZoneRedundancy"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForRegistryReplication_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForRegistryReplication_Spec(gens map[string]gopter.Gen) { + gens["OperatorSpec"] = gen.PtrOf(RegistryReplicationOperatorSpecGenerator()) +} diff --git a/v2/api/containerregistry/v1api20230701/storage/registry_types_gen.go b/v2/api/containerregistry/v1api20230701/storage/registry_types_gen.go new file mode 100644 index 00000000000..72b7f55249f --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/storage/registry_types_gen.go @@ -0,0 +1,502 @@ +// 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=containerregistry.azure.com,resources=registries,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups=containerregistry.azure.com,resources={registries/status,registries/finalizers},verbs=get;update;patch + +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +// +kubebuilder:storageversion +// +kubebuilder:printcolumn:name="Ready",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].status" +// +kubebuilder:printcolumn:name="Severity",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].severity" +// +kubebuilder:printcolumn:name="Reason",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].reason" +// +kubebuilder:printcolumn:name="Message",type="string",JSONPath=".status.conditions[?(@.type=='Ready')].message" +// Storage version of v1api20230701.Registry +// Generator information: +// - Generated from: /containerregistry/resource-manager/Microsoft.ContainerRegistry/stable/2023-07-01/containerregistry.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName} +type Registry struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec Registry_Spec `json:"spec,omitempty"` + Status Registry_STATUS `json:"status,omitempty"` +} + +var _ conditions.Conditioner = &Registry{} + +// GetConditions returns the conditions of the resource +func (registry *Registry) GetConditions() conditions.Conditions { + return registry.Status.Conditions +} + +// SetConditions sets the conditions on the resource status +func (registry *Registry) SetConditions(conditions conditions.Conditions) { + registry.Status.Conditions = conditions +} + +var _ configmaps.Exporter = &Registry{} + +// ConfigMapDestinationExpressions returns the Spec.OperatorSpec.ConfigMapExpressions property +func (registry *Registry) ConfigMapDestinationExpressions() []*core.DestinationExpression { + if registry.Spec.OperatorSpec == nil { + return nil + } + return registry.Spec.OperatorSpec.ConfigMapExpressions +} + +var _ secrets.Exporter = &Registry{} + +// SecretDestinationExpressions returns the Spec.OperatorSpec.SecretExpressions property +func (registry *Registry) SecretDestinationExpressions() []*core.DestinationExpression { + if registry.Spec.OperatorSpec == nil { + return nil + } + return registry.Spec.OperatorSpec.SecretExpressions +} + +var _ genruntime.KubernetesResource = &Registry{} + +// AzureName returns the Azure name of the resource +func (registry *Registry) AzureName() string { + return registry.Spec.AzureName +} + +// GetAPIVersion returns the ARM API version of the resource. This is always "2023-07-01" +func (registry Registry) GetAPIVersion() string { + return "2023-07-01" +} + +// GetResourceScope returns the scope of the resource +func (registry *Registry) GetResourceScope() genruntime.ResourceScope { + return genruntime.ResourceScopeResourceGroup +} + +// GetSpec returns the specification of this resource +func (registry *Registry) GetSpec() genruntime.ConvertibleSpec { + return ®istry.Spec +} + +// GetStatus returns the status of this resource +func (registry *Registry) GetStatus() genruntime.ConvertibleStatus { + return ®istry.Status +} + +// GetSupportedOperations returns the operations supported by the resource +func (registry *Registry) GetSupportedOperations() []genruntime.ResourceOperation { + return []genruntime.ResourceOperation{ + genruntime.ResourceOperationDelete, + genruntime.ResourceOperationGet, + genruntime.ResourceOperationPut, + } +} + +// GetType returns the ARM Type of the resource. This is always "Microsoft.ContainerRegistry/registries" +func (registry *Registry) GetType() string { + return "Microsoft.ContainerRegistry/registries" +} + +// NewEmptyStatus returns a new empty (blank) status +func (registry *Registry) NewEmptyStatus() genruntime.ConvertibleStatus { + return &Registry_STATUS{} +} + +// Owner returns the ResourceReference of the owner +func (registry *Registry) Owner() *genruntime.ResourceReference { + if registry.Spec.Owner == nil { + return nil + } + + group, kind := genruntime.LookupOwnerGroupKind(registry.Spec) + return registry.Spec.Owner.AsResourceReference(group, kind) +} + +// SetStatus sets the status of this resource +func (registry *Registry) SetStatus(status genruntime.ConvertibleStatus) error { + // If we have exactly the right type of status, assign it + if st, ok := status.(*Registry_STATUS); ok { + registry.Status = *st + return nil + } + + // Convert status to required version + var st Registry_STATUS + err := status.ConvertStatusTo(&st) + if err != nil { + return eris.Wrap(err, "failed to convert status") + } + + registry.Status = st + return nil +} + +// Hub marks that this Registry is the hub type for conversion +func (registry *Registry) Hub() {} + +// OriginalGVK returns a GroupValueKind for the original API version used to create the resource +func (registry *Registry) OriginalGVK() *schema.GroupVersionKind { + return &schema.GroupVersionKind{ + Group: GroupVersion.Group, + Version: registry.Spec.OriginalVersion, + Kind: "Registry", + } +} + +// +kubebuilder:object:root=true +// Storage version of v1api20230701.Registry +// Generator information: +// - Generated from: /containerregistry/resource-manager/Microsoft.ContainerRegistry/stable/2023-07-01/containerregistry.json +// - ARM URI: /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerRegistry/registries/{registryName} +type RegistryList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Registry `json:"items"` +} + +// Storage version of v1api20230701.APIVersion +// +kubebuilder:validation:Enum={"2023-07-01"} +type APIVersion string + +const APIVersion_Value = APIVersion("2023-07-01") + +// Storage version of v1api20230701.Registry_Spec +type Registry_Spec struct { + AdminUserEnabled *bool `json:"adminUserEnabled,omitempty"` + + // AzureName: The name of the resource in Azure. This is often the same as the name of the resource in Kubernetes but it + // doesn't have to be. + AzureName string `json:"azureName,omitempty"` + DataEndpointEnabled *bool `json:"dataEndpointEnabled,omitempty"` + Encryption *EncryptionProperty `json:"encryption,omitempty"` + Identity *IdentityProperties `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + NetworkRuleBypassOptions *string `json:"networkRuleBypassOptions,omitempty"` + NetworkRuleSet *NetworkRuleSet `json:"networkRuleSet,omitempty"` + OperatorSpec *RegistryOperatorSpec `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"` + Policies *Policies `json:"policies,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + PublicNetworkAccess *string `json:"publicNetworkAccess,omitempty"` + Sku *Sku `json:"sku,omitempty"` + Tags map[string]string `json:"tags,omitempty"` + ZoneRedundancy *string `json:"zoneRedundancy,omitempty"` +} + +var _ genruntime.ConvertibleSpec = &Registry_Spec{} + +// ConvertSpecFrom populates our Registry_Spec from the provided source +func (registry *Registry_Spec) ConvertSpecFrom(source genruntime.ConvertibleSpec) error { + if source == registry { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return source.ConvertSpecTo(registry) +} + +// ConvertSpecTo populates the provided destination from our Registry_Spec +func (registry *Registry_Spec) ConvertSpecTo(destination genruntime.ConvertibleSpec) error { + if destination == registry { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleSpec") + } + + return destination.ConvertSpecFrom(registry) +} + +// Storage version of v1api20230701.Registry_STATUS +// An object that represents a container registry. +type Registry_STATUS struct { + AdminUserEnabled *bool `json:"adminUserEnabled,omitempty"` + Conditions []conditions.Condition `json:"conditions,omitempty"` + CreationDate *string `json:"creationDate,omitempty"` + DataEndpointEnabled *bool `json:"dataEndpointEnabled,omitempty"` + DataEndpointHostNames []string `json:"dataEndpointHostNames,omitempty"` + Encryption *EncryptionProperty_STATUS `json:"encryption,omitempty"` + Id *string `json:"id,omitempty"` + Identity *IdentityProperties_STATUS `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + LoginServer *string `json:"loginServer,omitempty"` + Name *string `json:"name,omitempty"` + NetworkRuleBypassOptions *string `json:"networkRuleBypassOptions,omitempty"` + NetworkRuleSet *NetworkRuleSet_STATUS `json:"networkRuleSet,omitempty"` + Policies *Policies_STATUS `json:"policies,omitempty"` + PrivateEndpointConnections []PrivateEndpointConnection_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"` + Status *Status_STATUS `json:"status,omitempty"` + SystemData *SystemData_STATUS `json:"systemData,omitempty"` + Tags map[string]string `json:"tags,omitempty"` + Type *string `json:"type,omitempty"` + ZoneRedundancy *string `json:"zoneRedundancy,omitempty"` +} + +var _ genruntime.ConvertibleStatus = &Registry_STATUS{} + +// ConvertStatusFrom populates our Registry_STATUS from the provided source +func (registry *Registry_STATUS) ConvertStatusFrom(source genruntime.ConvertibleStatus) error { + if source == registry { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return source.ConvertStatusTo(registry) +} + +// ConvertStatusTo populates the provided destination from our Registry_STATUS +func (registry *Registry_STATUS) ConvertStatusTo(destination genruntime.ConvertibleStatus) error { + if destination == registry { + return eris.New("attempted conversion between unrelated implementations of github.com/Azure/azure-service-operator/v2/pkg/genruntime/ConvertibleStatus") + } + + return destination.ConvertStatusFrom(registry) +} + +// Storage version of v1api20230701.EncryptionProperty +type EncryptionProperty struct { + KeyVaultProperties *KeyVaultProperties `json:"keyVaultProperties,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Status *string `json:"status,omitempty"` +} + +// Storage version of v1api20230701.EncryptionProperty_STATUS +type EncryptionProperty_STATUS struct { + KeyVaultProperties *KeyVaultProperties_STATUS `json:"keyVaultProperties,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Status *string `json:"status,omitempty"` +} + +// Storage version of v1api20230701.IdentityProperties +// Managed identity for the resource. +type IdentityProperties struct { + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Type *string `json:"type,omitempty"` + UserAssignedIdentities []UserAssignedIdentityDetails `json:"userAssignedIdentities,omitempty"` +} + +// Storage version of v1api20230701.IdentityProperties_STATUS +// Managed identity for the resource. +type IdentityProperties_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]UserIdentityProperties_STATUS `json:"userAssignedIdentities,omitempty"` +} + +// Storage version of v1api20230701.NetworkRuleSet +// The network rule set for a container registry. +type NetworkRuleSet struct { + DefaultAction *string `json:"defaultAction,omitempty"` + IpRules []IPRule `json:"ipRules,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20230701.NetworkRuleSet_STATUS +// The network rule set for a container registry. +type NetworkRuleSet_STATUS struct { + DefaultAction *string `json:"defaultAction,omitempty"` + IpRules []IPRule_STATUS `json:"ipRules,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20230701.Policies +// The policies for a container registry. +type Policies struct { + ExportPolicy *ExportPolicy `json:"exportPolicy,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + QuarantinePolicy *QuarantinePolicy `json:"quarantinePolicy,omitempty"` + RetentionPolicy *RetentionPolicy `json:"retentionPolicy,omitempty"` + TrustPolicy *TrustPolicy `json:"trustPolicy,omitempty"` +} + +// Storage version of v1api20230701.Policies_STATUS +// The policies for a container registry. +type Policies_STATUS struct { + ExportPolicy *ExportPolicy_STATUS `json:"exportPolicy,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + QuarantinePolicy *QuarantinePolicy_STATUS `json:"quarantinePolicy,omitempty"` + RetentionPolicy *RetentionPolicy_STATUS `json:"retentionPolicy,omitempty"` + TrustPolicy *TrustPolicy_STATUS `json:"trustPolicy,omitempty"` +} + +// Storage version of v1api20230701.PrivateEndpointConnection_STATUS +// An object that represents a private endpoint connection for a container registry. +type PrivateEndpointConnection_STATUS struct { + Id *string `json:"id,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20230701.RegistryOperatorSpec +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type RegistryOperatorSpec struct { + ConfigMapExpressions []*core.DestinationExpression `json:"configMapExpressions,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + SecretExpressions []*core.DestinationExpression `json:"secretExpressions,omitempty"` +} + +// Storage version of v1api20230701.Sku +// The SKU of a container registry. +type Sku struct { + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20230701.Sku_STATUS +// The SKU of a container registry. +type Sku_STATUS struct { + Name *string `json:"name,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Tier *string `json:"tier,omitempty"` +} + +// Storage version of v1api20230701.Status_STATUS +// The status of an Azure resource at the time the operation was called. +type Status_STATUS struct { + DisplayStatus *string `json:"displayStatus,omitempty"` + Message *string `json:"message,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Timestamp *string `json:"timestamp,omitempty"` +} + +// Storage version of v1api20230701.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 v1api20230701.ExportPolicy +// The export policy for a container registry. +type ExportPolicy struct { + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Status *string `json:"status,omitempty"` +} + +// Storage version of v1api20230701.ExportPolicy_STATUS +// The export policy for a container registry. +type ExportPolicy_STATUS struct { + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Status *string `json:"status,omitempty"` +} + +// Storage version of v1api20230701.IPRule +// IP rule with specific IP or IP range in CIDR format. +type IPRule struct { + Action *string `json:"action,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Value *string `json:"value,omitempty"` +} + +// Storage version of v1api20230701.IPRule_STATUS +// IP rule with specific IP or IP range in CIDR format. +type IPRule_STATUS struct { + Action *string `json:"action,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Value *string `json:"value,omitempty"` +} + +// Storage version of v1api20230701.KeyVaultProperties +type KeyVaultProperties struct { + Identity *string `json:"identity,omitempty" optionalConfigMapPair:"Identity"` + IdentityFromConfig *genruntime.ConfigMapReference `json:"identityFromConfig,omitempty" optionalConfigMapPair:"Identity"` + KeyIdentifier *string `json:"keyIdentifier,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +// Storage version of v1api20230701.KeyVaultProperties_STATUS +type KeyVaultProperties_STATUS struct { + Identity *string `json:"identity,omitempty"` + KeyIdentifier *string `json:"keyIdentifier,omitempty"` + KeyRotationEnabled *bool `json:"keyRotationEnabled,omitempty"` + LastKeyRotationTimestamp *string `json:"lastKeyRotationTimestamp,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + VersionedKeyIdentifier *string `json:"versionedKeyIdentifier,omitempty"` +} + +// Storage version of v1api20230701.QuarantinePolicy +// The quarantine policy for a container registry. +type QuarantinePolicy struct { + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Status *string `json:"status,omitempty"` +} + +// Storage version of v1api20230701.QuarantinePolicy_STATUS +// The quarantine policy for a container registry. +type QuarantinePolicy_STATUS struct { + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Status *string `json:"status,omitempty"` +} + +// Storage version of v1api20230701.RetentionPolicy +// The retention policy for a container registry. +type RetentionPolicy struct { + Days *int `json:"days,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Status *string `json:"status,omitempty"` +} + +// Storage version of v1api20230701.RetentionPolicy_STATUS +// The retention policy for a container registry. +type RetentionPolicy_STATUS struct { + Days *int `json:"days,omitempty"` + LastUpdatedTime *string `json:"lastUpdatedTime,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Status *string `json:"status,omitempty"` +} + +// Storage version of v1api20230701.TrustPolicy +// The content trust policy for a container registry. +type TrustPolicy struct { + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Status *string `json:"status,omitempty"` + Type *string `json:"type,omitempty"` +} + +// Storage version of v1api20230701.TrustPolicy_STATUS +// The content trust policy for a container registry. +type TrustPolicy_STATUS struct { + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Status *string `json:"status,omitempty"` + Type *string `json:"type,omitempty"` +} + +// Storage version of v1api20230701.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 v1api20230701.UserIdentityProperties_STATUS +type UserIdentityProperties_STATUS struct { + ClientId *string `json:"clientId,omitempty"` + PrincipalId *string `json:"principalId,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + +func init() { + SchemeBuilder.Register(&Registry{}, &RegistryList{}) +} diff --git a/v2/api/containerregistry/v1api20230701/storage/registry_types_gen_test.go b/v2/api/containerregistry/v1api20230701/storage/registry_types_gen_test.go new file mode 100644 index 00000000000..d018aa63a68 --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/storage/registry_types_gen_test.go @@ -0,0 +1,2058 @@ +// 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_EncryptionProperty_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 EncryptionProperty via JSON returns original", + prop.ForAll(RunJSONSerializationTestForEncryptionProperty, EncryptionPropertyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForEncryptionProperty runs a test to see if a specific instance of EncryptionProperty round trips to JSON and back losslessly +func RunJSONSerializationTestForEncryptionProperty(subject EncryptionProperty) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual EncryptionProperty + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of EncryptionProperty instances for property testing - lazily instantiated by EncryptionPropertyGenerator() +var encryptionPropertyGenerator gopter.Gen + +// EncryptionPropertyGenerator returns a generator of EncryptionProperty instances for property testing. +// We first initialize encryptionPropertyGenerator 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 EncryptionPropertyGenerator() gopter.Gen { + if encryptionPropertyGenerator != nil { + return encryptionPropertyGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForEncryptionProperty(generators) + encryptionPropertyGenerator = gen.Struct(reflect.TypeOf(EncryptionProperty{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForEncryptionProperty(generators) + AddRelatedPropertyGeneratorsForEncryptionProperty(generators) + encryptionPropertyGenerator = gen.Struct(reflect.TypeOf(EncryptionProperty{}), generators) + + return encryptionPropertyGenerator +} + +// AddIndependentPropertyGeneratorsForEncryptionProperty is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForEncryptionProperty(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForEncryptionProperty is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForEncryptionProperty(gens map[string]gopter.Gen) { + gens["KeyVaultProperties"] = gen.PtrOf(KeyVaultPropertiesGenerator()) +} + +func Test_EncryptionProperty_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 EncryptionProperty_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForEncryptionProperty_STATUS, EncryptionProperty_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForEncryptionProperty_STATUS runs a test to see if a specific instance of EncryptionProperty_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForEncryptionProperty_STATUS(subject EncryptionProperty_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual EncryptionProperty_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 EncryptionProperty_STATUS instances for property testing - lazily instantiated by +// EncryptionProperty_STATUSGenerator() +var encryptionProperty_STATUSGenerator gopter.Gen + +// EncryptionProperty_STATUSGenerator returns a generator of EncryptionProperty_STATUS instances for property testing. +// We first initialize encryptionProperty_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 EncryptionProperty_STATUSGenerator() gopter.Gen { + if encryptionProperty_STATUSGenerator != nil { + return encryptionProperty_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForEncryptionProperty_STATUS(generators) + encryptionProperty_STATUSGenerator = gen.Struct(reflect.TypeOf(EncryptionProperty_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForEncryptionProperty_STATUS(generators) + AddRelatedPropertyGeneratorsForEncryptionProperty_STATUS(generators) + encryptionProperty_STATUSGenerator = gen.Struct(reflect.TypeOf(EncryptionProperty_STATUS{}), generators) + + return encryptionProperty_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForEncryptionProperty_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForEncryptionProperty_STATUS(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForEncryptionProperty_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForEncryptionProperty_STATUS(gens map[string]gopter.Gen) { + gens["KeyVaultProperties"] = gen.PtrOf(KeyVaultProperties_STATUSGenerator()) +} + +func Test_ExportPolicy_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 ExportPolicy via JSON returns original", + prop.ForAll(RunJSONSerializationTestForExportPolicy, ExportPolicyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForExportPolicy runs a test to see if a specific instance of ExportPolicy round trips to JSON and back losslessly +func RunJSONSerializationTestForExportPolicy(subject ExportPolicy) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ExportPolicy + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of ExportPolicy instances for property testing - lazily instantiated by ExportPolicyGenerator() +var exportPolicyGenerator gopter.Gen + +// ExportPolicyGenerator returns a generator of ExportPolicy instances for property testing. +func ExportPolicyGenerator() gopter.Gen { + if exportPolicyGenerator != nil { + return exportPolicyGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForExportPolicy(generators) + exportPolicyGenerator = gen.Struct(reflect.TypeOf(ExportPolicy{}), generators) + + return exportPolicyGenerator +} + +// AddIndependentPropertyGeneratorsForExportPolicy is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForExportPolicy(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_ExportPolicy_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 ExportPolicy_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForExportPolicy_STATUS, ExportPolicy_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForExportPolicy_STATUS runs a test to see if a specific instance of ExportPolicy_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForExportPolicy_STATUS(subject ExportPolicy_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual ExportPolicy_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 ExportPolicy_STATUS instances for property testing - lazily instantiated by +// ExportPolicy_STATUSGenerator() +var exportPolicy_STATUSGenerator gopter.Gen + +// ExportPolicy_STATUSGenerator returns a generator of ExportPolicy_STATUS instances for property testing. +func ExportPolicy_STATUSGenerator() gopter.Gen { + if exportPolicy_STATUSGenerator != nil { + return exportPolicy_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForExportPolicy_STATUS(generators) + exportPolicy_STATUSGenerator = gen.Struct(reflect.TypeOf(ExportPolicy_STATUS{}), generators) + + return exportPolicy_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForExportPolicy_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForExportPolicy_STATUS(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_IPRule_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 100 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of IPRule via JSON returns original", + prop.ForAll(RunJSONSerializationTestForIPRule, IPRuleGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForIPRule runs a test to see if a specific instance of IPRule round trips to JSON and back losslessly +func RunJSONSerializationTestForIPRule(subject IPRule) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual IPRule + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of IPRule instances for property testing - lazily instantiated by IPRuleGenerator() +var ipRuleGenerator gopter.Gen + +// IPRuleGenerator returns a generator of IPRule instances for property testing. +func IPRuleGenerator() gopter.Gen { + if ipRuleGenerator != nil { + return ipRuleGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIPRule(generators) + ipRuleGenerator = gen.Struct(reflect.TypeOf(IPRule{}), generators) + + return ipRuleGenerator +} + +// AddIndependentPropertyGeneratorsForIPRule is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForIPRule(gens map[string]gopter.Gen) { + gens["Action"] = gen.PtrOf(gen.AlphaString()) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_IPRule_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of IPRule_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForIPRule_STATUS, IPRule_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForIPRule_STATUS runs a test to see if a specific instance of IPRule_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForIPRule_STATUS(subject IPRule_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual IPRule_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of IPRule_STATUS instances for property testing - lazily instantiated by IPRule_STATUSGenerator() +var ipRule_STATUSGenerator gopter.Gen + +// IPRule_STATUSGenerator returns a generator of IPRule_STATUS instances for property testing. +func IPRule_STATUSGenerator() gopter.Gen { + if ipRule_STATUSGenerator != nil { + return ipRule_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIPRule_STATUS(generators) + ipRule_STATUSGenerator = gen.Struct(reflect.TypeOf(IPRule_STATUS{}), generators) + + return ipRule_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForIPRule_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForIPRule_STATUS(gens map[string]gopter.Gen) { + gens["Action"] = gen.PtrOf(gen.AlphaString()) + gens["Value"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_IdentityProperties_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 IdentityProperties via JSON returns original", + prop.ForAll(RunJSONSerializationTestForIdentityProperties, IdentityPropertiesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForIdentityProperties runs a test to see if a specific instance of IdentityProperties round trips to JSON and back losslessly +func RunJSONSerializationTestForIdentityProperties(subject IdentityProperties) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual IdentityProperties + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of IdentityProperties instances for property testing - lazily instantiated by IdentityPropertiesGenerator() +var identityPropertiesGenerator gopter.Gen + +// IdentityPropertiesGenerator returns a generator of IdentityProperties instances for property testing. +// We first initialize identityPropertiesGenerator 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 IdentityPropertiesGenerator() gopter.Gen { + if identityPropertiesGenerator != nil { + return identityPropertiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIdentityProperties(generators) + identityPropertiesGenerator = gen.Struct(reflect.TypeOf(IdentityProperties{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIdentityProperties(generators) + AddRelatedPropertyGeneratorsForIdentityProperties(generators) + identityPropertiesGenerator = gen.Struct(reflect.TypeOf(IdentityProperties{}), generators) + + return identityPropertiesGenerator +} + +// AddIndependentPropertyGeneratorsForIdentityProperties is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForIdentityProperties(gens map[string]gopter.Gen) { + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForIdentityProperties is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForIdentityProperties(gens map[string]gopter.Gen) { + gens["UserAssignedIdentities"] = gen.SliceOf(UserAssignedIdentityDetailsGenerator()) +} + +func Test_IdentityProperties_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 IdentityProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForIdentityProperties_STATUS, IdentityProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForIdentityProperties_STATUS runs a test to see if a specific instance of IdentityProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForIdentityProperties_STATUS(subject IdentityProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual IdentityProperties_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 IdentityProperties_STATUS instances for property testing - lazily instantiated by +// IdentityProperties_STATUSGenerator() +var identityProperties_STATUSGenerator gopter.Gen + +// IdentityProperties_STATUSGenerator returns a generator of IdentityProperties_STATUS instances for property testing. +// We first initialize identityProperties_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 IdentityProperties_STATUSGenerator() gopter.Gen { + if identityProperties_STATUSGenerator != nil { + return identityProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIdentityProperties_STATUS(generators) + identityProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(IdentityProperties_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForIdentityProperties_STATUS(generators) + AddRelatedPropertyGeneratorsForIdentityProperties_STATUS(generators) + identityProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(IdentityProperties_STATUS{}), generators) + + return identityProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForIdentityProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForIdentityProperties_STATUS(gens map[string]gopter.Gen) { + gens["PrincipalId"] = gen.PtrOf(gen.AlphaString()) + gens["TenantId"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForIdentityProperties_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForIdentityProperties_STATUS(gens map[string]gopter.Gen) { + gens["UserAssignedIdentities"] = gen.MapOf( + gen.AlphaString(), + UserIdentityProperties_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["Identity"] = 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["Identity"] = gen.PtrOf(gen.AlphaString()) + gens["KeyIdentifier"] = gen.PtrOf(gen.AlphaString()) + gens["KeyRotationEnabled"] = gen.PtrOf(gen.Bool()) + gens["LastKeyRotationTimestamp"] = gen.PtrOf(gen.AlphaString()) + gens["VersionedKeyIdentifier"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_NetworkRuleSet_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 NetworkRuleSet via JSON returns original", + prop.ForAll(RunJSONSerializationTestForNetworkRuleSet, NetworkRuleSetGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForNetworkRuleSet runs a test to see if a specific instance of NetworkRuleSet round trips to JSON and back losslessly +func RunJSONSerializationTestForNetworkRuleSet(subject NetworkRuleSet) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual NetworkRuleSet + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of NetworkRuleSet instances for property testing - lazily instantiated by NetworkRuleSetGenerator() +var networkRuleSetGenerator gopter.Gen + +// NetworkRuleSetGenerator returns a generator of NetworkRuleSet instances for property testing. +// We first initialize networkRuleSetGenerator 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 NetworkRuleSetGenerator() gopter.Gen { + if networkRuleSetGenerator != nil { + return networkRuleSetGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetworkRuleSet(generators) + networkRuleSetGenerator = gen.Struct(reflect.TypeOf(NetworkRuleSet{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetworkRuleSet(generators) + AddRelatedPropertyGeneratorsForNetworkRuleSet(generators) + networkRuleSetGenerator = gen.Struct(reflect.TypeOf(NetworkRuleSet{}), generators) + + return networkRuleSetGenerator +} + +// AddIndependentPropertyGeneratorsForNetworkRuleSet is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForNetworkRuleSet(gens map[string]gopter.Gen) { + gens["DefaultAction"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForNetworkRuleSet is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForNetworkRuleSet(gens map[string]gopter.Gen) { + gens["IpRules"] = gen.SliceOf(IPRuleGenerator()) +} + +func Test_NetworkRuleSet_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 NetworkRuleSet_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForNetworkRuleSet_STATUS, NetworkRuleSet_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForNetworkRuleSet_STATUS runs a test to see if a specific instance of NetworkRuleSet_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForNetworkRuleSet_STATUS(subject NetworkRuleSet_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual NetworkRuleSet_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 NetworkRuleSet_STATUS instances for property testing - lazily instantiated by +// NetworkRuleSet_STATUSGenerator() +var networkRuleSet_STATUSGenerator gopter.Gen + +// NetworkRuleSet_STATUSGenerator returns a generator of NetworkRuleSet_STATUS instances for property testing. +// We first initialize networkRuleSet_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 NetworkRuleSet_STATUSGenerator() gopter.Gen { + if networkRuleSet_STATUSGenerator != nil { + return networkRuleSet_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetworkRuleSet_STATUS(generators) + networkRuleSet_STATUSGenerator = gen.Struct(reflect.TypeOf(NetworkRuleSet_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForNetworkRuleSet_STATUS(generators) + AddRelatedPropertyGeneratorsForNetworkRuleSet_STATUS(generators) + networkRuleSet_STATUSGenerator = gen.Struct(reflect.TypeOf(NetworkRuleSet_STATUS{}), generators) + + return networkRuleSet_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForNetworkRuleSet_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForNetworkRuleSet_STATUS(gens map[string]gopter.Gen) { + gens["DefaultAction"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForNetworkRuleSet_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForNetworkRuleSet_STATUS(gens map[string]gopter.Gen) { + gens["IpRules"] = gen.SliceOf(IPRule_STATUSGenerator()) +} + +func Test_Policies_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 Policies via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPolicies, PoliciesGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPolicies runs a test to see if a specific instance of Policies round trips to JSON and back losslessly +func RunJSONSerializationTestForPolicies(subject Policies) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Policies + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Policies instances for property testing - lazily instantiated by PoliciesGenerator() +var policiesGenerator gopter.Gen + +// PoliciesGenerator returns a generator of Policies instances for property testing. +func PoliciesGenerator() gopter.Gen { + if policiesGenerator != nil { + return policiesGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForPolicies(generators) + policiesGenerator = gen.Struct(reflect.TypeOf(Policies{}), generators) + + return policiesGenerator +} + +// AddRelatedPropertyGeneratorsForPolicies is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForPolicies(gens map[string]gopter.Gen) { + gens["ExportPolicy"] = gen.PtrOf(ExportPolicyGenerator()) + gens["QuarantinePolicy"] = gen.PtrOf(QuarantinePolicyGenerator()) + gens["RetentionPolicy"] = gen.PtrOf(RetentionPolicyGenerator()) + gens["TrustPolicy"] = gen.PtrOf(TrustPolicyGenerator()) +} + +func Test_Policies_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 Policies_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPolicies_STATUS, Policies_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPolicies_STATUS runs a test to see if a specific instance of Policies_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForPolicies_STATUS(subject Policies_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Policies_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 Policies_STATUS instances for property testing - lazily instantiated by Policies_STATUSGenerator() +var policies_STATUSGenerator gopter.Gen + +// Policies_STATUSGenerator returns a generator of Policies_STATUS instances for property testing. +func Policies_STATUSGenerator() gopter.Gen { + if policies_STATUSGenerator != nil { + return policies_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForPolicies_STATUS(generators) + policies_STATUSGenerator = gen.Struct(reflect.TypeOf(Policies_STATUS{}), generators) + + return policies_STATUSGenerator +} + +// AddRelatedPropertyGeneratorsForPolicies_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForPolicies_STATUS(gens map[string]gopter.Gen) { + gens["ExportPolicy"] = gen.PtrOf(ExportPolicy_STATUSGenerator()) + gens["QuarantinePolicy"] = gen.PtrOf(QuarantinePolicy_STATUSGenerator()) + gens["RetentionPolicy"] = gen.PtrOf(RetentionPolicy_STATUSGenerator()) + gens["TrustPolicy"] = gen.PtrOf(TrustPolicy_STATUSGenerator()) +} + +func Test_PrivateEndpointConnection_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MinSuccessfulTests = 80 + parameters.MaxSize = 3 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip of PrivateEndpointConnection_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForPrivateEndpointConnection_STATUS, PrivateEndpointConnection_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForPrivateEndpointConnection_STATUS runs a test to see if a specific instance of PrivateEndpointConnection_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForPrivateEndpointConnection_STATUS(subject PrivateEndpointConnection_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual PrivateEndpointConnection_STATUS + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of PrivateEndpointConnection_STATUS instances for property testing - lazily instantiated by +// PrivateEndpointConnection_STATUSGenerator() +var privateEndpointConnection_STATUSGenerator gopter.Gen + +// PrivateEndpointConnection_STATUSGenerator returns a generator of PrivateEndpointConnection_STATUS instances for property testing. +func PrivateEndpointConnection_STATUSGenerator() gopter.Gen { + if privateEndpointConnection_STATUSGenerator != nil { + return privateEndpointConnection_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS(generators) + privateEndpointConnection_STATUSGenerator = gen.Struct(reflect.TypeOf(PrivateEndpointConnection_STATUS{}), generators) + + return privateEndpointConnection_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS(gens map[string]gopter.Gen) { + gens["Id"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_QuarantinePolicy_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 QuarantinePolicy via JSON returns original", + prop.ForAll(RunJSONSerializationTestForQuarantinePolicy, QuarantinePolicyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForQuarantinePolicy runs a test to see if a specific instance of QuarantinePolicy round trips to JSON and back losslessly +func RunJSONSerializationTestForQuarantinePolicy(subject QuarantinePolicy) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual QuarantinePolicy + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of QuarantinePolicy instances for property testing - lazily instantiated by QuarantinePolicyGenerator() +var quarantinePolicyGenerator gopter.Gen + +// QuarantinePolicyGenerator returns a generator of QuarantinePolicy instances for property testing. +func QuarantinePolicyGenerator() gopter.Gen { + if quarantinePolicyGenerator != nil { + return quarantinePolicyGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForQuarantinePolicy(generators) + quarantinePolicyGenerator = gen.Struct(reflect.TypeOf(QuarantinePolicy{}), generators) + + return quarantinePolicyGenerator +} + +// AddIndependentPropertyGeneratorsForQuarantinePolicy is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForQuarantinePolicy(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_QuarantinePolicy_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 QuarantinePolicy_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForQuarantinePolicy_STATUS, QuarantinePolicy_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForQuarantinePolicy_STATUS runs a test to see if a specific instance of QuarantinePolicy_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForQuarantinePolicy_STATUS(subject QuarantinePolicy_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual QuarantinePolicy_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 QuarantinePolicy_STATUS instances for property testing - lazily instantiated by +// QuarantinePolicy_STATUSGenerator() +var quarantinePolicy_STATUSGenerator gopter.Gen + +// QuarantinePolicy_STATUSGenerator returns a generator of QuarantinePolicy_STATUS instances for property testing. +func QuarantinePolicy_STATUSGenerator() gopter.Gen { + if quarantinePolicy_STATUSGenerator != nil { + return quarantinePolicy_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForQuarantinePolicy_STATUS(generators) + quarantinePolicy_STATUSGenerator = gen.Struct(reflect.TypeOf(QuarantinePolicy_STATUS{}), generators) + + return quarantinePolicy_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForQuarantinePolicy_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForQuarantinePolicy_STATUS(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_Registry_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 Registry via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRegistry, RegistryGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRegistry runs a test to see if a specific instance of Registry round trips to JSON and back losslessly +func RunJSONSerializationTestForRegistry(subject Registry) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Registry + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of Registry instances for property testing - lazily instantiated by RegistryGenerator() +var registryGenerator gopter.Gen + +// RegistryGenerator returns a generator of Registry instances for property testing. +func RegistryGenerator() gopter.Gen { + if registryGenerator != nil { + return registryGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForRegistry(generators) + registryGenerator = gen.Struct(reflect.TypeOf(Registry{}), generators) + + return registryGenerator +} + +// AddRelatedPropertyGeneratorsForRegistry is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForRegistry(gens map[string]gopter.Gen) { + gens["Spec"] = Registry_SpecGenerator() + gens["Status"] = Registry_STATUSGenerator() +} + +func Test_RegistryOperatorSpec_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 RegistryOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRegistryOperatorSpec, RegistryOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRegistryOperatorSpec runs a test to see if a specific instance of RegistryOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForRegistryOperatorSpec(subject RegistryOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual RegistryOperatorSpec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of RegistryOperatorSpec instances for property testing - lazily instantiated by +// RegistryOperatorSpecGenerator() +var registryOperatorSpecGenerator gopter.Gen + +// RegistryOperatorSpecGenerator returns a generator of RegistryOperatorSpec instances for property testing. +func RegistryOperatorSpecGenerator() gopter.Gen { + if registryOperatorSpecGenerator != nil { + return registryOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + registryOperatorSpecGenerator = gen.Struct(reflect.TypeOf(RegistryOperatorSpec{}), generators) + + return registryOperatorSpecGenerator +} + +func Test_Registry_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 Registry_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRegistry_STATUS, Registry_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRegistry_STATUS runs a test to see if a specific instance of Registry_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForRegistry_STATUS(subject Registry_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Registry_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 Registry_STATUS instances for property testing - lazily instantiated by Registry_STATUSGenerator() +var registry_STATUSGenerator gopter.Gen + +// Registry_STATUSGenerator returns a generator of Registry_STATUS instances for property testing. +// We first initialize registry_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 Registry_STATUSGenerator() gopter.Gen { + if registry_STATUSGenerator != nil { + return registry_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistry_STATUS(generators) + registry_STATUSGenerator = gen.Struct(reflect.TypeOf(Registry_STATUS{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistry_STATUS(generators) + AddRelatedPropertyGeneratorsForRegistry_STATUS(generators) + registry_STATUSGenerator = gen.Struct(reflect.TypeOf(Registry_STATUS{}), generators) + + return registry_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForRegistry_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForRegistry_STATUS(gens map[string]gopter.Gen) { + gens["AdminUserEnabled"] = gen.PtrOf(gen.Bool()) + gens["CreationDate"] = gen.PtrOf(gen.AlphaString()) + gens["DataEndpointEnabled"] = gen.PtrOf(gen.Bool()) + gens["DataEndpointHostNames"] = gen.SliceOf(gen.AlphaString()) + gens["Id"] = gen.PtrOf(gen.AlphaString()) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["LoginServer"] = gen.PtrOf(gen.AlphaString()) + gens["Name"] = gen.PtrOf(gen.AlphaString()) + gens["NetworkRuleBypassOptions"] = gen.PtrOf(gen.AlphaString()) + gens["ProvisioningState"] = gen.PtrOf(gen.AlphaString()) + gens["PublicNetworkAccess"] = gen.PtrOf(gen.AlphaString()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) + gens["ZoneRedundancy"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForRegistry_STATUS is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForRegistry_STATUS(gens map[string]gopter.Gen) { + gens["Encryption"] = gen.PtrOf(EncryptionProperty_STATUSGenerator()) + gens["Identity"] = gen.PtrOf(IdentityProperties_STATUSGenerator()) + gens["NetworkRuleSet"] = gen.PtrOf(NetworkRuleSet_STATUSGenerator()) + gens["Policies"] = gen.PtrOf(Policies_STATUSGenerator()) + gens["PrivateEndpointConnections"] = gen.SliceOf(PrivateEndpointConnection_STATUSGenerator()) + gens["Sku"] = gen.PtrOf(Sku_STATUSGenerator()) + gens["Status"] = gen.PtrOf(Status_STATUSGenerator()) + gens["SystemData"] = gen.PtrOf(SystemData_STATUSGenerator()) +} + +func Test_Registry_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 Registry_Spec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRegistry_Spec, Registry_SpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRegistry_Spec runs a test to see if a specific instance of Registry_Spec round trips to JSON and back losslessly +func RunJSONSerializationTestForRegistry_Spec(subject Registry_Spec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Registry_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 Registry_Spec instances for property testing - lazily instantiated by Registry_SpecGenerator() +var registry_SpecGenerator gopter.Gen + +// Registry_SpecGenerator returns a generator of Registry_Spec instances for property testing. +// We first initialize registry_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 Registry_SpecGenerator() gopter.Gen { + if registry_SpecGenerator != nil { + return registry_SpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistry_Spec(generators) + registry_SpecGenerator = gen.Struct(reflect.TypeOf(Registry_Spec{}), generators) + + // The above call to gen.Struct() captures the map, so create a new one + generators = make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRegistry_Spec(generators) + AddRelatedPropertyGeneratorsForRegistry_Spec(generators) + registry_SpecGenerator = gen.Struct(reflect.TypeOf(Registry_Spec{}), generators) + + return registry_SpecGenerator +} + +// AddIndependentPropertyGeneratorsForRegistry_Spec is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForRegistry_Spec(gens map[string]gopter.Gen) { + gens["AdminUserEnabled"] = gen.PtrOf(gen.Bool()) + gens["AzureName"] = gen.AlphaString() + gens["DataEndpointEnabled"] = gen.PtrOf(gen.Bool()) + gens["Location"] = gen.PtrOf(gen.AlphaString()) + gens["NetworkRuleBypassOptions"] = gen.PtrOf(gen.AlphaString()) + gens["OriginalVersion"] = gen.AlphaString() + gens["PublicNetworkAccess"] = gen.PtrOf(gen.AlphaString()) + gens["Tags"] = gen.MapOf( + gen.AlphaString(), + gen.AlphaString()) + gens["ZoneRedundancy"] = gen.PtrOf(gen.AlphaString()) +} + +// AddRelatedPropertyGeneratorsForRegistry_Spec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForRegistry_Spec(gens map[string]gopter.Gen) { + gens["Encryption"] = gen.PtrOf(EncryptionPropertyGenerator()) + gens["Identity"] = gen.PtrOf(IdentityPropertiesGenerator()) + gens["NetworkRuleSet"] = gen.PtrOf(NetworkRuleSetGenerator()) + gens["OperatorSpec"] = gen.PtrOf(RegistryOperatorSpecGenerator()) + gens["Policies"] = gen.PtrOf(PoliciesGenerator()) + gens["Sku"] = gen.PtrOf(SkuGenerator()) +} + +func Test_RetentionPolicy_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 RetentionPolicy via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRetentionPolicy, RetentionPolicyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRetentionPolicy runs a test to see if a specific instance of RetentionPolicy round trips to JSON and back losslessly +func RunJSONSerializationTestForRetentionPolicy(subject RetentionPolicy) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual RetentionPolicy + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of RetentionPolicy instances for property testing - lazily instantiated by RetentionPolicyGenerator() +var retentionPolicyGenerator gopter.Gen + +// RetentionPolicyGenerator returns a generator of RetentionPolicy instances for property testing. +func RetentionPolicyGenerator() gopter.Gen { + if retentionPolicyGenerator != nil { + return retentionPolicyGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRetentionPolicy(generators) + retentionPolicyGenerator = gen.Struct(reflect.TypeOf(RetentionPolicy{}), generators) + + return retentionPolicyGenerator +} + +// AddIndependentPropertyGeneratorsForRetentionPolicy is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForRetentionPolicy(gens map[string]gopter.Gen) { + gens["Days"] = gen.PtrOf(gen.Int()) + gens["Status"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_RetentionPolicy_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 RetentionPolicy_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForRetentionPolicy_STATUS, RetentionPolicy_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForRetentionPolicy_STATUS runs a test to see if a specific instance of RetentionPolicy_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForRetentionPolicy_STATUS(subject RetentionPolicy_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual RetentionPolicy_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 RetentionPolicy_STATUS instances for property testing - lazily instantiated by +// RetentionPolicy_STATUSGenerator() +var retentionPolicy_STATUSGenerator gopter.Gen + +// RetentionPolicy_STATUSGenerator returns a generator of RetentionPolicy_STATUS instances for property testing. +func RetentionPolicy_STATUSGenerator() gopter.Gen { + if retentionPolicy_STATUSGenerator != nil { + return retentionPolicy_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForRetentionPolicy_STATUS(generators) + retentionPolicy_STATUSGenerator = gen.Struct(reflect.TypeOf(RetentionPolicy_STATUS{}), generators) + + return retentionPolicy_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForRetentionPolicy_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForRetentionPolicy_STATUS(gens map[string]gopter.Gen) { + gens["Days"] = gen.PtrOf(gen.Int()) + gens["LastUpdatedTime"] = gen.PtrOf(gen.AlphaString()) + gens["Status"] = gen.PtrOf(gen.AlphaString()) +} + +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()) + gens["Tier"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_Status_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 Status_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForStatus_STATUS, Status_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForStatus_STATUS runs a test to see if a specific instance of Status_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForStatus_STATUS(subject Status_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual Status_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 Status_STATUS instances for property testing - lazily instantiated by Status_STATUSGenerator() +var status_STATUSGenerator gopter.Gen + +// Status_STATUSGenerator returns a generator of Status_STATUS instances for property testing. +func Status_STATUSGenerator() gopter.Gen { + if status_STATUSGenerator != nil { + return status_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForStatus_STATUS(generators) + status_STATUSGenerator = gen.Struct(reflect.TypeOf(Status_STATUS{}), generators) + + return status_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForStatus_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForStatus_STATUS(gens map[string]gopter.Gen) { + gens["DisplayStatus"] = gen.PtrOf(gen.AlphaString()) + gens["Message"] = gen.PtrOf(gen.AlphaString()) + gens["Timestamp"] = 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_TrustPolicy_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 TrustPolicy via JSON returns original", + prop.ForAll(RunJSONSerializationTestForTrustPolicy, TrustPolicyGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForTrustPolicy runs a test to see if a specific instance of TrustPolicy round trips to JSON and back losslessly +func RunJSONSerializationTestForTrustPolicy(subject TrustPolicy) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual TrustPolicy + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of TrustPolicy instances for property testing - lazily instantiated by TrustPolicyGenerator() +var trustPolicyGenerator gopter.Gen + +// TrustPolicyGenerator returns a generator of TrustPolicy instances for property testing. +func TrustPolicyGenerator() gopter.Gen { + if trustPolicyGenerator != nil { + return trustPolicyGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForTrustPolicy(generators) + trustPolicyGenerator = gen.Struct(reflect.TypeOf(TrustPolicy{}), generators) + + return trustPolicyGenerator +} + +// AddIndependentPropertyGeneratorsForTrustPolicy is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForTrustPolicy(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = gen.PtrOf(gen.AlphaString()) +} + +func Test_TrustPolicy_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 TrustPolicy_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForTrustPolicy_STATUS, TrustPolicy_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForTrustPolicy_STATUS runs a test to see if a specific instance of TrustPolicy_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForTrustPolicy_STATUS(subject TrustPolicy_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual TrustPolicy_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 TrustPolicy_STATUS instances for property testing - lazily instantiated by TrustPolicy_STATUSGenerator() +var trustPolicy_STATUSGenerator gopter.Gen + +// TrustPolicy_STATUSGenerator returns a generator of TrustPolicy_STATUS instances for property testing. +func TrustPolicy_STATUSGenerator() gopter.Gen { + if trustPolicy_STATUSGenerator != nil { + return trustPolicy_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForTrustPolicy_STATUS(generators) + trustPolicy_STATUSGenerator = gen.Struct(reflect.TypeOf(TrustPolicy_STATUS{}), generators) + + return trustPolicy_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForTrustPolicy_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForTrustPolicy_STATUS(gens map[string]gopter.Gen) { + gens["Status"] = gen.PtrOf(gen.AlphaString()) + gens["Type"] = 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_UserIdentityProperties_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 UserIdentityProperties_STATUS via JSON returns original", + prop.ForAll(RunJSONSerializationTestForUserIdentityProperties_STATUS, UserIdentityProperties_STATUSGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForUserIdentityProperties_STATUS runs a test to see if a specific instance of UserIdentityProperties_STATUS round trips to JSON and back losslessly +func RunJSONSerializationTestForUserIdentityProperties_STATUS(subject UserIdentityProperties_STATUS) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual UserIdentityProperties_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 UserIdentityProperties_STATUS instances for property testing - lazily instantiated by +// UserIdentityProperties_STATUSGenerator() +var userIdentityProperties_STATUSGenerator gopter.Gen + +// UserIdentityProperties_STATUSGenerator returns a generator of UserIdentityProperties_STATUS instances for property testing. +func UserIdentityProperties_STATUSGenerator() gopter.Gen { + if userIdentityProperties_STATUSGenerator != nil { + return userIdentityProperties_STATUSGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForUserIdentityProperties_STATUS(generators) + userIdentityProperties_STATUSGenerator = gen.Struct(reflect.TypeOf(UserIdentityProperties_STATUS{}), generators) + + return userIdentityProperties_STATUSGenerator +} + +// AddIndependentPropertyGeneratorsForUserIdentityProperties_STATUS is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForUserIdentityProperties_STATUS(gens map[string]gopter.Gen) { + gens["ClientId"] = gen.PtrOf(gen.AlphaString()) + gens["PrincipalId"] = gen.PtrOf(gen.AlphaString()) +} diff --git a/v2/api/containerregistry/v1api20230701/storage/structure.txt b/v2/api/containerregistry/v1api20230701/storage/structure.txt new file mode 100644 index 00000000000..68df9eb60ed --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/storage/structure.txt @@ -0,0 +1,182 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20230701/storage +-------------------------------------------------------------------------------------- +APIVersion: Enum (1 value) +└── "2023-07-01" +Registry: Resource +├── Owner: resources/v1apiv20191001.ResourceGroup +├── Spec: Object (17 properties) +│ ├── AdminUserEnabled: *bool +│ ├── AzureName: string +│ ├── DataEndpointEnabled: *bool +│ ├── Encryption: *Object (3 properties) +│ │ ├── KeyVaultProperties: *Object (4 properties) +│ │ │ ├── Identity: *string +│ │ │ ├── IdentityFromConfig: *genruntime.ConfigMapReference +│ │ │ ├── KeyIdentifier: *string +│ │ │ └── PropertyBag: genruntime.PropertyBag +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── Status: *string +│ ├── Identity: *Object (3 properties) +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ ├── Type: *string +│ │ └── UserAssignedIdentities: Object (2 properties)[] +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── Reference: genruntime.ResourceReference +│ ├── Location: *string +│ ├── NetworkRuleBypassOptions: *string +│ ├── NetworkRuleSet: *Object (3 properties) +│ │ ├── DefaultAction: *string +│ │ ├── IpRules: Object (3 properties)[] +│ │ │ ├── Action: *string +│ │ │ ├── PropertyBag: genruntime.PropertyBag +│ │ │ └── Value: *string +│ │ └── PropertyBag: genruntime.PropertyBag +│ ├── OperatorSpec: *Object (3 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ ├── OriginalVersion: string +│ ├── Owner: *genruntime.KnownResourceReference +│ ├── Policies: *Object (5 properties) +│ │ ├── ExportPolicy: *Object (2 properties) +│ │ │ ├── PropertyBag: genruntime.PropertyBag +│ │ │ └── Status: *string +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ ├── QuarantinePolicy: *Object (2 properties) +│ │ │ ├── PropertyBag: genruntime.PropertyBag +│ │ │ └── Status: *string +│ │ ├── RetentionPolicy: *Object (3 properties) +│ │ │ ├── Days: *int +│ │ │ ├── PropertyBag: genruntime.PropertyBag +│ │ │ └── Status: *string +│ │ └── TrustPolicy: *Object (3 properties) +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ ├── Status: *string +│ │ └── Type: *string +│ ├── PropertyBag: genruntime.PropertyBag +│ ├── PublicNetworkAccess: *string +│ ├── Sku: *Object (2 properties) +│ │ ├── Name: *string +│ │ └── PropertyBag: genruntime.PropertyBag +│ ├── Tags: map[string]string +│ └── ZoneRedundancy: *string +└── Status: Object (24 properties) + ├── AdminUserEnabled: *bool + ├── Conditions: conditions.Condition[] + ├── CreationDate: *string + ├── DataEndpointEnabled: *bool + ├── DataEndpointHostNames: string[] + ├── Encryption: *Object (3 properties) + │ ├── KeyVaultProperties: *Object (6 properties) + │ │ ├── Identity: *string + │ │ ├── KeyIdentifier: *string + │ │ ├── KeyRotationEnabled: *bool + │ │ ├── LastKeyRotationTimestamp: *string + │ │ ├── PropertyBag: genruntime.PropertyBag + │ │ └── VersionedKeyIdentifier: *string + │ ├── PropertyBag: genruntime.PropertyBag + │ └── Status: *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 + ├── LoginServer: *string + ├── Name: *string + ├── NetworkRuleBypassOptions: *string + ├── NetworkRuleSet: *Object (3 properties) + │ ├── DefaultAction: *string + │ ├── IpRules: Object (3 properties)[] + │ │ ├── Action: *string + │ │ ├── PropertyBag: genruntime.PropertyBag + │ │ └── Value: *string + │ └── PropertyBag: genruntime.PropertyBag + ├── Policies: *Object (5 properties) + │ ├── ExportPolicy: *Object (2 properties) + │ │ ├── PropertyBag: genruntime.PropertyBag + │ │ └── Status: *string + │ ├── PropertyBag: genruntime.PropertyBag + │ ├── QuarantinePolicy: *Object (2 properties) + │ │ ├── PropertyBag: genruntime.PropertyBag + │ │ └── Status: *string + │ ├── RetentionPolicy: *Object (4 properties) + │ │ ├── Days: *int + │ │ ├── LastUpdatedTime: *string + │ │ ├── PropertyBag: genruntime.PropertyBag + │ │ └── Status: *string + │ └── TrustPolicy: *Object (3 properties) + │ ├── PropertyBag: genruntime.PropertyBag + │ ├── Status: *string + │ └── Type: *string + ├── PrivateEndpointConnections: Object (2 properties)[] + │ ├── Id: *string + │ └── PropertyBag: genruntime.PropertyBag + ├── PropertyBag: genruntime.PropertyBag + ├── ProvisioningState: *string + ├── PublicNetworkAccess: *string + ├── Sku: *Object (3 properties) + │ ├── Name: *string + │ ├── PropertyBag: genruntime.PropertyBag + │ └── Tier: *string + ├── Status: *Object (4 properties) + │ ├── DisplayStatus: *string + │ ├── Message: *string + │ ├── PropertyBag: genruntime.PropertyBag + │ └── Timestamp: *string + ├── SystemData: *Object (7 properties) + │ ├── CreatedAt: *string + │ ├── CreatedBy: *string + │ ├── CreatedByType: *string + │ ├── LastModifiedAt: *string + │ ├── LastModifiedBy: *string + │ ├── LastModifiedByType: *string + │ └── PropertyBag: genruntime.PropertyBag + ├── Tags: map[string]string + ├── Type: *string + └── ZoneRedundancy: *string +RegistryReplication: Resource +├── Owner: containerregistry/v1api20230701.Registry +├── Spec: Object (9 properties) +│ ├── AzureName: string +│ ├── Location: *string +│ ├── OperatorSpec: *Object (3 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ ├── PropertyBag: genruntime.PropertyBag +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ ├── OriginalVersion: string +│ ├── Owner: *genruntime.KnownResourceReference +│ ├── PropertyBag: genruntime.PropertyBag +│ ├── RegionEndpointEnabled: *bool +│ ├── Tags: map[string]string +│ └── ZoneRedundancy: *string +└── Status: Object (12 properties) + ├── Conditions: conditions.Condition[] + ├── Id: *string + ├── Location: *string + ├── Name: *string + ├── PropertyBag: genruntime.PropertyBag + ├── ProvisioningState: *string + ├── RegionEndpointEnabled: *bool + ├── Status: *Object (4 properties) + │ ├── DisplayStatus: *string + │ ├── Message: *string + │ ├── PropertyBag: genruntime.PropertyBag + │ └── Timestamp: *string + ├── SystemData: *Object (7 properties) + │ ├── CreatedAt: *string + │ ├── CreatedBy: *string + │ ├── CreatedByType: *string + │ ├── LastModifiedAt: *string + │ ├── LastModifiedBy: *string + │ ├── LastModifiedByType: *string + │ └── PropertyBag: genruntime.PropertyBag + ├── Tags: map[string]string + ├── Type: *string + └── ZoneRedundancy: *string diff --git a/v2/api/containerregistry/v1api20230701/storage/zz_generated.deepcopy.go b/v2/api/containerregistry/v1api20230701/storage/zz_generated.deepcopy.go new file mode 100644 index 00000000000..75a610d0d59 --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/storage/zz_generated.deepcopy.go @@ -0,0 +1,1508 @@ +//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 *EncryptionProperty) DeepCopyInto(out *EncryptionProperty) { + *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 + } + } + 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 EncryptionProperty. +func (in *EncryptionProperty) DeepCopy() *EncryptionProperty { + if in == nil { + return nil + } + out := new(EncryptionProperty) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EncryptionProperty_STATUS) DeepCopyInto(out *EncryptionProperty_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 + } + } + 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 EncryptionProperty_STATUS. +func (in *EncryptionProperty_STATUS) DeepCopy() *EncryptionProperty_STATUS { + if in == nil { + return nil + } + out := new(EncryptionProperty_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 *ExportPolicy) DeepCopyInto(out *ExportPolicy) { + *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 ExportPolicy. +func (in *ExportPolicy) DeepCopy() *ExportPolicy { + if in == nil { + return nil + } + out := new(ExportPolicy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExportPolicy_STATUS) DeepCopyInto(out *ExportPolicy_STATUS) { + *out = *in + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.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 ExportPolicy_STATUS. +func (in *ExportPolicy_STATUS) DeepCopy() *ExportPolicy_STATUS { + if in == nil { + return nil + } + out := new(ExportPolicy_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 *IPRule) DeepCopyInto(out *IPRule) { + *out = *in + if in.Action != nil { + in, out := &in.Action, &out.Action + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPRule. +func (in *IPRule) DeepCopy() *IPRule { + if in == nil { + return nil + } + out := new(IPRule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPRule_STATUS) DeepCopyInto(out *IPRule_STATUS) { + *out = *in + if in.Action != nil { + in, out := &in.Action, &out.Action + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPRule_STATUS. +func (in *IPRule_STATUS) DeepCopy() *IPRule_STATUS { + if in == nil { + return nil + } + out := new(IPRule_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IdentityProperties) DeepCopyInto(out *IdentityProperties) { + *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 IdentityProperties. +func (in *IdentityProperties) DeepCopy() *IdentityProperties { + if in == nil { + return nil + } + out := new(IdentityProperties) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IdentityProperties_STATUS) DeepCopyInto(out *IdentityProperties_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]UserIdentityProperties_STATUS, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IdentityProperties_STATUS. +func (in *IdentityProperties_STATUS) DeepCopy() *IdentityProperties_STATUS { + if in == nil { + return nil + } + out := new(IdentityProperties_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 *KeyVaultProperties) DeepCopyInto(out *KeyVaultProperties) { + *out = *in + if in.Identity != nil { + in, out := &in.Identity, &out.Identity + *out = new(string) + **out = **in + } + if in.IdentityFromConfig != nil { + in, out := &in.IdentityFromConfig, &out.IdentityFromConfig + *out = new(genruntime.ConfigMapReference) + **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.Identity != nil { + in, out := &in.Identity, &out.Identity + *out = new(string) + **out = **in + } + if in.KeyIdentifier != nil { + in, out := &in.KeyIdentifier, &out.KeyIdentifier + *out = new(string) + **out = **in + } + if in.KeyRotationEnabled != nil { + in, out := &in.KeyRotationEnabled, &out.KeyRotationEnabled + *out = new(bool) + **out = **in + } + if in.LastKeyRotationTimestamp != nil { + in, out := &in.LastKeyRotationTimestamp, &out.LastKeyRotationTimestamp + *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.VersionedKeyIdentifier != nil { + in, out := &in.VersionedKeyIdentifier, &out.VersionedKeyIdentifier + *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 *NetworkRuleSet) DeepCopyInto(out *NetworkRuleSet) { + *out = *in + if in.DefaultAction != nil { + in, out := &in.DefaultAction, &out.DefaultAction + *out = new(string) + **out = **in + } + if in.IpRules != nil { + in, out := &in.IpRules, &out.IpRules + *out = make([]IPRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.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 NetworkRuleSet. +func (in *NetworkRuleSet) DeepCopy() *NetworkRuleSet { + if in == nil { + return nil + } + out := new(NetworkRuleSet) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkRuleSet_STATUS) DeepCopyInto(out *NetworkRuleSet_STATUS) { + *out = *in + if in.DefaultAction != nil { + in, out := &in.DefaultAction, &out.DefaultAction + *out = new(string) + **out = **in + } + if in.IpRules != nil { + in, out := &in.IpRules, &out.IpRules + *out = make([]IPRule_STATUS, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.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 NetworkRuleSet_STATUS. +func (in *NetworkRuleSet_STATUS) DeepCopy() *NetworkRuleSet_STATUS { + if in == nil { + return nil + } + out := new(NetworkRuleSet_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 *Policies) DeepCopyInto(out *Policies) { + *out = *in + if in.ExportPolicy != nil { + in, out := &in.ExportPolicy, &out.ExportPolicy + *out = new(ExportPolicy) + (*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.QuarantinePolicy != nil { + in, out := &in.QuarantinePolicy, &out.QuarantinePolicy + *out = new(QuarantinePolicy) + (*in).DeepCopyInto(*out) + } + if in.RetentionPolicy != nil { + in, out := &in.RetentionPolicy, &out.RetentionPolicy + *out = new(RetentionPolicy) + (*in).DeepCopyInto(*out) + } + if in.TrustPolicy != nil { + in, out := &in.TrustPolicy, &out.TrustPolicy + *out = new(TrustPolicy) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Policies. +func (in *Policies) DeepCopy() *Policies { + if in == nil { + return nil + } + out := new(Policies) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Policies_STATUS) DeepCopyInto(out *Policies_STATUS) { + *out = *in + if in.ExportPolicy != nil { + in, out := &in.ExportPolicy, &out.ExportPolicy + *out = new(ExportPolicy_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.QuarantinePolicy != nil { + in, out := &in.QuarantinePolicy, &out.QuarantinePolicy + *out = new(QuarantinePolicy_STATUS) + (*in).DeepCopyInto(*out) + } + if in.RetentionPolicy != nil { + in, out := &in.RetentionPolicy, &out.RetentionPolicy + *out = new(RetentionPolicy_STATUS) + (*in).DeepCopyInto(*out) + } + if in.TrustPolicy != nil { + in, out := &in.TrustPolicy, &out.TrustPolicy + *out = new(TrustPolicy_STATUS) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Policies_STATUS. +func (in *Policies_STATUS) DeepCopy() *Policies_STATUS { + if in == nil { + return nil + } + out := new(Policies_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateEndpointConnection_STATUS) DeepCopyInto(out *PrivateEndpointConnection_STATUS) { + *out = *in + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateEndpointConnection_STATUS. +func (in *PrivateEndpointConnection_STATUS) DeepCopy() *PrivateEndpointConnection_STATUS { + if in == nil { + return nil + } + out := new(PrivateEndpointConnection_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *QuarantinePolicy) DeepCopyInto(out *QuarantinePolicy) { + *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 QuarantinePolicy. +func (in *QuarantinePolicy) DeepCopy() *QuarantinePolicy { + if in == nil { + return nil + } + out := new(QuarantinePolicy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *QuarantinePolicy_STATUS) DeepCopyInto(out *QuarantinePolicy_STATUS) { + *out = *in + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.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 QuarantinePolicy_STATUS. +func (in *QuarantinePolicy_STATUS) DeepCopy() *QuarantinePolicy_STATUS { + if in == nil { + return nil + } + out := new(QuarantinePolicy_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 *Registry) DeepCopyInto(out *Registry) { + *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 Registry. +func (in *Registry) DeepCopy() *Registry { + if in == nil { + return nil + } + out := new(Registry) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Registry) 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 *RegistryList) DeepCopyInto(out *RegistryList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Registry, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegistryList. +func (in *RegistryList) DeepCopy() *RegistryList { + if in == nil { + return nil + } + out := new(RegistryList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RegistryList) 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 *RegistryOperatorSpec) DeepCopyInto(out *RegistryOperatorSpec) { + *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 RegistryOperatorSpec. +func (in *RegistryOperatorSpec) DeepCopy() *RegistryOperatorSpec { + if in == nil { + return nil + } + out := new(RegistryOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RegistryReplication) DeepCopyInto(out *RegistryReplication) { + *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 RegistryReplication. +func (in *RegistryReplication) DeepCopy() *RegistryReplication { + if in == nil { + return nil + } + out := new(RegistryReplication) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RegistryReplication) 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 *RegistryReplicationList) DeepCopyInto(out *RegistryReplicationList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]RegistryReplication, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegistryReplicationList. +func (in *RegistryReplicationList) DeepCopy() *RegistryReplicationList { + if in == nil { + return nil + } + out := new(RegistryReplicationList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RegistryReplicationList) 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 *RegistryReplicationOperatorSpec) DeepCopyInto(out *RegistryReplicationOperatorSpec) { + *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 RegistryReplicationOperatorSpec. +func (in *RegistryReplicationOperatorSpec) DeepCopy() *RegistryReplicationOperatorSpec { + if in == nil { + return nil + } + out := new(RegistryReplicationOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RegistryReplication_STATUS) DeepCopyInto(out *RegistryReplication_STATUS) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]conditions.Condition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.ProvisioningState != nil { + in, out := &in.ProvisioningState, &out.ProvisioningState + *out = new(string) + **out = **in + } + if in.RegionEndpointEnabled != nil { + in, out := &in.RegionEndpointEnabled, &out.RegionEndpointEnabled + *out = new(bool) + **out = **in + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(Status_STATUS) + (*in).DeepCopyInto(*out) + } + if in.SystemData != nil { + in, out := &in.SystemData, &out.SystemData + *out = new(SystemData_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.ZoneRedundancy != nil { + in, out := &in.ZoneRedundancy, &out.ZoneRedundancy + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegistryReplication_STATUS. +func (in *RegistryReplication_STATUS) DeepCopy() *RegistryReplication_STATUS { + if in == nil { + return nil + } + out := new(RegistryReplication_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 *RegistryReplication_Spec) DeepCopyInto(out *RegistryReplication_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(RegistryReplicationOperatorSpec) + (*in).DeepCopyInto(*out) + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(genruntime.KnownResourceReference) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.RegionEndpointEnabled != nil { + in, out := &in.RegionEndpointEnabled, &out.RegionEndpointEnabled + *out = new(bool) + **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.ZoneRedundancy != nil { + in, out := &in.ZoneRedundancy, &out.ZoneRedundancy + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegistryReplication_Spec. +func (in *RegistryReplication_Spec) DeepCopy() *RegistryReplication_Spec { + if in == nil { + return nil + } + out := new(RegistryReplication_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 *Registry_STATUS) DeepCopyInto(out *Registry_STATUS) { + *out = *in + if in.AdminUserEnabled != nil { + in, out := &in.AdminUserEnabled, &out.AdminUserEnabled + *out = new(bool) + **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.CreationDate != nil { + in, out := &in.CreationDate, &out.CreationDate + *out = new(string) + **out = **in + } + if in.DataEndpointEnabled != nil { + in, out := &in.DataEndpointEnabled, &out.DataEndpointEnabled + *out = new(bool) + **out = **in + } + if in.DataEndpointHostNames != nil { + in, out := &in.DataEndpointHostNames, &out.DataEndpointHostNames + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Encryption != nil { + in, out := &in.Encryption, &out.Encryption + *out = new(EncryptionProperty_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.Identity != nil { + in, out := &in.Identity, &out.Identity + *out = new(IdentityProperties_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.LoginServer != nil { + in, out := &in.LoginServer, &out.LoginServer + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.NetworkRuleBypassOptions != nil { + in, out := &in.NetworkRuleBypassOptions, &out.NetworkRuleBypassOptions + *out = new(string) + **out = **in + } + if in.NetworkRuleSet != nil { + in, out := &in.NetworkRuleSet, &out.NetworkRuleSet + *out = new(NetworkRuleSet_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Policies != nil { + in, out := &in.Policies, &out.Policies + *out = new(Policies_STATUS) + (*in).DeepCopyInto(*out) + } + if in.PrivateEndpointConnections != nil { + in, out := &in.PrivateEndpointConnections, &out.PrivateEndpointConnections + *out = make([]PrivateEndpointConnection_STATUS, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.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.Status != nil { + in, out := &in.Status, &out.Status + *out = new(Status_STATUS) + (*in).DeepCopyInto(*out) + } + if in.SystemData != nil { + in, out := &in.SystemData, &out.SystemData + *out = new(SystemData_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.ZoneRedundancy != nil { + in, out := &in.ZoneRedundancy, &out.ZoneRedundancy + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Registry_STATUS. +func (in *Registry_STATUS) DeepCopy() *Registry_STATUS { + if in == nil { + return nil + } + out := new(Registry_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 *Registry_Spec) DeepCopyInto(out *Registry_Spec) { + *out = *in + if in.AdminUserEnabled != nil { + in, out := &in.AdminUserEnabled, &out.AdminUserEnabled + *out = new(bool) + **out = **in + } + if in.DataEndpointEnabled != nil { + in, out := &in.DataEndpointEnabled, &out.DataEndpointEnabled + *out = new(bool) + **out = **in + } + if in.Encryption != nil { + in, out := &in.Encryption, &out.Encryption + *out = new(EncryptionProperty) + (*in).DeepCopyInto(*out) + } + if in.Identity != nil { + in, out := &in.Identity, &out.Identity + *out = new(IdentityProperties) + (*in).DeepCopyInto(*out) + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.NetworkRuleBypassOptions != nil { + in, out := &in.NetworkRuleBypassOptions, &out.NetworkRuleBypassOptions + *out = new(string) + **out = **in + } + if in.NetworkRuleSet != nil { + in, out := &in.NetworkRuleSet, &out.NetworkRuleSet + *out = new(NetworkRuleSet) + (*in).DeepCopyInto(*out) + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(RegistryOperatorSpec) + (*in).DeepCopyInto(*out) + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(genruntime.KnownResourceReference) + **out = **in + } + if in.Policies != nil { + in, out := &in.Policies, &out.Policies + *out = new(Policies) + (*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.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.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.ZoneRedundancy != nil { + in, out := &in.ZoneRedundancy, &out.ZoneRedundancy + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Registry_Spec. +func (in *Registry_Spec) DeepCopy() *Registry_Spec { + if in == nil { + return nil + } + out := new(Registry_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 *RetentionPolicy) DeepCopyInto(out *RetentionPolicy) { + *out = *in + if in.Days != nil { + in, out := &in.Days, &out.Days + *out = new(int) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.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 RetentionPolicy. +func (in *RetentionPolicy) DeepCopy() *RetentionPolicy { + if in == nil { + return nil + } + out := new(RetentionPolicy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RetentionPolicy_STATUS) DeepCopyInto(out *RetentionPolicy_STATUS) { + *out = *in + if in.Days != nil { + in, out := &in.Days, &out.Days + *out = new(int) + **out = **in + } + if in.LastUpdatedTime != nil { + in, out := &in.LastUpdatedTime, &out.LastUpdatedTime + *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 RetentionPolicy_STATUS. +func (in *RetentionPolicy_STATUS) DeepCopy() *RetentionPolicy_STATUS { + if in == nil { + return nil + } + out := new(RetentionPolicy_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 + } + } + if in.Tier != nil { + in, out := &in.Tier, &out.Tier + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new 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 *Status_STATUS) DeepCopyInto(out *Status_STATUS) { + *out = *in + if in.DisplayStatus != nil { + in, out := &in.DisplayStatus, &out.DisplayStatus + *out = new(string) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *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.Timestamp != nil { + in, out := &in.Timestamp, &out.Timestamp + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Status_STATUS. +func (in *Status_STATUS) DeepCopy() *Status_STATUS { + if in == nil { + return nil + } + out := new(Status_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SystemData_STATUS) DeepCopyInto(out *SystemData_STATUS) { + *out = *in + if in.CreatedAt != nil { + in, out := &in.CreatedAt, &out.CreatedAt + *out = new(string) + **out = **in + } + if in.CreatedBy != nil { + in, out := &in.CreatedBy, &out.CreatedBy + *out = new(string) + **out = **in + } + if in.CreatedByType != nil { + in, out := &in.CreatedByType, &out.CreatedByType + *out = new(string) + **out = **in + } + if in.LastModifiedAt != nil { + in, out := &in.LastModifiedAt, &out.LastModifiedAt + *out = new(string) + **out = **in + } + if in.LastModifiedBy != nil { + in, out := &in.LastModifiedBy, &out.LastModifiedBy + *out = new(string) + **out = **in + } + if in.LastModifiedByType != nil { + in, out := &in.LastModifiedByType, &out.LastModifiedByType + *out = new(string) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SystemData_STATUS. +func (in *SystemData_STATUS) DeepCopy() *SystemData_STATUS { + if in == nil { + return nil + } + out := new(SystemData_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TrustPolicy) DeepCopyInto(out *TrustPolicy) { + *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 + } + 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 TrustPolicy. +func (in *TrustPolicy) DeepCopy() *TrustPolicy { + if in == nil { + return nil + } + out := new(TrustPolicy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TrustPolicy_STATUS) DeepCopyInto(out *TrustPolicy_STATUS) { + *out = *in + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *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 TrustPolicy_STATUS. +func (in *TrustPolicy_STATUS) DeepCopy() *TrustPolicy_STATUS { + if in == nil { + return nil + } + out := new(TrustPolicy_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 *UserIdentityProperties_STATUS) DeepCopyInto(out *UserIdentityProperties_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 UserIdentityProperties_STATUS. +func (in *UserIdentityProperties_STATUS) DeepCopy() *UserIdentityProperties_STATUS { + if in == nil { + return nil + } + out := new(UserIdentityProperties_STATUS) + in.DeepCopyInto(out) + return out +} diff --git a/v2/api/containerregistry/v1api20230701/structure.txt b/v2/api/containerregistry/v1api20230701/structure.txt new file mode 100644 index 00000000000..b32dd3fd8cd --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/structure.txt @@ -0,0 +1,243 @@ +// Code generated by azure-service-operator-codegen. DO NOT EDIT. +github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20230701 +------------------------------------------------------------------------------ +APIVersion: Enum (1 value) +└── "2023-07-01" +Registry: Resource +├── Owner: resources/v1apiv20191001.ResourceGroup +├── Spec: Object (15 properties) +│ ├── AdminUserEnabled: *bool +│ ├── AzureName: Validated (3 rules) +│ │ ├── Rule 0: MaxLength: 50 +│ │ ├── Rule 1: MinLength: 5 +│ │ └── Rule 2: Pattern: "^[a-zA-Z0-9]*$" +│ ├── DataEndpointEnabled: *bool +│ ├── Encryption: *Object (2 properties) +│ │ ├── KeyVaultProperties: *Object (3 properties) +│ │ │ ├── Identity: *string +│ │ │ ├── IdentityFromConfig: *genruntime.ConfigMapReference +│ │ │ └── KeyIdentifier: *string +│ │ └── Status: *Enum (2 values) +│ │ ├── "disabled" +│ │ └── "enabled" +│ ├── Identity: *Object (2 properties) +│ │ ├── Type: *Enum (4 values) +│ │ │ ├── "None" +│ │ │ ├── "SystemAssigned" +│ │ │ ├── "SystemAssigned, UserAssigned" +│ │ │ └── "UserAssigned" +│ │ └── UserAssignedIdentities: Object (1 property)[] +│ │ └── Reference: genruntime.ResourceReference +│ ├── Location: *string +│ ├── NetworkRuleBypassOptions: *Enum (2 values) +│ │ ├── "AzureServices" +│ │ └── "None" +│ ├── NetworkRuleSet: *Object (2 properties) +│ │ ├── DefaultAction: *Enum (2 values) +│ │ │ ├── "Allow" +│ │ │ └── "Deny" +│ │ └── IpRules: Object (2 properties)[] +│ │ ├── Action: *Enum (1 value) +│ │ │ └── "Allow" +│ │ └── Value: *string +│ ├── OperatorSpec: *Object (2 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ ├── Owner: *genruntime.KnownResourceReference +│ ├── Policies: *Object (4 properties) +│ │ ├── ExportPolicy: *Object (1 property) +│ │ │ └── Status: *Enum (2 values) +│ │ │ ├── "disabled" +│ │ │ └── "enabled" +│ │ ├── QuarantinePolicy: *Object (1 property) +│ │ │ └── Status: *Enum (2 values) +│ │ │ ├── "disabled" +│ │ │ └── "enabled" +│ │ ├── RetentionPolicy: *Object (2 properties) +│ │ │ ├── Days: *int +│ │ │ └── Status: *Enum (2 values) +│ │ │ ├── "disabled" +│ │ │ └── "enabled" +│ │ └── TrustPolicy: *Object (2 properties) +│ │ ├── Status: *Enum (2 values) +│ │ │ ├── "disabled" +│ │ │ └── "enabled" +│ │ └── Type: *Enum (1 value) +│ │ └── "Notary" +│ ├── PublicNetworkAccess: *Enum (2 values) +│ │ ├── "Disabled" +│ │ └── "Enabled" +│ ├── Sku: *Object (1 property) +│ │ └── Name: *Enum (4 values) +│ │ ├── "Basic" +│ │ ├── "Classic" +│ │ ├── "Premium" +│ │ └── "Standard" +│ ├── Tags: map[string]string +│ └── ZoneRedundancy: *Enum (2 values) +│ ├── "Disabled" +│ └── "Enabled" +└── Status: Object (23 properties) + ├── AdminUserEnabled: *bool + ├── Conditions: conditions.Condition[] + ├── CreationDate: *string + ├── DataEndpointEnabled: *bool + ├── DataEndpointHostNames: string[] + ├── Encryption: *Object (2 properties) + │ ├── KeyVaultProperties: *Object (5 properties) + │ │ ├── Identity: *string + │ │ ├── KeyIdentifier: *string + │ │ ├── KeyRotationEnabled: *bool + │ │ ├── LastKeyRotationTimestamp: *string + │ │ └── VersionedKeyIdentifier: *string + │ └── Status: *Enum (2 values) + │ ├── "disabled" + │ └── "enabled" + ├── 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 + ├── LoginServer: *string + ├── Name: *string + ├── NetworkRuleBypassOptions: *Enum (2 values) + │ ├── "AzureServices" + │ └── "None" + ├── NetworkRuleSet: *Object (2 properties) + │ ├── DefaultAction: *Enum (2 values) + │ │ ├── "Allow" + │ │ └── "Deny" + │ └── IpRules: Object (2 properties)[] + │ ├── Action: *Enum (1 value) + │ │ └── "Allow" + │ └── Value: *string + ├── Policies: *Object (4 properties) + │ ├── ExportPolicy: *Object (1 property) + │ │ └── Status: *Enum (2 values) + │ │ ├── "disabled" + │ │ └── "enabled" + │ ├── QuarantinePolicy: *Object (1 property) + │ │ └── Status: *Enum (2 values) + │ │ ├── "disabled" + │ │ └── "enabled" + │ ├── RetentionPolicy: *Object (3 properties) + │ │ ├── Days: *int + │ │ ├── LastUpdatedTime: *string + │ │ └── Status: *Enum (2 values) + │ │ ├── "disabled" + │ │ └── "enabled" + │ └── TrustPolicy: *Object (2 properties) + │ ├── Status: *Enum (2 values) + │ │ ├── "disabled" + │ │ └── "enabled" + │ └── Type: *Enum (1 value) + │ └── "Notary" + ├── PrivateEndpointConnections: Object (1 property)[] + │ └── Id: *string + ├── ProvisioningState: *Enum (6 values) + │ ├── "Canceled" + │ ├── "Creating" + │ ├── "Deleting" + │ ├── "Failed" + │ ├── "Succeeded" + │ └── "Updating" + ├── PublicNetworkAccess: *Enum (2 values) + │ ├── "Disabled" + │ └── "Enabled" + ├── Sku: *Object (2 properties) + │ ├── Name: *Enum (4 values) + │ │ ├── "Basic" + │ │ ├── "Classic" + │ │ ├── "Premium" + │ │ └── "Standard" + │ └── Tier: *Enum (4 values) + │ ├── "Basic" + │ ├── "Classic" + │ ├── "Premium" + │ └── "Standard" + ├── Status: *Object (3 properties) + │ ├── DisplayStatus: *string + │ ├── Message: *string + │ └── Timestamp: *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 + └── ZoneRedundancy: *Enum (2 values) + ├── "Disabled" + └── "Enabled" +RegistryReplication: Resource +├── Owner: Registry +├── Spec: Object (7 properties) +│ ├── AzureName: Validated (3 rules) +│ │ ├── Rule 0: MaxLength: 50 +│ │ ├── Rule 1: MinLength: 5 +│ │ └── Rule 2: Pattern: "^[a-zA-Z0-9]*$" +│ ├── Location: *string +│ ├── OperatorSpec: *Object (2 properties) +│ │ ├── ConfigMapExpressions: *core.DestinationExpression[] +│ │ └── SecretExpressions: *core.DestinationExpression[] +│ ├── Owner: *genruntime.KnownResourceReference +│ ├── RegionEndpointEnabled: *bool +│ ├── Tags: map[string]string +│ └── ZoneRedundancy: *Enum (2 values) +│ ├── "Disabled" +│ └── "Enabled" +└── Status: Object (11 properties) + ├── Conditions: conditions.Condition[] + ├── Id: *string + ├── Location: *string + ├── Name: *string + ├── ProvisioningState: *Enum (6 values) + │ ├── "Canceled" + │ ├── "Creating" + │ ├── "Deleting" + │ ├── "Failed" + │ ├── "Succeeded" + │ └── "Updating" + ├── RegionEndpointEnabled: *bool + ├── Status: *Object (3 properties) + │ ├── DisplayStatus: *string + │ ├── Message: *string + │ └── Timestamp: *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 + └── ZoneRedundancy: *Enum (2 values) + ├── "Disabled" + └── "Enabled" diff --git a/v2/api/containerregistry/v1api20230701/zz_generated.deepcopy.go b/v2/api/containerregistry/v1api20230701/zz_generated.deepcopy.go new file mode 100644 index 00000000000..2692c99797f --- /dev/null +++ b/v2/api/containerregistry/v1api20230701/zz_generated.deepcopy.go @@ -0,0 +1,1275 @@ +//go:build !ignore_autogenerated + +/* +Copyright (c) Microsoft Corporation. +Licensed under the MIT license. +*/ + +// Code generated by controller-gen. DO NOT EDIT. + +package v1api20230701 + +import ( + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/conditions" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/core" + "k8s.io/apimachinery/pkg/runtime" +) + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EncryptionProperty) DeepCopyInto(out *EncryptionProperty) { + *out = *in + if in.KeyVaultProperties != nil { + in, out := &in.KeyVaultProperties, &out.KeyVaultProperties + *out = new(KeyVaultProperties) + (*in).DeepCopyInto(*out) + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(EncryptionProperty_Status) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EncryptionProperty. +func (in *EncryptionProperty) DeepCopy() *EncryptionProperty { + if in == nil { + return nil + } + out := new(EncryptionProperty) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EncryptionProperty_STATUS) DeepCopyInto(out *EncryptionProperty_STATUS) { + *out = *in + if in.KeyVaultProperties != nil { + in, out := &in.KeyVaultProperties, &out.KeyVaultProperties + *out = new(KeyVaultProperties_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(EncryptionProperty_Status_STATUS) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EncryptionProperty_STATUS. +func (in *EncryptionProperty_STATUS) DeepCopy() *EncryptionProperty_STATUS { + if in == nil { + return nil + } + out := new(EncryptionProperty_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 *ExportPolicy) DeepCopyInto(out *ExportPolicy) { + *out = *in + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(ExportPolicy_Status) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExportPolicy. +func (in *ExportPolicy) DeepCopy() *ExportPolicy { + if in == nil { + return nil + } + out := new(ExportPolicy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ExportPolicy_STATUS) DeepCopyInto(out *ExportPolicy_STATUS) { + *out = *in + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(ExportPolicy_Status_STATUS) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExportPolicy_STATUS. +func (in *ExportPolicy_STATUS) DeepCopy() *ExportPolicy_STATUS { + if in == nil { + return nil + } + out := new(ExportPolicy_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 *IPRule) DeepCopyInto(out *IPRule) { + *out = *in + if in.Action != nil { + in, out := &in.Action, &out.Action + *out = new(IPRule_Action) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPRule. +func (in *IPRule) DeepCopy() *IPRule { + if in == nil { + return nil + } + out := new(IPRule) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IPRule_STATUS) DeepCopyInto(out *IPRule_STATUS) { + *out = *in + if in.Action != nil { + in, out := &in.Action, &out.Action + *out = new(IPRule_Action_STATUS) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IPRule_STATUS. +func (in *IPRule_STATUS) DeepCopy() *IPRule_STATUS { + if in == nil { + return nil + } + out := new(IPRule_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IdentityProperties) DeepCopyInto(out *IdentityProperties) { + *out = *in + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(IdentityProperties_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 IdentityProperties. +func (in *IdentityProperties) DeepCopy() *IdentityProperties { + if in == nil { + return nil + } + out := new(IdentityProperties) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IdentityProperties_STATUS) DeepCopyInto(out *IdentityProperties_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(IdentityProperties_Type_STATUS) + **out = **in + } + if in.UserAssignedIdentities != nil { + in, out := &in.UserAssignedIdentities, &out.UserAssignedIdentities + *out = make(map[string]UserIdentityProperties_STATUS, len(*in)) + for key, val := range *in { + (*out)[key] = *val.DeepCopy() + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IdentityProperties_STATUS. +func (in *IdentityProperties_STATUS) DeepCopy() *IdentityProperties_STATUS { + if in == nil { + return nil + } + out := new(IdentityProperties_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 *KeyVaultProperties) DeepCopyInto(out *KeyVaultProperties) { + *out = *in + if in.Identity != nil { + in, out := &in.Identity, &out.Identity + *out = new(string) + **out = **in + } + if in.IdentityFromConfig != nil { + in, out := &in.IdentityFromConfig, &out.IdentityFromConfig + *out = new(genruntime.ConfigMapReference) + **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.Identity != nil { + in, out := &in.Identity, &out.Identity + *out = new(string) + **out = **in + } + if in.KeyIdentifier != nil { + in, out := &in.KeyIdentifier, &out.KeyIdentifier + *out = new(string) + **out = **in + } + if in.KeyRotationEnabled != nil { + in, out := &in.KeyRotationEnabled, &out.KeyRotationEnabled + *out = new(bool) + **out = **in + } + if in.LastKeyRotationTimestamp != nil { + in, out := &in.LastKeyRotationTimestamp, &out.LastKeyRotationTimestamp + *out = new(string) + **out = **in + } + if in.VersionedKeyIdentifier != nil { + in, out := &in.VersionedKeyIdentifier, &out.VersionedKeyIdentifier + *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 *NetworkRuleSet) DeepCopyInto(out *NetworkRuleSet) { + *out = *in + if in.DefaultAction != nil { + in, out := &in.DefaultAction, &out.DefaultAction + *out = new(NetworkRuleSet_DefaultAction) + **out = **in + } + if in.IpRules != nil { + in, out := &in.IpRules, &out.IpRules + *out = make([]IPRule, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkRuleSet. +func (in *NetworkRuleSet) DeepCopy() *NetworkRuleSet { + if in == nil { + return nil + } + out := new(NetworkRuleSet) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *NetworkRuleSet_STATUS) DeepCopyInto(out *NetworkRuleSet_STATUS) { + *out = *in + if in.DefaultAction != nil { + in, out := &in.DefaultAction, &out.DefaultAction + *out = new(NetworkRuleSet_DefaultAction_STATUS) + **out = **in + } + if in.IpRules != nil { + in, out := &in.IpRules, &out.IpRules + *out = make([]IPRule_STATUS, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkRuleSet_STATUS. +func (in *NetworkRuleSet_STATUS) DeepCopy() *NetworkRuleSet_STATUS { + if in == nil { + return nil + } + out := new(NetworkRuleSet_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 *Policies) DeepCopyInto(out *Policies) { + *out = *in + if in.ExportPolicy != nil { + in, out := &in.ExportPolicy, &out.ExportPolicy + *out = new(ExportPolicy) + (*in).DeepCopyInto(*out) + } + if in.QuarantinePolicy != nil { + in, out := &in.QuarantinePolicy, &out.QuarantinePolicy + *out = new(QuarantinePolicy) + (*in).DeepCopyInto(*out) + } + if in.RetentionPolicy != nil { + in, out := &in.RetentionPolicy, &out.RetentionPolicy + *out = new(RetentionPolicy) + (*in).DeepCopyInto(*out) + } + if in.TrustPolicy != nil { + in, out := &in.TrustPolicy, &out.TrustPolicy + *out = new(TrustPolicy) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Policies. +func (in *Policies) DeepCopy() *Policies { + if in == nil { + return nil + } + out := new(Policies) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Policies_STATUS) DeepCopyInto(out *Policies_STATUS) { + *out = *in + if in.ExportPolicy != nil { + in, out := &in.ExportPolicy, &out.ExportPolicy + *out = new(ExportPolicy_STATUS) + (*in).DeepCopyInto(*out) + } + if in.QuarantinePolicy != nil { + in, out := &in.QuarantinePolicy, &out.QuarantinePolicy + *out = new(QuarantinePolicy_STATUS) + (*in).DeepCopyInto(*out) + } + if in.RetentionPolicy != nil { + in, out := &in.RetentionPolicy, &out.RetentionPolicy + *out = new(RetentionPolicy_STATUS) + (*in).DeepCopyInto(*out) + } + if in.TrustPolicy != nil { + in, out := &in.TrustPolicy, &out.TrustPolicy + *out = new(TrustPolicy_STATUS) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Policies_STATUS. +func (in *Policies_STATUS) DeepCopy() *Policies_STATUS { + if in == nil { + return nil + } + out := new(Policies_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PrivateEndpointConnection_STATUS) DeepCopyInto(out *PrivateEndpointConnection_STATUS) { + *out = *in + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateEndpointConnection_STATUS. +func (in *PrivateEndpointConnection_STATUS) DeepCopy() *PrivateEndpointConnection_STATUS { + if in == nil { + return nil + } + out := new(PrivateEndpointConnection_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *QuarantinePolicy) DeepCopyInto(out *QuarantinePolicy) { + *out = *in + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(QuarantinePolicy_Status) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new QuarantinePolicy. +func (in *QuarantinePolicy) DeepCopy() *QuarantinePolicy { + if in == nil { + return nil + } + out := new(QuarantinePolicy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *QuarantinePolicy_STATUS) DeepCopyInto(out *QuarantinePolicy_STATUS) { + *out = *in + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(QuarantinePolicy_Status_STATUS) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new QuarantinePolicy_STATUS. +func (in *QuarantinePolicy_STATUS) DeepCopy() *QuarantinePolicy_STATUS { + if in == nil { + return nil + } + out := new(QuarantinePolicy_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 *Registry) DeepCopyInto(out *Registry) { + *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 Registry. +func (in *Registry) DeepCopy() *Registry { + if in == nil { + return nil + } + out := new(Registry) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Registry) 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 *RegistryList) DeepCopyInto(out *RegistryList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Registry, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegistryList. +func (in *RegistryList) DeepCopy() *RegistryList { + if in == nil { + return nil + } + out := new(RegistryList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RegistryList) 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 *RegistryOperatorSpec) DeepCopyInto(out *RegistryOperatorSpec) { + *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 RegistryOperatorSpec. +func (in *RegistryOperatorSpec) DeepCopy() *RegistryOperatorSpec { + if in == nil { + return nil + } + out := new(RegistryOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RegistryReplication) DeepCopyInto(out *RegistryReplication) { + *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 RegistryReplication. +func (in *RegistryReplication) DeepCopy() *RegistryReplication { + if in == nil { + return nil + } + out := new(RegistryReplication) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RegistryReplication) 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 *RegistryReplicationList) DeepCopyInto(out *RegistryReplicationList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]RegistryReplication, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegistryReplicationList. +func (in *RegistryReplicationList) DeepCopy() *RegistryReplicationList { + if in == nil { + return nil + } + out := new(RegistryReplicationList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *RegistryReplicationList) 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 *RegistryReplicationOperatorSpec) DeepCopyInto(out *RegistryReplicationOperatorSpec) { + *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 RegistryReplicationOperatorSpec. +func (in *RegistryReplicationOperatorSpec) DeepCopy() *RegistryReplicationOperatorSpec { + if in == nil { + return nil + } + out := new(RegistryReplicationOperatorSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RegistryReplication_STATUS) DeepCopyInto(out *RegistryReplication_STATUS) { + *out = *in + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]conditions.Condition, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.ProvisioningState != nil { + in, out := &in.ProvisioningState, &out.ProvisioningState + *out = new(ReplicationProperties_ProvisioningState_STATUS) + **out = **in + } + if in.RegionEndpointEnabled != nil { + in, out := &in.RegionEndpointEnabled, &out.RegionEndpointEnabled + *out = new(bool) + **out = **in + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(Status_STATUS) + (*in).DeepCopyInto(*out) + } + if in.SystemData != nil { + in, out := &in.SystemData, &out.SystemData + *out = new(SystemData_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.ZoneRedundancy != nil { + in, out := &in.ZoneRedundancy, &out.ZoneRedundancy + *out = new(ReplicationProperties_ZoneRedundancy_STATUS) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegistryReplication_STATUS. +func (in *RegistryReplication_STATUS) DeepCopy() *RegistryReplication_STATUS { + if in == nil { + return nil + } + out := new(RegistryReplication_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 *RegistryReplication_Spec) DeepCopyInto(out *RegistryReplication_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(RegistryReplicationOperatorSpec) + (*in).DeepCopyInto(*out) + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(genruntime.KnownResourceReference) + **out = **in + } + if in.RegionEndpointEnabled != nil { + in, out := &in.RegionEndpointEnabled, &out.RegionEndpointEnabled + *out = new(bool) + **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.ZoneRedundancy != nil { + in, out := &in.ZoneRedundancy, &out.ZoneRedundancy + *out = new(ReplicationProperties_ZoneRedundancy) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RegistryReplication_Spec. +func (in *RegistryReplication_Spec) DeepCopy() *RegistryReplication_Spec { + if in == nil { + return nil + } + out := new(RegistryReplication_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 *Registry_STATUS) DeepCopyInto(out *Registry_STATUS) { + *out = *in + if in.AdminUserEnabled != nil { + in, out := &in.AdminUserEnabled, &out.AdminUserEnabled + *out = new(bool) + **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.CreationDate != nil { + in, out := &in.CreationDate, &out.CreationDate + *out = new(string) + **out = **in + } + if in.DataEndpointEnabled != nil { + in, out := &in.DataEndpointEnabled, &out.DataEndpointEnabled + *out = new(bool) + **out = **in + } + if in.DataEndpointHostNames != nil { + in, out := &in.DataEndpointHostNames, &out.DataEndpointHostNames + *out = make([]string, len(*in)) + copy(*out, *in) + } + if in.Encryption != nil { + in, out := &in.Encryption, &out.Encryption + *out = new(EncryptionProperty_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Id != nil { + in, out := &in.Id, &out.Id + *out = new(string) + **out = **in + } + if in.Identity != nil { + in, out := &in.Identity, &out.Identity + *out = new(IdentityProperties_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.LoginServer != nil { + in, out := &in.LoginServer, &out.LoginServer + *out = new(string) + **out = **in + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } + if in.NetworkRuleBypassOptions != nil { + in, out := &in.NetworkRuleBypassOptions, &out.NetworkRuleBypassOptions + *out = new(RegistryProperties_NetworkRuleBypassOptions_STATUS) + **out = **in + } + if in.NetworkRuleSet != nil { + in, out := &in.NetworkRuleSet, &out.NetworkRuleSet + *out = new(NetworkRuleSet_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Policies != nil { + in, out := &in.Policies, &out.Policies + *out = new(Policies_STATUS) + (*in).DeepCopyInto(*out) + } + if in.PrivateEndpointConnections != nil { + in, out := &in.PrivateEndpointConnections, &out.PrivateEndpointConnections + *out = make([]PrivateEndpointConnection_STATUS, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } + if in.ProvisioningState != nil { + in, out := &in.ProvisioningState, &out.ProvisioningState + *out = new(RegistryProperties_ProvisioningState_STATUS) + **out = **in + } + if in.PublicNetworkAccess != nil { + in, out := &in.PublicNetworkAccess, &out.PublicNetworkAccess + *out = new(RegistryProperties_PublicNetworkAccess_STATUS) + **out = **in + } + if in.Sku != nil { + in, out := &in.Sku, &out.Sku + *out = new(Sku_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(Status_STATUS) + (*in).DeepCopyInto(*out) + } + if in.SystemData != nil { + in, out := &in.SystemData, &out.SystemData + *out = new(SystemData_STATUS) + (*in).DeepCopyInto(*out) + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.ZoneRedundancy != nil { + in, out := &in.ZoneRedundancy, &out.ZoneRedundancy + *out = new(RegistryProperties_ZoneRedundancy_STATUS) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Registry_STATUS. +func (in *Registry_STATUS) DeepCopy() *Registry_STATUS { + if in == nil { + return nil + } + out := new(Registry_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 *Registry_Spec) DeepCopyInto(out *Registry_Spec) { + *out = *in + if in.AdminUserEnabled != nil { + in, out := &in.AdminUserEnabled, &out.AdminUserEnabled + *out = new(bool) + **out = **in + } + if in.DataEndpointEnabled != nil { + in, out := &in.DataEndpointEnabled, &out.DataEndpointEnabled + *out = new(bool) + **out = **in + } + if in.Encryption != nil { + in, out := &in.Encryption, &out.Encryption + *out = new(EncryptionProperty) + (*in).DeepCopyInto(*out) + } + if in.Identity != nil { + in, out := &in.Identity, &out.Identity + *out = new(IdentityProperties) + (*in).DeepCopyInto(*out) + } + if in.Location != nil { + in, out := &in.Location, &out.Location + *out = new(string) + **out = **in + } + if in.NetworkRuleBypassOptions != nil { + in, out := &in.NetworkRuleBypassOptions, &out.NetworkRuleBypassOptions + *out = new(RegistryProperties_NetworkRuleBypassOptions) + **out = **in + } + if in.NetworkRuleSet != nil { + in, out := &in.NetworkRuleSet, &out.NetworkRuleSet + *out = new(NetworkRuleSet) + (*in).DeepCopyInto(*out) + } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(RegistryOperatorSpec) + (*in).DeepCopyInto(*out) + } + if in.Owner != nil { + in, out := &in.Owner, &out.Owner + *out = new(genruntime.KnownResourceReference) + **out = **in + } + if in.Policies != nil { + in, out := &in.Policies, &out.Policies + *out = new(Policies) + (*in).DeepCopyInto(*out) + } + if in.PublicNetworkAccess != nil { + in, out := &in.PublicNetworkAccess, &out.PublicNetworkAccess + *out = new(RegistryProperties_PublicNetworkAccess) + **out = **in + } + if in.Sku != nil { + in, out := &in.Sku, &out.Sku + *out = new(Sku) + (*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.ZoneRedundancy != nil { + in, out := &in.ZoneRedundancy, &out.ZoneRedundancy + *out = new(RegistryProperties_ZoneRedundancy) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Registry_Spec. +func (in *Registry_Spec) DeepCopy() *Registry_Spec { + if in == nil { + return nil + } + out := new(Registry_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 *RetentionPolicy) DeepCopyInto(out *RetentionPolicy) { + *out = *in + if in.Days != nil { + in, out := &in.Days, &out.Days + *out = new(int) + **out = **in + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(RetentionPolicy_Status) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetentionPolicy. +func (in *RetentionPolicy) DeepCopy() *RetentionPolicy { + if in == nil { + return nil + } + out := new(RetentionPolicy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *RetentionPolicy_STATUS) DeepCopyInto(out *RetentionPolicy_STATUS) { + *out = *in + if in.Days != nil { + in, out := &in.Days, &out.Days + *out = new(int) + **out = **in + } + if in.LastUpdatedTime != nil { + in, out := &in.LastUpdatedTime, &out.LastUpdatedTime + *out = new(string) + **out = **in + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(RetentionPolicy_Status_STATUS) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RetentionPolicy_STATUS. +func (in *RetentionPolicy_STATUS) DeepCopy() *RetentionPolicy_STATUS { + if in == nil { + return nil + } + out := new(RetentionPolicy_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(Sku_Name) + **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(Sku_Name_STATUS) + **out = **in + } + if in.Tier != nil { + in, out := &in.Tier, &out.Tier + *out = new(Sku_Tier_STATUS) + **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 *Status_STATUS) DeepCopyInto(out *Status_STATUS) { + *out = *in + if in.DisplayStatus != nil { + in, out := &in.DisplayStatus, &out.DisplayStatus + *out = new(string) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } + if in.Timestamp != nil { + in, out := &in.Timestamp, &out.Timestamp + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Status_STATUS. +func (in *Status_STATUS) DeepCopy() *Status_STATUS { + if in == nil { + return nil + } + out := new(Status_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SystemData_STATUS) DeepCopyInto(out *SystemData_STATUS) { + *out = *in + if in.CreatedAt != nil { + in, out := &in.CreatedAt, &out.CreatedAt + *out = new(string) + **out = **in + } + if in.CreatedBy != nil { + in, out := &in.CreatedBy, &out.CreatedBy + *out = new(string) + **out = **in + } + if in.CreatedByType != nil { + in, out := &in.CreatedByType, &out.CreatedByType + *out = new(SystemData_CreatedByType_STATUS) + **out = **in + } + if in.LastModifiedAt != nil { + in, out := &in.LastModifiedAt, &out.LastModifiedAt + *out = new(string) + **out = **in + } + if in.LastModifiedBy != nil { + in, out := &in.LastModifiedBy, &out.LastModifiedBy + *out = new(string) + **out = **in + } + if in.LastModifiedByType != nil { + in, out := &in.LastModifiedByType, &out.LastModifiedByType + *out = new(SystemData_LastModifiedByType_STATUS) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SystemData_STATUS. +func (in *SystemData_STATUS) DeepCopy() *SystemData_STATUS { + if in == nil { + return nil + } + out := new(SystemData_STATUS) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TrustPolicy) DeepCopyInto(out *TrustPolicy) { + *out = *in + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(TrustPolicy_Status) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(TrustPolicy_Type) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrustPolicy. +func (in *TrustPolicy) DeepCopy() *TrustPolicy { + if in == nil { + return nil + } + out := new(TrustPolicy) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TrustPolicy_STATUS) DeepCopyInto(out *TrustPolicy_STATUS) { + *out = *in + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(TrustPolicy_Status_STATUS) + **out = **in + } + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(TrustPolicy_Type_STATUS) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrustPolicy_STATUS. +func (in *TrustPolicy_STATUS) DeepCopy() *TrustPolicy_STATUS { + if in == nil { + return nil + } + out := new(TrustPolicy_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 *UserIdentityProperties_STATUS) DeepCopyInto(out *UserIdentityProperties_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 UserIdentityProperties_STATUS. +func (in *UserIdentityProperties_STATUS) DeepCopy() *UserIdentityProperties_STATUS { + if in == nil { + return nil + } + out := new(UserIdentityProperties_STATUS) + in.DeepCopyInto(out) + return out +} diff --git a/v2/api/containerregistry/versions_matrix.md b/v2/api/containerregistry/versions_matrix.md index 7069bf118a3..136176736d1 100644 --- a/v2/api/containerregistry/versions_matrix.md +++ b/v2/api/containerregistry/versions_matrix.md @@ -1,65 +1,73 @@ -| Type Definitions in package "containerregistry" | v1api20210901 | -|----------------------------------------------------|---------------| -| APIVersion | v1api20210901 | -| EncryptionProperty | v1api20210901 | -| EncryptionProperty_STATUS | v1api20210901 | -| EncryptionProperty_Status | v1api20210901 | -| EncryptionProperty_Status_STATUS | v1api20210901 | -| ExportPolicy | v1api20210901 | -| ExportPolicy_STATUS | v1api20210901 | -| ExportPolicy_Status | v1api20210901 | -| ExportPolicy_Status_STATUS | v1api20210901 | -| IPRule | v1api20210901 | -| IPRule_Action | v1api20210901 | -| IPRule_Action_STATUS | v1api20210901 | -| IPRule_STATUS | v1api20210901 | -| IdentityProperties | v1api20210901 | -| IdentityProperties_STATUS | v1api20210901 | -| IdentityProperties_Type | v1api20210901 | -| IdentityProperties_Type_STATUS | v1api20210901 | -| KeyVaultProperties | v1api20210901 | -| KeyVaultProperties_STATUS | v1api20210901 | -| NetworkRuleSet | v1api20210901 | -| NetworkRuleSet_DefaultAction | v1api20210901 | -| NetworkRuleSet_DefaultAction_STATUS | v1api20210901 | -| NetworkRuleSet_STATUS | v1api20210901 | -| Policies | v1api20210901 | -| Policies_STATUS | v1api20210901 | -| PrivateEndpointConnection_STATUS | v1api20210901 | -| QuarantinePolicy | v1api20210901 | -| QuarantinePolicy_STATUS | v1api20210901 | -| QuarantinePolicy_Status | v1api20210901 | -| QuarantinePolicy_Status_STATUS | v1api20210901 | -| Registry | v1api20210901 | -| RegistryProperties | v1api20210901 | -| RegistryProperties_NetworkRuleBypassOptions | v1api20210901 | -| RegistryProperties_NetworkRuleBypassOptions_STATUS | v1api20210901 | -| RegistryProperties_ProvisioningState_STATUS | v1api20210901 | -| RegistryProperties_PublicNetworkAccess | v1api20210901 | -| RegistryProperties_PublicNetworkAccess_STATUS | v1api20210901 | -| RegistryProperties_STATUS | v1api20210901 | -| RegistryProperties_ZoneRedundancy | v1api20210901 | -| RegistryProperties_ZoneRedundancy_STATUS | v1api20210901 | -| Registry_STATUS | v1api20210901 | -| Registry_Spec | v1api20210901 | -| RetentionPolicy | v1api20210901 | -| RetentionPolicy_STATUS | v1api20210901 | -| RetentionPolicy_Status | v1api20210901 | -| RetentionPolicy_Status_STATUS | v1api20210901 | -| Sku | v1api20210901 | -| Sku_Name | v1api20210901 | -| Sku_Name_STATUS | v1api20210901 | -| Sku_STATUS | v1api20210901 | -| Sku_Tier_STATUS | v1api20210901 | -| Status_STATUS | v1api20210901 | -| SystemData_CreatedByType_STATUS | v1api20210901 | -| SystemData_LastModifiedByType_STATUS | v1api20210901 | -| SystemData_STATUS | v1api20210901 | -| TrustPolicy | v1api20210901 | -| TrustPolicy_STATUS | v1api20210901 | -| TrustPolicy_Status | v1api20210901 | -| TrustPolicy_Status_STATUS | v1api20210901 | -| TrustPolicy_Type | v1api20210901 | -| TrustPolicy_Type_STATUS | v1api20210901 | -| UserAssignedIdentityDetails | v1api20210901 | -| UserIdentityProperties_STATUS | v1api20210901 | +| Type Definitions in package "containerregistry" | v1api20210901 | v1api20230701 | +|----------------------------------------------------|---------------|---------------| +| APIVersion | v1api20210901 | v1api20230701 | +| EncryptionProperty | v1api20210901 | v1api20230701 | +| EncryptionProperty_STATUS | v1api20210901 | v1api20230701 | +| EncryptionProperty_Status | v1api20210901 | v1api20230701 | +| EncryptionProperty_Status_STATUS | v1api20210901 | v1api20230701 | +| ExportPolicy | v1api20210901 | v1api20230701 | +| ExportPolicy_STATUS | v1api20210901 | v1api20230701 | +| ExportPolicy_Status | v1api20210901 | v1api20230701 | +| ExportPolicy_Status_STATUS | v1api20210901 | v1api20230701 | +| IPRule | v1api20210901 | v1api20230701 | +| IPRule_Action | v1api20210901 | v1api20230701 | +| IPRule_Action_STATUS | v1api20210901 | v1api20230701 | +| IPRule_STATUS | v1api20210901 | v1api20230701 | +| IdentityProperties | v1api20210901 | v1api20230701 | +| IdentityProperties_STATUS | v1api20210901 | v1api20230701 | +| IdentityProperties_Type | v1api20210901 | v1api20230701 | +| IdentityProperties_Type_STATUS | v1api20210901 | v1api20230701 | +| KeyVaultProperties | v1api20210901 | v1api20230701 | +| KeyVaultProperties_STATUS | v1api20210901 | v1api20230701 | +| NetworkRuleSet | v1api20210901 | v1api20230701 | +| NetworkRuleSet_DefaultAction | v1api20210901 | v1api20230701 | +| NetworkRuleSet_DefaultAction_STATUS | v1api20210901 | v1api20230701 | +| NetworkRuleSet_STATUS | v1api20210901 | v1api20230701 | +| Policies | v1api20210901 | v1api20230701 | +| Policies_STATUS | v1api20210901 | v1api20230701 | +| PrivateEndpointConnection_STATUS | v1api20210901 | v1api20230701 | +| QuarantinePolicy | v1api20210901 | v1api20230701 | +| QuarantinePolicy_STATUS | v1api20210901 | v1api20230701 | +| QuarantinePolicy_Status | v1api20210901 | v1api20230701 | +| QuarantinePolicy_Status_STATUS | v1api20210901 | v1api20230701 | +| Registry | v1api20210901 | v1api20230701 | +| RegistryProperties | v1api20210901 | v1api20230701 | +| RegistryProperties_NetworkRuleBypassOptions | v1api20210901 | v1api20230701 | +| RegistryProperties_NetworkRuleBypassOptions_STATUS | v1api20210901 | v1api20230701 | +| RegistryProperties_ProvisioningState_STATUS | v1api20210901 | v1api20230701 | +| RegistryProperties_PublicNetworkAccess | v1api20210901 | v1api20230701 | +| RegistryProperties_PublicNetworkAccess_STATUS | v1api20210901 | v1api20230701 | +| RegistryProperties_STATUS | v1api20210901 | v1api20230701 | +| RegistryProperties_ZoneRedundancy | v1api20210901 | v1api20230701 | +| RegistryProperties_ZoneRedundancy_STATUS | v1api20210901 | v1api20230701 | +| RegistryReplication | | v1api20230701 | +| RegistryReplication_STATUS | | v1api20230701 | +| RegistryReplication_Spec | | v1api20230701 | +| Registry_STATUS | v1api20210901 | v1api20230701 | +| Registry_Spec | v1api20210901 | v1api20230701 | +| ReplicationProperties | | v1api20230701 | +| ReplicationProperties_ProvisioningState_STATUS | | v1api20230701 | +| ReplicationProperties_STATUS | | v1api20230701 | +| ReplicationProperties_ZoneRedundancy | | v1api20230701 | +| ReplicationProperties_ZoneRedundancy_STATUS | | v1api20230701 | +| RetentionPolicy | v1api20210901 | v1api20230701 | +| RetentionPolicy_STATUS | v1api20210901 | v1api20230701 | +| RetentionPolicy_Status | v1api20210901 | v1api20230701 | +| RetentionPolicy_Status_STATUS | v1api20210901 | v1api20230701 | +| Sku | v1api20210901 | v1api20230701 | +| Sku_Name | v1api20210901 | v1api20230701 | +| Sku_Name_STATUS | v1api20210901 | v1api20230701 | +| Sku_STATUS | v1api20210901 | v1api20230701 | +| Sku_Tier_STATUS | v1api20210901 | v1api20230701 | +| Status_STATUS | v1api20210901 | v1api20230701 | +| SystemData_CreatedByType_STATUS | v1api20210901 | v1api20230701 | +| SystemData_LastModifiedByType_STATUS | v1api20210901 | v1api20230701 | +| SystemData_STATUS | v1api20210901 | v1api20230701 | +| TrustPolicy | v1api20210901 | v1api20230701 | +| TrustPolicy_STATUS | v1api20210901 | v1api20230701 | +| TrustPolicy_Status | v1api20210901 | v1api20230701 | +| TrustPolicy_Status_STATUS | v1api20210901 | v1api20230701 | +| TrustPolicy_Type | v1api20210901 | v1api20230701 | +| TrustPolicy_Type_STATUS | v1api20210901 | v1api20230701 | +| UserAssignedIdentityDetails | v1api20210901 | v1api20230701 | +| UserIdentityProperties_STATUS | v1api20210901 | v1api20230701 | diff --git a/v2/azure-arm.yaml b/v2/azure-arm.yaml index eb457555282..9c8d6f7e3c6 100644 --- a/v2/azure-arm.yaml +++ b/v2/azure-arm.yaml @@ -1663,12 +1663,22 @@ objectModelConfiguration: $armReference: true containerregistry: 2021-09-01: - Registry: - $export: true - $supportedFrom: v2.0.0-alpha.6 IdentityProperties: PrincipalId: $armReference: false + Registry: + $export: true + $supportedFrom: v2.0.0-alpha.6 + 2023-07-01: + KeyVaultProperties: + Identity: + $importConfigMapMode: optional + Registry: + $export: true + $supportedFrom: v2.12.0 + Registries_Replication: + $exportAs: RegistryReplication + $supportedFrom: v2.12.0 containerservice: $payloadType: explicitCollections 2021-05-01: diff --git a/v2/internal/controllers/controller_resources_gen.go b/v2/internal/controllers/controller_resources_gen.go index c54503285d5..4766a3388db 100644 --- a/v2/internal/controllers/controller_resources_gen.go +++ b/v2/internal/controllers/controller_resources_gen.go @@ -60,6 +60,8 @@ import ( containerregistry_customizations "github.com/Azure/azure-service-operator/v2/api/containerregistry/customizations" containerregistry_v20210901 "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20210901" containerregistry_v20210901s "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20210901/storage" + containerregistry_v20230701 "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20230701" + containerregistry_v20230701s "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20230701/storage" containerservice_customizations "github.com/Azure/azure-service-operator/v2/api/containerservice/customizations" containerservice_v20210501 "github.com/Azure/azure-service-operator/v2/api/containerservice/v1api20210501" containerservice_v20210501s "github.com/Azure/azure-service-operator/v2/api/containerservice/v1api20210501/storage" @@ -541,7 +543,22 @@ func getKnownStorageTypes() []*registration.StorageType { }, }, }) - result = append(result, ®istration.StorageType{Obj: new(containerregistry_v20210901s.Registry)}) + result = append(result, ®istration.StorageType{ + Obj: new(containerregistry_v20230701s.Registry), + Indexes: []registration.Index{ + { + Key: ".spec.encryption.keyVaultProperties.identityFromConfig", + Func: indexContainerregistryRegistryIdentityFromConfig, + }, + }, + Watches: []registration.Watch{ + { + Type: &v1.ConfigMap{}, + MakeEventHandler: watchConfigMapsFactory([]string{".spec.encryption.keyVaultProperties.identityFromConfig"}, &containerregistry_v20230701s.RegistryList{}), + }, + }, + }) + result = append(result, ®istration.StorageType{Obj: new(containerregistry_v20230701s.RegistryReplication)}) result = append(result, ®istration.StorageType{Obj: new(containerservice_v20230315ps.Fleet)}) result = append(result, ®istration.StorageType{Obj: new(containerservice_v20230315ps.FleetsMember)}) result = append(result, ®istration.StorageType{Obj: new(containerservice_v20230315ps.FleetsUpdateRun)}) @@ -1629,6 +1646,14 @@ func getKnownTypes() []client.Object { result = append(result, new(containerinstance_v20211001s.ContainerGroup)) result = append(result, new(containerregistry_v20210901.Registry)) result = append(result, new(containerregistry_v20210901s.Registry)) + result = append( + result, + new(containerregistry_v20230701.Registry), + new(containerregistry_v20230701.RegistryReplication)) + result = append( + result, + new(containerregistry_v20230701s.Registry), + new(containerregistry_v20230701s.RegistryReplication)) result = append( result, new(containerservice_v20210501.ManagedCluster), @@ -2406,6 +2431,8 @@ func createScheme() *runtime.Scheme { _ = containerinstance_v20211001s.AddToScheme(scheme) _ = containerregistry_v20210901.AddToScheme(scheme) _ = containerregistry_v20210901s.AddToScheme(scheme) + _ = containerregistry_v20230701.AddToScheme(scheme) + _ = containerregistry_v20230701s.AddToScheme(scheme) _ = containerservice_v20210501.AddToScheme(scheme) _ = containerservice_v20210501s.AddToScheme(scheme) _ = containerservice_v20230201.AddToScheme(scheme) @@ -2590,6 +2617,7 @@ func getResourceExtensions() []genruntime.ResourceExtension { result = append(result, &compute_customizations.VirtualMachinesExtensionExtension{}) result = append(result, &containerinstance_customizations.ContainerGroupExtension{}) result = append(result, &containerregistry_customizations.RegistryExtension{}) + result = append(result, &containerregistry_customizations.RegistryReplicationExtension{}) result = append(result, &containerservice_customizations.FleetExtension{}) result = append(result, &containerservice_customizations.FleetsMemberExtension{}) result = append(result, &containerservice_customizations.FleetsUpdateRunExtension{}) @@ -3232,6 +3260,24 @@ func indexContainerinstanceContainerGroupWorkspaceKey(rawObj client.Object) []st return obj.Spec.Diagnostics.LogAnalytics.WorkspaceKey.Index() } +// indexContainerregistryRegistryIdentityFromConfig an index function for containerregistry_v20230701s.Registry .spec.encryption.keyVaultProperties.identityFromConfig +func indexContainerregistryRegistryIdentityFromConfig(rawObj client.Object) []string { + obj, ok := rawObj.(*containerregistry_v20230701s.Registry) + if !ok { + return nil + } + if obj.Spec.Encryption == nil { + return nil + } + if obj.Spec.Encryption.KeyVaultProperties == nil { + return nil + } + if obj.Spec.Encryption.KeyVaultProperties.IdentityFromConfig == nil { + return nil + } + return obj.Spec.Encryption.KeyVaultProperties.IdentityFromConfig.Index() +} + // indexContainerserviceManagedClusterAdminPassword an index function for containerservice_v20240901s.ManagedCluster .spec.windowsProfile.adminPassword func indexContainerserviceManagedClusterAdminPassword(rawObj client.Object) []string { obj, ok := rawObj.(*containerservice_v20240901s.ManagedCluster) diff --git a/v2/internal/controllers/crd_containerregistry_registry_test.go b/v2/internal/controllers/crd_containerregistry_registry_20210901_test.go similarity index 69% rename from v2/internal/controllers/crd_containerregistry_registry_test.go rename to v2/internal/controllers/crd_containerregistry_registry_20210901_test.go index 881858a439e..d40a8567c49 100644 --- a/v2/internal/controllers/crd_containerregistry_registry_test.go +++ b/v2/internal/controllers/crd_containerregistry_registry_20210901_test.go @@ -14,7 +14,7 @@ import ( "github.com/Azure/azure-service-operator/v2/internal/testcommon" ) -func Test_ContainerRegistry_Registry_CRUD(t *testing.T) { +func Test_ContainerRegistry_Registry_20210901_CRUD(t *testing.T) { t.Parallel() tc := globalTestContext.ForTest(t) @@ -28,7 +28,7 @@ func Test_ContainerRegistry_Registry_CRUD(t *testing.T) { // Create a ContainerRegistry skuName := containerregistry.Sku_Name_Basic - acct := containerregistry.Registry{ + registry := containerregistry.Registry{ ObjectMeta: tc.MakeObjectMetaWithName(name), Spec: containerregistry.Registry_Spec{ AdminUserEnabled: &adminUserEnabled, @@ -43,16 +43,19 @@ func Test_ContainerRegistry_Registry_CRUD(t *testing.T) { }, } - tc.CreateResourcesAndWait(&acct) - defer tc.DeleteResourcesAndWait(&acct) + tc.CreateResourcesAndWait(®istry) + defer tc.DeleteResourcesAndWait(®istry) // Perform some assertions on the resources we just created - tc.Expect(acct.Status.Id).ToNot(BeNil()) - - // Update the account to ensure that works - tc.T.Log("updating tags on account") - old := acct.DeepCopy() - acct.Spec.Tags = map[string]string{"scratchcard": "lanyard"} - tc.PatchResourceAndWait(old, &acct) - tc.Expect(acct.Status.Tags).To(HaveKey("scratchcard")) + tc.Expect(registry.Status.Id).ToNot(BeNil()) + + // Update the Registry to ensure that works + tc.T.Log("updating tags on registry") + old := registry.DeepCopy() + registry.Spec.Tags = map[string]string{ + "scratchcard": "lanyard", + } + + tc.PatchResourceAndWait(old, ®istry) + tc.Expect(registry.Status.Tags).To(HaveKey("scratchcard")) } diff --git a/v2/internal/controllers/crd_containerregistry_registry_20230701_test.go b/v2/internal/controllers/crd_containerregistry_registry_20230701_test.go new file mode 100644 index 00000000000..5f0451e53c4 --- /dev/null +++ b/v2/internal/controllers/crd_containerregistry_registry_20230701_test.go @@ -0,0 +1,82 @@ +/* +Copyright (c) Microsoft Corporation. +Licensed under the MIT license. +*/ + +package controllers_test + +import ( + "testing" + + . "github.com/onsi/gomega" + + containerregistry "github.com/Azure/azure-service-operator/v2/api/containerregistry/v1api20230701" + "github.com/Azure/azure-service-operator/v2/internal/testcommon" + "github.com/Azure/azure-service-operator/v2/internal/util/to" +) + +func Test_ContainerRegistry_Registry_20230701_CRUD(t *testing.T) { + t.Parallel() + + tc := globalTestContext.ForTest(t) + + rg := tc.CreateTestResourceGroupAndWait() + + // Create a ContainerRegistry + + name := tc.NoSpaceNamer.GenerateName("registry") + zoneRedundancy := containerregistry.RegistryProperties_ZoneRedundancy_Disabled + registry := &containerregistry.Registry{ + ObjectMeta: tc.MakeObjectMetaWithName(name), + Spec: containerregistry.Registry_Spec{ + AdminUserEnabled: to.Ptr(false), + AzureName: name, + Location: tc.AzureRegion, + Owner: testcommon.AsOwner(rg), + PublicNetworkAccess: to.Ptr(containerregistry.RegistryProperties_PublicNetworkAccess_Enabled), + Sku: &containerregistry.Sku{ + Name: to.Ptr(containerregistry.Sku_Name_Premium), + }, + ZoneRedundancy: &zoneRedundancy, + }, + } + + // Create a Replication + + replication := &containerregistry.RegistryReplication{ + ObjectMeta: tc.MakeObjectMetaWithName(name), + Spec: containerregistry.RegistryReplication_Spec{ + Location: to.Ptr("australiaeast"), // Has to be different from tc.AzureRegion + Owner: testcommon.AsOwner(registry), + RegionEndpointEnabled: to.Ptr(false), + ZoneRedundancy: to.Ptr(containerregistry.ReplicationProperties_ZoneRedundancy_Disabled), + }, + } + + tc.CreateResourcesAndWait(registry, replication) + defer tc.DeleteResourcesAndWait(registry, replication) + + // Perform some assertions on the resources we just created + tc.Expect(registry.Status.Id).ToNot(BeNil()) + + // Update the registry to ensure that works + tc.T.Log("updating tags on registry") + old := registry.DeepCopy() + registry.Spec.Tags = map[string]string{ + "scratchcard": "lanyard", + } + + tc.PatchResourceAndWait(old, registry) + tc.Expect(registry.Status.Tags).To(HaveKey("scratchcard")) + + // Update the replication to make sure that works + + tc.T.Log("updating tags on replication") + oldReplication := replication.DeepCopy() + replication.Spec.Tags = map[string]string{ + "scratchcard": "lanyard", + } + + tc.PatchResourceAndWait(oldReplication, replication) + tc.Expect(replication.Status.Tags).To(HaveKey("scratchcard")) +} diff --git a/v2/internal/controllers/recordings/Test_ContainerRegistry_Registry_20210901_CRUD.yaml b/v2/internal/controllers/recordings/Test_ContainerRegistry_Registry_20210901_CRUD.yaml new file mode 100644 index 00000000000..1d2175aa21a --- /dev/null +++ b/v2/internal/controllers/recordings/Test_ContainerRegistry_Registry_20210901_CRUD.yaml @@ -0,0 +1,498 @@ +--- +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-bztcbc","tags":{"CreatedAt":"2001-02-03T04:05:06Z"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "93" + Content-Type: + - application/json + Test-Request-Hash: + - 9e0547e84e313ee4bbdfb50d09b9d040f3b5c1a9359f8ba2839ef657990182e9 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bztcbc?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-bztcbc","name":"asotest-rg-bztcbc","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: 5E61A697945A4FB4B2A241DEB5CC44D0 Ref B: MAA201060516011 Ref C: 2025-01-22T03:22:13Z' + status: 201 Created + code: 201 + duration: 4.106911558s + - 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-bztcbc?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-bztcbc","name":"asotest-rg-bztcbc","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: B0BD1DFE0F5B48188A6A699466B5A3A6 Ref B: MAA201060516011 Ref C: 2025-01-22T03:22:22Z' + status: 200 OK + code: 200 + duration: 434.212687ms + - id: 2 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 176 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"westus2","name":"asotestregistryvmsqnq","properties":{"adminUserEnabled":false,"publicNetworkAccess":"Enabled","zoneRedundancy":"Disabled"},"sku":{"name":"Basic"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "176" + Content-Type: + - application/json + Test-Request-Hash: + - db15c0277df67ab24479afef7481e9c930e7cff7d888fe4501fbc892fa6e8cde + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bztcbc/providers/Microsoft.ContainerRegistry/registries/asotestregistryvmsqnq?api-version=2021-09-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1190 + uncompressed: false + body: '{"sku":{"name":"Basic","tier":"Basic"},"type":"Microsoft.ContainerRegistry/registries","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bztcbc/providers/Microsoft.ContainerRegistry/registries/asotestregistryvmsqnq","name":"asotestregistryvmsqnq","location":"westus2","tags":{},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-01-22T03:22:31.6073503+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-01-22T03:22:31.6073503+00:00"},"properties":{"loginServer":"asotestregistryvmsqnq.azurecr.io","creationDate":"2001-02-03T04:05:06Z","provisioningState":"Succeeded","adminUserEnabled":false,"policies":{"quarantinePolicy":{"status":"disabled"},"trustPolicy":{"type":"Notary","status":"disabled"},"retentionPolicy":{"days":7,"lastUpdatedTime":"2025-01-22T03:22:39.747046+00:00","status":"disabled"},"exportPolicy":{"status":"enabled"}},"encryption":{"status":"disabled"},"dataEndpointEnabled":false,"dataEndpointHostNames":[],"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","networkRuleBypassOptions":"AzureServices","zoneRedundancy":"Disabled"}}' + headers: + Api-Supported-Versions: + - "2021-09-01" + Cache-Control: + - no-cache + Content-Length: + - "1190" + 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: + - "12000" + X-Msedge-Ref: + - 'Ref A: 341E8324A8504E04B6EC917AB2965D16 Ref B: MAA201060516011 Ref C: 2025-01-22T03:22:29Z' + status: 200 OK + code: 200 + duration: 10.50926062s + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bztcbc/providers/Microsoft.ContainerRegistry/registries/asotestregistryvmsqnq?api-version=2021-09-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1190 + uncompressed: false + body: '{"sku":{"name":"Basic","tier":"Basic"},"type":"Microsoft.ContainerRegistry/registries","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bztcbc/providers/Microsoft.ContainerRegistry/registries/asotestregistryvmsqnq","name":"asotestregistryvmsqnq","location":"westus2","tags":{},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-01-22T03:22:31.6073503+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-01-22T03:22:31.6073503+00:00"},"properties":{"loginServer":"asotestregistryvmsqnq.azurecr.io","creationDate":"2001-02-03T04:05:06Z","provisioningState":"Succeeded","adminUserEnabled":false,"policies":{"quarantinePolicy":{"status":"disabled"},"trustPolicy":{"type":"Notary","status":"disabled"},"retentionPolicy":{"days":7,"lastUpdatedTime":"2025-01-22T03:22:39.747046+00:00","status":"disabled"},"exportPolicy":{"status":"enabled"}},"encryption":{"status":"disabled"},"dataEndpointEnabled":false,"dataEndpointHostNames":[],"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","networkRuleBypassOptions":"AzureServices","zoneRedundancy":"Disabled"}}' + headers: + Api-Supported-Versions: + - "2021-09-01" + Cache-Control: + - no-cache + Content-Length: + - "1190" + 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: B6674E1BAA254A629FCDC8E42A34484E Ref B: MAA201060516011 Ref C: 2025-01-22T03:22:51Z' + status: 200 OK + code: 200 + duration: 927.588063ms + - id: 4 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 209 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"westus2","name":"asotestregistryvmsqnq","properties":{"adminUserEnabled":false,"publicNetworkAccess":"Enabled","zoneRedundancy":"Disabled"},"sku":{"name":"Basic"},"tags":{"scratchcard":"lanyard"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "209" + Content-Type: + - application/json + Test-Request-Hash: + - fdd5c32fb1060997acff0061d5e4c100a72dc727c1a2b39bfd0097662831de4a + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bztcbc/providers/Microsoft.ContainerRegistry/registries/asotestregistryvmsqnq?api-version=2021-09-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1213 + uncompressed: false + body: '{"sku":{"name":"Basic","tier":"Basic"},"type":"Microsoft.ContainerRegistry/registries","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bztcbc/providers/Microsoft.ContainerRegistry/registries/asotestregistryvmsqnq","name":"asotestregistryvmsqnq","location":"westus2","tags":{"scratchcard":"lanyard"},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-01-22T03:22:31.6073503+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-01-22T03:22:56.9399631+00:00"},"properties":{"loginServer":"asotestregistryvmsqnq.azurecr.io","creationDate":"2001-02-03T04:05:06Z","provisioningState":"Succeeded","adminUserEnabled":false,"policies":{"quarantinePolicy":{"status":"disabled"},"trustPolicy":{"type":"Notary","status":"disabled"},"retentionPolicy":{"days":7,"lastUpdatedTime":"2025-01-22T03:22:57.464901+00:00","status":"disabled"},"exportPolicy":{"status":"enabled"}},"encryption":{"status":"disabled"},"dataEndpointEnabled":false,"dataEndpointHostNames":[],"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","networkRuleBypassOptions":"AzureServices","zoneRedundancy":"Disabled"}}' + headers: + Api-Supported-Versions: + - "2021-09-01" + Cache-Control: + - no-cache + Content-Length: + - "1213" + 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: B2E1873FA3E84AD2AEB903CC0D61BE93 Ref B: MAA201060516011 Ref C: 2025-01-22T03:22:54Z' + status: 200 OK + code: 200 + duration: 4.415456241s + - 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: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bztcbc/providers/Microsoft.ContainerRegistry/registries/asotestregistryvmsqnq?api-version=2021-09-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1213 + uncompressed: false + body: '{"sku":{"name":"Basic","tier":"Basic"},"type":"Microsoft.ContainerRegistry/registries","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bztcbc/providers/Microsoft.ContainerRegistry/registries/asotestregistryvmsqnq","name":"asotestregistryvmsqnq","location":"westus2","tags":{"scratchcard":"lanyard"},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-01-22T03:22:31.6073503+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-01-22T03:22:56.9399631+00:00"},"properties":{"loginServer":"asotestregistryvmsqnq.azurecr.io","creationDate":"2001-02-03T04:05:06Z","provisioningState":"Succeeded","adminUserEnabled":false,"policies":{"quarantinePolicy":{"status":"disabled"},"trustPolicy":{"type":"Notary","status":"disabled"},"retentionPolicy":{"days":7,"lastUpdatedTime":"2025-01-22T03:22:57.464901+00:00","status":"disabled"},"exportPolicy":{"status":"enabled"}},"encryption":{"status":"disabled"},"dataEndpointEnabled":false,"dataEndpointHostNames":[],"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","networkRuleBypassOptions":"AzureServices","zoneRedundancy":"Disabled"}}' + headers: + Api-Supported-Versions: + - "2021-09-01" + Cache-Control: + - no-cache + Content-Length: + - "1213" + 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: C73ADB9F631B423798A0A201A329FAAD Ref B: MAA201060516011 Ref C: 2025-01-22T03:23:04Z' + status: 200 OK + code: 200 + duration: 928.171628ms + - id: 6 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bztcbc/providers/Microsoft.ContainerRegistry/registries/asotestregistryvmsqnq?api-version=2021-09-01 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 0 + uncompressed: false + body: "" + headers: + Api-Supported-Versions: + - "2021-09-01" + 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-Deletes: + - "12000" + X-Msedge-Ref: + - 'Ref A: 459F62E445574959B22500F3A9DCD4EF Ref B: MAA201060516011 Ref C: 2025-01-22T03:23:10Z' + status: 200 OK + code: 200 + duration: 13.181969356s + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-bztcbc?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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRCWlRDQkMtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731130279843156&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=vURfCYGqEI2MwBvDwExkqHcfM-AeGiMPSC2_IOeJ1SBNpKjeGreI1KPU_uUA_RzFwM3h-NFevHXMTMCTlJZo6Z7DWfgZ6XpsWHRu19znwxsd31GGlky6sb--TeAWBAAPwrtY2jfGo0WI-Cd6BXjNj8x6j5J3UShNQcrocZtzMbnBXo-9BG2RFPqxU9aJdx2POs5w8Zo07ok9T8obTjx94OXRK1Hw9YhhG_a5WkM5frqcs84pVnVIVX6-C_ikU3mytDKB-RpqXVnpSQ6pUYfJRZjAYU5hypVjonhDDYgDNwLBVf77FAUL_xw3ya93-zrzwZqgtgUDSd952oKf8TrUcA&h=LMeizBGDkZ2adPFJLmgmTkm_SWQ_RNZkMXPgH6jgoiY + 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: 855BD58B406C4504908DE749626252F0 Ref B: MAA201060516011 Ref C: 2025-01-22T03:23:42Z' + status: 202 Accepted + code: 202 + duration: 4.983588942s + - id: 8 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRCWlRDQkMtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731130279843156&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=vURfCYGqEI2MwBvDwExkqHcfM-AeGiMPSC2_IOeJ1SBNpKjeGreI1KPU_uUA_RzFwM3h-NFevHXMTMCTlJZo6Z7DWfgZ6XpsWHRu19znwxsd31GGlky6sb--TeAWBAAPwrtY2jfGo0WI-Cd6BXjNj8x6j5J3UShNQcrocZtzMbnBXo-9BG2RFPqxU9aJdx2POs5w8Zo07ok9T8obTjx94OXRK1Hw9YhhG_a5WkM5frqcs84pVnVIVX6-C_ikU3mytDKB-RpqXVnpSQ6pUYfJRZjAYU5hypVjonhDDYgDNwLBVf77FAUL_xw3ya93-zrzwZqgtgUDSd952oKf8TrUcA&h=LMeizBGDkZ2adPFJLmgmTkm_SWQ_RNZkMXPgH6jgoiY + 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: C55FAE201E3C4607BC0FC35F4BB48FE7 Ref B: MAA201060516011 Ref C: 2025-01-22T03:24:09Z' + status: 200 OK + code: 200 + duration: 1.171906089s diff --git a/v2/internal/controllers/recordings/Test_ContainerRegistry_Registry_20230701_CRUD.yaml b/v2/internal/controllers/recordings/Test_ContainerRegistry_Registry_20230701_CRUD.yaml new file mode 100644 index 00000000000..470be268617 --- /dev/null +++ b/v2/internal/controllers/recordings/Test_ContainerRegistry_Registry_20230701_CRUD.yaml @@ -0,0 +1,1343 @@ +--- +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-dwfzom","tags":{"CreatedAt":"2001-02-03T04:05:06Z"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "93" + Content-Type: + - application/json + Test-Request-Hash: + - 1b1498f80ebd8236b0d8d2c94effcd136f80d696119ec98112ae72157cd41ad7 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom?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-dwfzom","name":"asotest-rg-dwfzom","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: CBA7C6A1E5A34AD9AAD963CE31DB096A Ref B: MAA201060515039 Ref C: 2025-01-22T03:43:08Z' + status: 201 Created + code: 201 + duration: 4.744531853s + - 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-dwfzom?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-dwfzom","name":"asotest-rg-dwfzom","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: 5709CB893A3A4A8A88684122FFAD54FF Ref B: MAA201060515039 Ref C: 2025-01-22T03:43:17Z' + status: 200 OK + code: 200 + duration: 391.332457ms + - id: 2 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 178 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"westus2","name":"asotestregistrymhmunv","properties":{"adminUserEnabled":false,"publicNetworkAccess":"Enabled","zoneRedundancy":"Disabled"},"sku":{"name":"Premium"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "178" + Content-Type: + - application/json + Test-Request-Hash: + - 910fcbf2b0f43bc69825767f00e2fff724eab6dd37716594dc4cf8f1dd1cfae8 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv?api-version=2023-07-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1449 + uncompressed: false + body: '{"sku":{"name":"Premium","tier":"Premium"},"type":"Microsoft.ContainerRegistry/registries","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv","name":"asotestregistrymhmunv","location":"westus2","tags":{},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-01-22T03:43:23.7509496+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-01-22T03:43:23.7509496+00:00"},"properties":{"loginServer":"asotestregistrymhmunv.azurecr.io","creationDate":"2001-02-03T04:05:06Z","provisioningState":"Succeeded","adminUserEnabled":false,"networkRuleSet":{"defaultAction":"Allow","ipRules":[]},"policies":{"quarantinePolicy":{"status":"disabled"},"trustPolicy":{"type":"Notary","status":"disabled"},"retentionPolicy":{"days":7,"lastUpdatedTime":"2025-01-22T03:43:26.8992959+00:00","status":"disabled"},"exportPolicy":{"status":"enabled"},"azureADAuthenticationAsArmPolicy":{"status":"enabled"},"softDeletePolicy":{"retentionDays":7,"lastUpdatedTime":"2025-01-22T03:43:26.8993379+00:00","status":"disabled"}},"encryption":{"status":"disabled"},"dataEndpointEnabled":false,"dataEndpointHostNames":[],"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","networkRuleBypassOptions":"AzureServices","zoneRedundancy":"Disabled","anonymousPullEnabled":false}}' + headers: + Api-Supported-Versions: + - "2023-07-01" + Cache-Control: + - no-cache + Content-Length: + - "1449" + 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: + - "12000" + X-Msedge-Ref: + - 'Ref A: CB6282CF4464453CA7D33E0EA5327CA2 Ref B: MAA201060515039 Ref C: 2025-01-22T03:43:21Z' + status: 200 OK + code: 200 + duration: 5.742986077s + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv?api-version=2023-07-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1449 + uncompressed: false + body: '{"sku":{"name":"Premium","tier":"Premium"},"type":"Microsoft.ContainerRegistry/registries","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv","name":"asotestregistrymhmunv","location":"westus2","tags":{},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-01-22T03:43:23.7509496+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-01-22T03:43:23.7509496+00:00"},"properties":{"loginServer":"asotestregistrymhmunv.azurecr.io","creationDate":"2001-02-03T04:05:06Z","provisioningState":"Succeeded","adminUserEnabled":false,"networkRuleSet":{"defaultAction":"Allow","ipRules":[]},"policies":{"quarantinePolicy":{"status":"disabled"},"trustPolicy":{"type":"Notary","status":"disabled"},"retentionPolicy":{"days":7,"lastUpdatedTime":"2025-01-22T03:43:26.8992959+00:00","status":"disabled"},"exportPolicy":{"status":"enabled"},"azureADAuthenticationAsArmPolicy":{"status":"enabled"},"softDeletePolicy":{"retentionDays":7,"lastUpdatedTime":"2025-01-22T03:43:26.8993379+00:00","status":"disabled"}},"encryption":{"status":"disabled"},"dataEndpointEnabled":false,"dataEndpointHostNames":[],"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","networkRuleBypassOptions":"AzureServices","zoneRedundancy":"Disabled","anonymousPullEnabled":false}}' + headers: + Api-Supported-Versions: + - "2023-07-01" + Cache-Control: + - no-cache + Content-Length: + - "1449" + 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: 940B7ABF46C346C6B3CF63E18081A71D Ref B: MAA201060515039 Ref C: 2025-01-22T03:43:33Z' + status: 200 OK + code: 200 + duration: 920.8402ms + - id: 4 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 132 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"australiaeast","name":"asotestregistrymhmunv","properties":{"regionEndpointEnabled":false,"zoneRedundancy":"Disabled"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "132" + Content-Type: + - application/json + Test-Request-Hash: + - f35ce0e9f958cb930a2d1af45d6e6f1617233d8e3bbf08754712d51ddf7f8a5b + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv?api-version=2023-07-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 728 + uncompressed: false + body: '{"type":"Microsoft.ContainerRegistry/registries/replications","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv","name":"asotestregistrymhmunv","location":"australiaeast","tags":{},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-01-22T03:43:41.5621442+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-01-22T03:43:41.5621442+00:00"},"properties":{"provisioningState":"Creating","status":{"timestamp":"2001-02-03T04:05:06Z"},"regionEndpointEnabled":false,"zoneRedundancy":"Disabled"}}' + headers: + Api-Supported-Versions: + - 2020-11-01-preview, 2021-06-01-preview, 2021-08-01-preview, 2021-09-01, 2021-12-01-preview, 2022-02-01-preview, 2022-12-01, 2023-01-01-preview, 2023-06-01-preview, 2023-07-01, 2023-08-01-preview, 2023-11-01-preview, 2024-01-01-preview, 2024-11-01-preview + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv/operationStatuses/replications-3d1da8af-b6e1-477d-a7e4-bbef4f54bb4f?api-version=2023-07-01&t=638731142249528965&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=jOL-dII7J9zWjAdal4OKNTUHL-SF-Ql33Iovr_6p6F9lMqDW2z7CsoXAFZVBFzpvWRsv_7sasF3-_T10393VdQD921OyglD3eov59QzPhtQelTmSNNQcTi6zjYzoZ1aWkl70dZ4fJBxRPQECq6vc8uzALE02aUYaVxd-60T5LFcHSKRQVwzrwV3c-CR_NMd-WhZfAnX4A8mf_MVp2SqBOFPQM386a18gJWzTpKzxg2591AWuuH-833YXDqRcHLZgu8EnwUExRk7g5VO-Xx3i7sUaga-PMJt0dds6y4M08po8ubM0eGIgDrSKqQj9PA7Srudk5YiRlvyGgYLWr6XC8Q&h=hyeBVX7GCHcKJJdRkUxPbkgKrmpQQ3zK-cTZ-KTRx6s + Cache-Control: + - no-cache + Content-Length: + - "728" + 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-Ratelimit-Remaining-Subscription-Global-Writes: + - "12000" + X-Msedge-Ref: + - 'Ref A: ACA17CD19F6C4163AA2A14B2E181019F Ref B: MAA201060515039 Ref C: 2025-01-22T03:43:38Z' + status: 201 Created + code: 201 + duration: 6.235856408s + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv/operationStatuses/replications-3d1da8af-b6e1-477d-a7e4-bbef4f54bb4f?api-version=2023-07-01&t=638731142249528965&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=jOL-dII7J9zWjAdal4OKNTUHL-SF-Ql33Iovr_6p6F9lMqDW2z7CsoXAFZVBFzpvWRsv_7sasF3-_T10393VdQD921OyglD3eov59QzPhtQelTmSNNQcTi6zjYzoZ1aWkl70dZ4fJBxRPQECq6vc8uzALE02aUYaVxd-60T5LFcHSKRQVwzrwV3c-CR_NMd-WhZfAnX4A8mf_MVp2SqBOFPQM386a18gJWzTpKzxg2591AWuuH-833YXDqRcHLZgu8EnwUExRk7g5VO-Xx3i7sUaga-PMJt0dds6y4M08po8ubM0eGIgDrSKqQj9PA7Srudk5YiRlvyGgYLWr6XC8Q&h=hyeBVX7GCHcKJJdRkUxPbkgKrmpQQ3zK-cTZ-KTRx6s + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 21 + uncompressed: false + body: '{"status":"Creating"}' + headers: + Api-Supported-Versions: + - 2020-11-01-preview, 2021-06-01-preview, 2021-08-01-preview, 2021-09-01, 2021-12-01-preview, 2022-02-01-preview, 2022-12-01, 2023-01-01-preview, 2023-06-01-preview, 2023-07-01, 2023-08-01-preview, 2023-11-01-preview, 2024-01-01-preview, 2024-11-01-preview + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv/operationStatuses/replications-3d1da8af-b6e1-477d-a7e4-bbef4f54bb4f?api-version=2023-07-01&t=638731142336748365&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=tbfJ1cWIAQ2TU0WdAMFo1wL5veyVQOX9bRBt7BOvcrXD9LBIDtsovJ8tnQ1Rde3Y4r3AQVv8YjRyCgUPHJmv8DcMU_XVv1G0x7yJgeNrhOmEZD2jV1eL7D5irnr6bL0jbP7HvSjz5_j3ZKd2do5x3kyGUiTGd2Yxyx_NIRYGgr_m5gVvPFpyTKA5UgC7ErZbXRIFCbeZVUkayugJ_tDBbz9-6I_FAzVjnA9IVdTcUjtrveVLTeRKVp7ICQm9QA7TxDAmW_dM5gYZvcYRvAhmTGTxZNqHt6y-EXY-c8jo_nM07Hc0EwnlqWwxqGtrPvI3eBfLiWq6aWGyjIWB6SC-GQ&h=12yCSFzBUh-NFj4ygjVhJGQYR698VH18j6l-TSH0HHY + Cache-Control: + - no-cache + Content-Length: + - "21" + 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-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 3B374780F9DA4CDB965B0EAAA42FC3D1 Ref B: MAA201060515039 Ref C: 2025-01-22T03:43:52Z' + status: 200 OK + code: 200 + duration: 880.964401ms + - 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/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv/operationStatuses/replications-3d1da8af-b6e1-477d-a7e4-bbef4f54bb4f?api-version=2023-07-01&t=638731142249528965&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=jOL-dII7J9zWjAdal4OKNTUHL-SF-Ql33Iovr_6p6F9lMqDW2z7CsoXAFZVBFzpvWRsv_7sasF3-_T10393VdQD921OyglD3eov59QzPhtQelTmSNNQcTi6zjYzoZ1aWkl70dZ4fJBxRPQECq6vc8uzALE02aUYaVxd-60T5LFcHSKRQVwzrwV3c-CR_NMd-WhZfAnX4A8mf_MVp2SqBOFPQM386a18gJWzTpKzxg2591AWuuH-833YXDqRcHLZgu8EnwUExRk7g5VO-Xx3i7sUaga-PMJt0dds6y4M08po8ubM0eGIgDrSKqQj9PA7Srudk5YiRlvyGgYLWr6XC8Q&h=hyeBVX7GCHcKJJdRkUxPbkgKrmpQQ3zK-cTZ-KTRx6s + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 21 + uncompressed: false + body: '{"status":"Creating"}' + headers: + Api-Supported-Versions: + - 2020-11-01-preview, 2021-06-01-preview, 2021-08-01-preview, 2021-09-01, 2021-12-01-preview, 2022-02-01-preview, 2022-12-01, 2023-01-01-preview, 2023-06-01-preview, 2023-07-01, 2023-08-01-preview, 2023-11-01-preview, 2024-01-01-preview, 2024-11-01-preview + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv/operationStatuses/replications-3d1da8af-b6e1-477d-a7e4-bbef4f54bb4f?api-version=2023-07-01&t=638731142462877540&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=W3lgPYErHYTRnKmsbYRrR1Avxt2h0QRTV_tsf82q3kmEEvvzqJA6oPnKqm-gkGKfI-0Fu8G8YuhoMJicgeBGH8CBI11KHXKh6CKIJB0sZHPRs37C9UkhvCV2lz-7XvtTmjlGN-KrNZu4qYvguY3fCp4XyQDGGm-adj-ZtJQvY6aEkRco9wKBsQfycw94Y6-2ARtSQwvJrBfa3wcZCoNk7-G1fihXjKl0MMsbJzxauUJE1naUjdf4DKBgJHIkJZTXOWncTRez-gSH-gHJ7UynKkMrh_Lli8A870uYlgM0qGgZjNWg5_1aNsO_Ge8r6MYi1U5Wyon70hKjc_c6vVBnIA&h=vFqsOVxnUrpb6f6nXi45RXGrMAFu32BnvI9IsZGtktc + Cache-Control: + - no-cache + Content-Length: + - "21" + 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-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 0E3AAA05B41045C0AA45F74B363CFA2F Ref B: MAA201060515039 Ref C: 2025-01-22T03:44:05Z' + status: 200 OK + code: 200 + duration: 830.434294ms + - 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/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv/operationStatuses/replications-3d1da8af-b6e1-477d-a7e4-bbef4f54bb4f?api-version=2023-07-01&t=638731142249528965&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=jOL-dII7J9zWjAdal4OKNTUHL-SF-Ql33Iovr_6p6F9lMqDW2z7CsoXAFZVBFzpvWRsv_7sasF3-_T10393VdQD921OyglD3eov59QzPhtQelTmSNNQcTi6zjYzoZ1aWkl70dZ4fJBxRPQECq6vc8uzALE02aUYaVxd-60T5LFcHSKRQVwzrwV3c-CR_NMd-WhZfAnX4A8mf_MVp2SqBOFPQM386a18gJWzTpKzxg2591AWuuH-833YXDqRcHLZgu8EnwUExRk7g5VO-Xx3i7sUaga-PMJt0dds6y4M08po8ubM0eGIgDrSKqQj9PA7Srudk5YiRlvyGgYLWr6XC8Q&h=hyeBVX7GCHcKJJdRkUxPbkgKrmpQQ3zK-cTZ-KTRx6s + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 21 + uncompressed: false + body: '{"status":"Creating"}' + headers: + Api-Supported-Versions: + - 2020-11-01-preview, 2021-06-01-preview, 2021-08-01-preview, 2021-09-01, 2021-12-01-preview, 2022-02-01-preview, 2022-12-01, 2023-01-01-preview, 2023-06-01-preview, 2023-07-01, 2023-08-01-preview, 2023-11-01-preview, 2024-01-01-preview, 2024-11-01-preview + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv/operationStatuses/replications-3d1da8af-b6e1-477d-a7e4-bbef4f54bb4f?api-version=2023-07-01&t=638731142588008610&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=pl-mnKlZq8RrC8uVHlJ-9-62VrVUXbtCj2NvBNuxHJpmNEker0BCd7jV4cagkpM8lHhYUB9jIg4h_IOJm25F2u2BLrkNNdRJl1M-EjU9yr5ihlPVWmhT1Z1Cs4i1ml7lRYJnmqAmaNMpqhp4awdAT6ywZ7M9FYeV2Cq3_KghuOJ7XzLJNb2Et8xtjoCKKrcVoT5RWSSessEoNgbsdVEhJ7erW46CD-qlVj0pP9Km4XIq2QmochjAywxqow5uxxoq2nXxdKvF8Vd_W8bt5VveVsqYl72ThB6y5peII2JSMaD4D728kVCPtS3mPY5M1wMCO15R6FCdyWlnHKcqkGHQrg&h=pElMfDxDWVkHyPYNTeGQBfy1-Bkx-rF7a1vBa1GfgYk + Cache-Control: + - no-cache + Content-Length: + - "21" + 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-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: E371BE222EF84B19A209755011503664 Ref B: MAA201060515039 Ref C: 2025-01-22T03:44:18Z' + status: 200 OK + code: 200 + duration: 700.155809ms + - 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/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv/operationStatuses/replications-3d1da8af-b6e1-477d-a7e4-bbef4f54bb4f?api-version=2023-07-01&t=638731142249528965&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=jOL-dII7J9zWjAdal4OKNTUHL-SF-Ql33Iovr_6p6F9lMqDW2z7CsoXAFZVBFzpvWRsv_7sasF3-_T10393VdQD921OyglD3eov59QzPhtQelTmSNNQcTi6zjYzoZ1aWkl70dZ4fJBxRPQECq6vc8uzALE02aUYaVxd-60T5LFcHSKRQVwzrwV3c-CR_NMd-WhZfAnX4A8mf_MVp2SqBOFPQM386a18gJWzTpKzxg2591AWuuH-833YXDqRcHLZgu8EnwUExRk7g5VO-Xx3i7sUaga-PMJt0dds6y4M08po8ubM0eGIgDrSKqQj9PA7Srudk5YiRlvyGgYLWr6XC8Q&h=hyeBVX7GCHcKJJdRkUxPbkgKrmpQQ3zK-cTZ-KTRx6s + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 21 + uncompressed: false + body: '{"status":"Creating"}' + headers: + Api-Supported-Versions: + - 2020-11-01-preview, 2021-06-01-preview, 2021-08-01-preview, 2021-09-01, 2021-12-01-preview, 2022-02-01-preview, 2022-12-01, 2023-01-01-preview, 2023-06-01-preview, 2023-07-01, 2023-08-01-preview, 2023-11-01-preview, 2024-01-01-preview, 2024-11-01-preview + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv/operationStatuses/replications-3d1da8af-b6e1-477d-a7e4-bbef4f54bb4f?api-version=2023-07-01&t=638731142712094433&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=sjHuyJVuhyKwJInqgfZPIOU-6rC5esl1Z1jaipxj12SPVnbPD-5YORGF8f9BuxIShaLdvoWOY1IjzV0elKdf9qXl4nm1lWUiC2uR5J5GEQzKVAtI70NQ6yJIfigTArM477_Y6rDr5oZI_w1r2zNjw-PQaO08CNn-NpgioJEem2_Z-9NvEnyULneiNGEijift0e8nkZMGLq7bMmGKTmNQROwy9b1_czoWyfweVaP8B1NPCtWLQZqT3vL4O4wObmOkZQr-TWwkz8Utw85GonQbxPEBMOyt5p4UVMuuZvAt7xPLIvz_UoFGysBGAbREQJ0fbbLdzQLAgFagqg0L0qUouA&h=zGvEHSPIUt6aXohlYs_eU5-OtPIBShE3A0Rl4YadCP4 + Cache-Control: + - no-cache + Content-Length: + - "21" + 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-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: D16DFCDA2D254DA3BF96E8174A1B5EBC Ref B: MAA201060515039 Ref C: 2025-01-22T03:44:30Z' + status: 200 OK + code: 200 + duration: 823.997977ms + - 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: + - "4" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv/operationStatuses/replications-3d1da8af-b6e1-477d-a7e4-bbef4f54bb4f?api-version=2023-07-01&t=638731142249528965&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=jOL-dII7J9zWjAdal4OKNTUHL-SF-Ql33Iovr_6p6F9lMqDW2z7CsoXAFZVBFzpvWRsv_7sasF3-_T10393VdQD921OyglD3eov59QzPhtQelTmSNNQcTi6zjYzoZ1aWkl70dZ4fJBxRPQECq6vc8uzALE02aUYaVxd-60T5LFcHSKRQVwzrwV3c-CR_NMd-WhZfAnX4A8mf_MVp2SqBOFPQM386a18gJWzTpKzxg2591AWuuH-833YXDqRcHLZgu8EnwUExRk7g5VO-Xx3i7sUaga-PMJt0dds6y4M08po8ubM0eGIgDrSKqQj9PA7Srudk5YiRlvyGgYLWr6XC8Q&h=hyeBVX7GCHcKJJdRkUxPbkgKrmpQQ3zK-cTZ-KTRx6s + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 21 + uncompressed: false + body: '{"status":"Creating"}' + headers: + Api-Supported-Versions: + - 2020-11-01-preview, 2021-06-01-preview, 2021-08-01-preview, 2021-09-01, 2021-12-01-preview, 2022-02-01-preview, 2022-12-01, 2023-01-01-preview, 2023-06-01-preview, 2023-07-01, 2023-08-01-preview, 2023-11-01-preview, 2024-01-01-preview, 2024-11-01-preview + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv/operationStatuses/replications-3d1da8af-b6e1-477d-a7e4-bbef4f54bb4f?api-version=2023-07-01&t=638731142838678127&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=rYUcjHfTDzaFrs-T131qJKW2BwpRAz8Zbf_tO4ES5hCT5MfCbcg5-MnIbvERT_mYYw6n495S59wJgavbatAoson9YXhY1nWZ9-AgQ7SIZ6HaLAZEDD3yDzqDBcdeputRaJJSNcr9Bdf9kYd2Oit7wt-MJiHLDOOOeUj9WxOsXbjqrVJig3hY13Xv39O2exR1AHJWMGG3KE3W4kkCoEX5jAqPR986_DBFoK5_Ns6WKvX5IwbH-S6w7wZClFvrjcj6KzW6T-WpoDXA9JH_tYOVigf10fhvMw7wva9O6PLkXy6rXq-s0rKgCbBhnlrX-vqwyJuwsHNqhQ2t9NTKmIVXeQ&h=-8EnHrm18CZVrYJbdugvW7lyoEUsYxBWz0XaalpDg6U + Cache-Control: + - no-cache + Content-Length: + - "21" + 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-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 06D5255BFF7944FC8E01FC70197924AF Ref B: MAA201060515039 Ref C: 2025-01-22T03:44:43Z' + status: 200 OK + code: 200 + duration: 1.07292387s + - id: 10 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "5" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv/operationStatuses/replications-3d1da8af-b6e1-477d-a7e4-bbef4f54bb4f?api-version=2023-07-01&t=638731142249528965&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=jOL-dII7J9zWjAdal4OKNTUHL-SF-Ql33Iovr_6p6F9lMqDW2z7CsoXAFZVBFzpvWRsv_7sasF3-_T10393VdQD921OyglD3eov59QzPhtQelTmSNNQcTi6zjYzoZ1aWkl70dZ4fJBxRPQECq6vc8uzALE02aUYaVxd-60T5LFcHSKRQVwzrwV3c-CR_NMd-WhZfAnX4A8mf_MVp2SqBOFPQM386a18gJWzTpKzxg2591AWuuH-833YXDqRcHLZgu8EnwUExRk7g5VO-Xx3i7sUaga-PMJt0dds6y4M08po8ubM0eGIgDrSKqQj9PA7Srudk5YiRlvyGgYLWr6XC8Q&h=hyeBVX7GCHcKJJdRkUxPbkgKrmpQQ3zK-cTZ-KTRx6s + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 21 + uncompressed: false + body: '{"status":"Creating"}' + headers: + Api-Supported-Versions: + - 2020-11-01-preview, 2021-06-01-preview, 2021-08-01-preview, 2021-09-01, 2021-12-01-preview, 2022-02-01-preview, 2022-12-01, 2023-01-01-preview, 2023-06-01-preview, 2023-07-01, 2023-08-01-preview, 2023-11-01-preview, 2024-01-01-preview, 2024-11-01-preview + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv/operationStatuses/replications-3d1da8af-b6e1-477d-a7e4-bbef4f54bb4f?api-version=2023-07-01&t=638731142967305094&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=XcAJ1ft26xRkP6fuVfgvDsRjus7-54VTFEQvZCvtMn79C5RyjApSzD3ILnreoK3rfQjgj9501erOOeZucMNTtOnJscJqs4ft_Galzttwz1fk5lStZHpUo716U7er03y56ALwTU5jEKSP4g0mZ3RH4mk2MpnCnT2XvEUCSTIxh-TrT_OBY-Oj7tyU8Khp9iG7BAMGYNTJ1AHoR3KNnwi5ztWRPv3mdDTshSA1cUIFrdjaLgoyBrxjDNqG0vIZR3vznSS1C1F2Ba1bcwHnrEXrF1DQRvbsxn7zjWPj-AVxRSn2heVH13fHo8pTlbeZ1AhsU8-drEedOkEAIRtOcD8z8g&h=Ja9J5mxNr63fIiKYNHN4lwZri5bdsX46VbUDCRZWqJk + Cache-Control: + - no-cache + Content-Length: + - "21" + 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-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 9D0E92A4926648D9B960420E8901D59A Ref B: MAA201060515039 Ref C: 2025-01-22T03:44:56Z' + status: 200 OK + code: 200 + duration: 815.111128ms + - id: 11 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "6" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv/operationStatuses/replications-3d1da8af-b6e1-477d-a7e4-bbef4f54bb4f?api-version=2023-07-01&t=638731142249528965&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=jOL-dII7J9zWjAdal4OKNTUHL-SF-Ql33Iovr_6p6F9lMqDW2z7CsoXAFZVBFzpvWRsv_7sasF3-_T10393VdQD921OyglD3eov59QzPhtQelTmSNNQcTi6zjYzoZ1aWkl70dZ4fJBxRPQECq6vc8uzALE02aUYaVxd-60T5LFcHSKRQVwzrwV3c-CR_NMd-WhZfAnX4A8mf_MVp2SqBOFPQM386a18gJWzTpKzxg2591AWuuH-833YXDqRcHLZgu8EnwUExRk7g5VO-Xx3i7sUaga-PMJt0dds6y4M08po8ubM0eGIgDrSKqQj9PA7Srudk5YiRlvyGgYLWr6XC8Q&h=hyeBVX7GCHcKJJdRkUxPbkgKrmpQQ3zK-cTZ-KTRx6s + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 21 + uncompressed: false + body: '{"status":"Creating"}' + headers: + Api-Supported-Versions: + - 2020-11-01-preview, 2021-06-01-preview, 2021-08-01-preview, 2021-09-01, 2021-12-01-preview, 2022-02-01-preview, 2022-12-01, 2023-01-01-preview, 2023-06-01-preview, 2023-07-01, 2023-08-01-preview, 2023-11-01-preview, 2024-01-01-preview, 2024-11-01-preview + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv/operationStatuses/replications-3d1da8af-b6e1-477d-a7e4-bbef4f54bb4f?api-version=2023-07-01&t=638731143093095105&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=rJITM8ooOgSxiz3yiobXTVtCL3GA7UCJKKKqhysQeJuZSg9hS0dFYXJnKpULsJWmSvvkWQ2EHGgYi1OuXXOUTnntoHCOw_SqqqG4VDbrb0Ty_xVa3BbQBlEwF1q3uxDvN1P2ZsTqyLU-iE_3FWEaNBWKYYatDQpGlga33abYFrH_ypeiHeMp1mH_VG-UkwMScroaozWwnex-0zvqcQbSVvebc3xXQiPwqgPCzlC78We8k8Zii-mwl1nJab0XtHoIZm3PMGmcamXJnci2sbNwbBKXV27Py7Rxl85PO-7-rxJoo42hfxhwCuHRBvGf86aNudViEDFKmXrRxvufY-wyoQ&h=8AsWdLQZFPjNDUUH8-zmmI0L6INaEZ_VI3rFSE4N7gE + Cache-Control: + - no-cache + Content-Length: + - "21" + 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-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 37A075299B5B4C6CBDBCF8328D276533 Ref B: MAA201060515039 Ref C: 2025-01-22T03:45:08Z' + status: 200 OK + code: 200 + duration: 963.743818ms + - id: 12 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "7" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv/operationStatuses/replications-3d1da8af-b6e1-477d-a7e4-bbef4f54bb4f?api-version=2023-07-01&t=638731142249528965&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=jOL-dII7J9zWjAdal4OKNTUHL-SF-Ql33Iovr_6p6F9lMqDW2z7CsoXAFZVBFzpvWRsv_7sasF3-_T10393VdQD921OyglD3eov59QzPhtQelTmSNNQcTi6zjYzoZ1aWkl70dZ4fJBxRPQECq6vc8uzALE02aUYaVxd-60T5LFcHSKRQVwzrwV3c-CR_NMd-WhZfAnX4A8mf_MVp2SqBOFPQM386a18gJWzTpKzxg2591AWuuH-833YXDqRcHLZgu8EnwUExRk7g5VO-Xx3i7sUaga-PMJt0dds6y4M08po8ubM0eGIgDrSKqQj9PA7Srudk5YiRlvyGgYLWr6XC8Q&h=hyeBVX7GCHcKJJdRkUxPbkgKrmpQQ3zK-cTZ-KTRx6s + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 22 + uncompressed: false + body: '{"status":"Succeeded"}' + headers: + Api-Supported-Versions: + - 2020-11-01-preview, 2021-06-01-preview, 2021-08-01-preview, 2021-09-01, 2021-12-01-preview, 2022-02-01-preview, 2022-12-01, 2023-01-01-preview, 2023-06-01-preview, 2023-07-01, 2023-08-01-preview, 2023-11-01-preview, 2024-01-01-preview, 2024-11-01-preview + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv/operationStatuses/replications-3d1da8af-b6e1-477d-a7e4-bbef4f54bb4f?api-version=2023-07-01&t=638731143220981853&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=QqhsslieP2zdgpzs8g0XEx6wKQ8_y-HN44p3TCorRbg6dHJW2yAC4T4P4D7LdrohnkI4fMpjbCi_h2szXWrFXW04D2VKEOhG2rFJgC-shdum-zLNBa3Nudp7bwkf7WqOkeNTLdSvrYLF-CVLYqSld4jwxJJ-VLeZh5JFgms1t6uffufw6wYbz1r7HkTZTlneHFs-nXhnYNH3aMk9zUerXuLw2m71Iy4-KEHvC-Q10sA4v9NcFj_BaeFJ1AfcSWbt285F51nQQpuf-cNUfN6jnR3Dr8hk0zqYSL-NcVwFEiYalG_sien527iMKoKOSNJjAOpDyWCTxN3_4tmnarXKXg&h=ZlypSCvl8Kr-tL3dhTJ61r0RGThO3j489_3pg08nubo + Cache-Control: + - no-cache + Content-Length: + - "22" + 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-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: 4FB9CE8CBDBB40199E7A985C4A73A35E Ref B: MAA201060515039 Ref C: 2025-01-22T03:45:21Z' + status: 200 OK + code: 200 + duration: 777.052769ms + - 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/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv?api-version=2023-07-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 753 + uncompressed: false + body: '{"type":"Microsoft.ContainerRegistry/registries/replications","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv","name":"asotestregistrymhmunv","location":"australiaeast","tags":{},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-01-22T03:43:41.5621442+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-01-22T03:43:41.5621442+00:00"},"properties":{"provisioningState":"Succeeded","status":{"displayStatus":"Ready","timestamp":"2001-02-03T04:05:06Z"},"regionEndpointEnabled":false,"zoneRedundancy":"Disabled"}}' + headers: + Api-Supported-Versions: + - 2020-11-01-preview, 2021-06-01-preview, 2021-08-01-preview, 2021-09-01, 2021-12-01-preview, 2022-02-01-preview, 2022-12-01, 2023-01-01-preview, 2023-06-01-preview, 2023-07-01, 2023-08-01-preview, 2023-11-01-preview, 2024-01-01-preview, 2024-11-01-preview + Cache-Control: + - no-cache + Content-Length: + - "753" + 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: 87914993DCCB452F9B85A8037CB161B3 Ref B: MAA201060515039 Ref C: 2025-01-22T03:45:23Z' + status: 200 OK + code: 200 + duration: 831.186912ms + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv?api-version=2023-07-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 753 + uncompressed: false + body: '{"type":"Microsoft.ContainerRegistry/registries/replications","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv","name":"asotestregistrymhmunv","location":"australiaeast","tags":{},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-01-22T03:43:41.5621442+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-01-22T03:43:41.5621442+00:00"},"properties":{"provisioningState":"Succeeded","status":{"displayStatus":"Ready","timestamp":"2001-02-03T04:05:06Z"},"regionEndpointEnabled":false,"zoneRedundancy":"Disabled"}}' + headers: + Api-Supported-Versions: + - 2020-11-01-preview, 2021-06-01-preview, 2021-08-01-preview, 2021-09-01, 2021-12-01-preview, 2022-02-01-preview, 2022-12-01, 2023-01-01-preview, 2023-06-01-preview, 2023-07-01, 2023-08-01-preview, 2023-11-01-preview, 2024-01-01-preview, 2024-11-01-preview + Cache-Control: + - no-cache + Content-Length: + - "753" + 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: 21942153DFB649EBB5F15EE4ED02EA59 Ref B: MAA201060515039 Ref C: 2025-01-22T03:45:25Z' + status: 200 OK + code: 200 + duration: 781.862598ms + - id: 15 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 211 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"westus2","name":"asotestregistrymhmunv","properties":{"adminUserEnabled":false,"publicNetworkAccess":"Enabled","zoneRedundancy":"Disabled"},"sku":{"name":"Premium"},"tags":{"scratchcard":"lanyard"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "211" + Content-Type: + - application/json + Test-Request-Hash: + - 94237eb7069af4db8ba939c04b0b4062865a1d925a85056efa8d4eb7ff060e05 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv?api-version=2023-07-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1470 + uncompressed: false + body: '{"sku":{"name":"Premium","tier":"Premium"},"type":"Microsoft.ContainerRegistry/registries","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv","name":"asotestregistrymhmunv","location":"westus2","tags":{"scratchcard":"lanyard"},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-01-22T03:43:23.7509496+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-01-22T03:45:32.31746+00:00"},"properties":{"loginServer":"asotestregistrymhmunv.azurecr.io","creationDate":"2001-02-03T04:05:06Z","provisioningState":"Succeeded","adminUserEnabled":false,"networkRuleSet":{"defaultAction":"Allow","ipRules":[]},"policies":{"quarantinePolicy":{"status":"disabled"},"trustPolicy":{"type":"Notary","status":"disabled"},"retentionPolicy":{"days":7,"lastUpdatedTime":"2025-01-22T03:45:32.8398754+00:00","status":"disabled"},"exportPolicy":{"status":"enabled"},"azureADAuthenticationAsArmPolicy":{"status":"enabled"},"softDeletePolicy":{"retentionDays":7,"lastUpdatedTime":"2025-01-22T03:45:32.8399278+00:00","status":"disabled"}},"encryption":{"status":"disabled"},"dataEndpointEnabled":false,"dataEndpointHostNames":[],"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","networkRuleBypassOptions":"AzureServices","zoneRedundancy":"Disabled","anonymousPullEnabled":false}}' + headers: + Api-Supported-Versions: + - "2023-07-01" + Cache-Control: + - no-cache + Content-Length: + - "1470" + 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: + - "12000" + X-Msedge-Ref: + - 'Ref A: 8EA2F5756E164286BE9A5AE76C1B0EB3 Ref B: MAA201060515039 Ref C: 2025-01-22T03:45:28Z' + status: 200 OK + code: 200 + duration: 5.64508818s + - 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-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv?api-version=2023-07-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1470 + uncompressed: false + body: '{"sku":{"name":"Premium","tier":"Premium"},"type":"Microsoft.ContainerRegistry/registries","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv","name":"asotestregistrymhmunv","location":"westus2","tags":{"scratchcard":"lanyard"},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-01-22T03:43:23.7509496+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-01-22T03:45:32.31746+00:00"},"properties":{"loginServer":"asotestregistrymhmunv.azurecr.io","creationDate":"2001-02-03T04:05:06Z","provisioningState":"Succeeded","adminUserEnabled":false,"networkRuleSet":{"defaultAction":"Allow","ipRules":[]},"policies":{"quarantinePolicy":{"status":"disabled"},"trustPolicy":{"type":"Notary","status":"disabled"},"retentionPolicy":{"days":7,"lastUpdatedTime":"2025-01-22T03:45:32.8398754+00:00","status":"disabled"},"exportPolicy":{"status":"enabled"},"azureADAuthenticationAsArmPolicy":{"status":"enabled"},"softDeletePolicy":{"retentionDays":7,"lastUpdatedTime":"2025-01-22T03:45:32.8399278+00:00","status":"disabled"}},"encryption":{"status":"disabled"},"dataEndpointEnabled":false,"dataEndpointHostNames":[],"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","networkRuleBypassOptions":"AzureServices","zoneRedundancy":"Disabled","anonymousPullEnabled":false}}' + headers: + Api-Supported-Versions: + - "2023-07-01" + Cache-Control: + - no-cache + Content-Length: + - "1470" + 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: 03C31CD782C84EC79462416FB1632408 Ref B: MAA201060515039 Ref C: 2025-01-22T03:45:40Z' + status: 200 OK + code: 200 + duration: 1.260570729s + - id: 17 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 165 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"australiaeast","name":"asotestregistrymhmunv","properties":{"regionEndpointEnabled":false,"zoneRedundancy":"Disabled"},"tags":{"scratchcard":"lanyard"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "165" + Content-Type: + - application/json + Test-Request-Hash: + - d8ce66ed2039032cbcc9922c6a288da8e1ee61040d7c857d2d7699eabda89a7c + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv?api-version=2023-07-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 776 + uncompressed: false + body: '{"type":"Microsoft.ContainerRegistry/registries/replications","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv","name":"asotestregistrymhmunv","location":"australiaeast","tags":{"scratchcard":"lanyard"},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-01-22T03:43:41.5621442+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-01-22T03:45:46.7532039+00:00"},"properties":{"provisioningState":"Succeeded","status":{"displayStatus":"Ready","timestamp":"2001-02-03T04:05:06Z"},"regionEndpointEnabled":false,"zoneRedundancy":"Disabled"}}' + headers: + Api-Supported-Versions: + - 2020-11-01-preview, 2021-06-01-preview, 2021-08-01-preview, 2021-09-01, 2021-12-01-preview, 2022-02-01-preview, 2022-12-01, 2023-01-01-preview, 2023-06-01-preview, 2023-07-01, 2023-08-01-preview, 2023-11-01-preview, 2024-01-01-preview, 2024-11-01-preview + Cache-Control: + - no-cache + Content-Length: + - "776" + 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: 9F741703017C4A90B992E83FE016DF1B Ref B: MAA201060515039 Ref C: 2025-01-22T03:45:44Z' + status: 200 OK + code: 200 + duration: 3.874769525s + - id: 18 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv?api-version=2023-07-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 776 + uncompressed: false + body: '{"type":"Microsoft.ContainerRegistry/registries/replications","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv","name":"asotestregistrymhmunv","location":"australiaeast","tags":{"scratchcard":"lanyard"},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-01-22T03:43:41.5621442+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-01-22T03:45:46.7532039+00:00"},"properties":{"provisioningState":"Succeeded","status":{"displayStatus":"Ready","timestamp":"2001-02-03T04:05:06Z"},"regionEndpointEnabled":false,"zoneRedundancy":"Disabled"}}' + headers: + Api-Supported-Versions: + - 2020-11-01-preview, 2021-06-01-preview, 2021-08-01-preview, 2021-09-01, 2021-12-01-preview, 2022-02-01-preview, 2022-12-01, 2023-01-01-preview, 2023-06-01-preview, 2023-07-01, 2023-08-01-preview, 2023-11-01-preview, 2024-01-01-preview, 2024-11-01-preview + Cache-Control: + - no-cache + Content-Length: + - "776" + 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: 1C3C97C7D21B43468AD72AE104DA3692 Ref B: MAA201060515039 Ref C: 2025-01-22T03:45:53Z' + status: 200 OK + code: 200 + duration: 823.421754ms + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv?api-version=2023-07-01 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1469 + uncompressed: false + body: '{"sku":{"name":"Premium","tier":"Premium"},"type":"Microsoft.ContainerRegistry/registries","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv","name":"asotestregistrymhmunv","location":"westus2","tags":{"scratchcard":"lanyard"},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-01-22T03:43:23.7509496+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-01-22T03:45:32.31746+00:00"},"properties":{"loginServer":"asotestregistrymhmunv.azurecr.io","creationDate":"2001-02-03T04:05:06Z","provisioningState":"Deleting","adminUserEnabled":false,"networkRuleSet":{"defaultAction":"Allow","ipRules":[]},"policies":{"quarantinePolicy":{"status":"disabled"},"trustPolicy":{"type":"Notary","status":"disabled"},"retentionPolicy":{"days":7,"lastUpdatedTime":"2025-01-22T03:45:32.8398754+00:00","status":"disabled"},"exportPolicy":{"status":"enabled"},"azureADAuthenticationAsArmPolicy":{"status":"enabled"},"softDeletePolicy":{"retentionDays":7,"lastUpdatedTime":"2025-01-22T03:45:32.8399278+00:00","status":"disabled"}},"encryption":{"status":"disabled"},"dataEndpointEnabled":false,"dataEndpointHostNames":[],"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","networkRuleBypassOptions":"AzureServices","zoneRedundancy":"Disabled","anonymousPullEnabled":false}}' + headers: + Api-Supported-Versions: + - "2023-07-01" + Cache-Control: + - no-cache + Content-Length: + - "1469" + Content-Type: + - application/json; charset=utf-8 + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerRegistry/locations/westus2/operationResults/registries-135aee2d-9650-4ee2-9fa5-9e0045ed8d47?api-version=2023-07-01&t=638731143625120471&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=sFuxLBK7fZ_5crlwQAVKx8g4gLKJNdiFAeQapEHdl_ElG7oD7EACiOASXPrbinhYnnGozKHxkJyRm2xSFLeJPY3Qyprx3fbNp5VkHP_NDB4m3NnCbH2yzDWoONZldZkibeKIqTCvO7qvhrJUnm4A_Xs-CX9G6REaPzAoo_8jtkRa2tRf-sqLMU6UmaPXKklMZEMLpxFaU5x7qwb8JSGId2NhPOohk3ZnHsdgNMcKYWXivt66VCml6YhaS2apI5x8BQpRL8-zCdiOTvjgTkLwiPQAYWuVrA35VPDSu7i9j0r1YS-BxQCxGZV_oKi3gltUKUCpdvKlPMROg4nCCMbyag&h=yJcplbb91Nao8sEWjJMwf_GKccD3Rm750lCF996Qk-c + Pragma: + - no-cache + Retry-After: + - "10" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Deletes: + - "12000" + X-Msedge-Ref: + - 'Ref A: 98DC321BDE304D96AE07D287966E7BC1 Ref B: MAA201060515039 Ref C: 2025-01-22T03:45:55Z' + status: 202 Accepted + code: 202 + duration: 6.52329001s + - id: 20 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.ContainerRegistry/locations/westus2/operationResults/registries-135aee2d-9650-4ee2-9fa5-9e0045ed8d47?api-version=2023-07-01&t=638731143625120471&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=sFuxLBK7fZ_5crlwQAVKx8g4gLKJNdiFAeQapEHdl_ElG7oD7EACiOASXPrbinhYnnGozKHxkJyRm2xSFLeJPY3Qyprx3fbNp5VkHP_NDB4m3NnCbH2yzDWoONZldZkibeKIqTCvO7qvhrJUnm4A_Xs-CX9G6REaPzAoo_8jtkRa2tRf-sqLMU6UmaPXKklMZEMLpxFaU5x7qwb8JSGId2NhPOohk3ZnHsdgNMcKYWXivt66VCml6YhaS2apI5x8BQpRL8-zCdiOTvjgTkLwiPQAYWuVrA35VPDSu7i9j0r1YS-BxQCxGZV_oKi3gltUKUCpdvKlPMROg4nCCMbyag&h=yJcplbb91Nao8sEWjJMwf_GKccD3Rm750lCF996Qk-c + 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: FCDC78740D174161B62A3CB1BEB88F08 Ref B: MAA201060515039 Ref C: 2025-01-22T03:46:20Z' + status: 200 OK + code: 200 + duration: 874.888013ms + - id: 21 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom/providers/Microsoft.ContainerRegistry/registries/asotestregistrymhmunv/replications/asotestregistrymhmunv?api-version=2023-07-01 + method: DELETE + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: -1 + uncompressed: false + body: "" + headers: + Cache-Control: + - no-cache + Expires: + - "-1" + Pragma: + - no-cache + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Cache: + - CONFIG_NOCACHE + X-Content-Type-Options: + - nosniff + X-Ms-Ratelimit-Remaining-Subscription-Global-Deletes: + - "11999" + X-Msedge-Ref: + - 'Ref A: B609210059FA47B4828F65D9D709033C Ref B: MAA201060515039 Ref C: 2025-01-22T03:46:22Z' + status: 204 No Content + code: 204 + duration: 614.669184ms + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-dwfzom?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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkREV0ZaT00tV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731143925624380&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=tlbf-KRxZGxDd7NldM2UXmP5seGN-KvfyLOyOTe2MaNl-KZXqpm8ENhBI-iic2FcSL5eeKAjsvGFZKF_nCLRF5eXlUStnHNpmb48w5l4wSY0-dNqxX0UaC8Rl4FAfpn6Gwci-Z0kq1MMq8e9obtd9Gm2aVNyM0-86kuy1uPjbXI7CqcdARdIhvKfRmUwDwjULnsTT_oM8D4CX4jfjBOB7OMeHwjddIJRAMZTP-84uijrmN8KE4X5ddczQSqF63elwaTFkRpIPJEFC4USa-1aiLI9w_MDLAJ5xHCF0Pg3oONA_iSnFo8wnogRpA2s4PzEu2GcSU1q61LF2TECLw2JKg&h=H2A3ykqmDeLz2Imcyo2HPN7lb3ZUjXc-lTCZ1KG5niE + 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: 5A3146D3A71148E489F85C2DBF21DDA5 Ref B: MAA201060515039 Ref C: 2025-01-22T03:46:27Z' + status: 202 Accepted + code: 202 + duration: 4.54683417s + - id: 23 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkREV0ZaT00tV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731143925624380&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=tlbf-KRxZGxDd7NldM2UXmP5seGN-KvfyLOyOTe2MaNl-KZXqpm8ENhBI-iic2FcSL5eeKAjsvGFZKF_nCLRF5eXlUStnHNpmb48w5l4wSY0-dNqxX0UaC8Rl4FAfpn6Gwci-Z0kq1MMq8e9obtd9Gm2aVNyM0-86kuy1uPjbXI7CqcdARdIhvKfRmUwDwjULnsTT_oM8D4CX4jfjBOB7OMeHwjddIJRAMZTP-84uijrmN8KE4X5ddczQSqF63elwaTFkRpIPJEFC4USa-1aiLI9w_MDLAJ5xHCF0Pg3oONA_iSnFo8wnogRpA2s4PzEu2GcSU1q61LF2TECLw2JKg&h=H2A3ykqmDeLz2Imcyo2HPN7lb3ZUjXc-lTCZ1KG5niE + 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: 7C06D63474FD4C69BC085CCA074A2DBA Ref B: MAA201060515039 Ref C: 2025-01-22T03:46:53Z' + status: 200 OK + code: 200 + duration: 1.054857493s diff --git a/v2/internal/controllers/recordings/Test_ContainerRegistry_Registry_CRUD.yaml b/v2/internal/controllers/recordings/Test_ContainerRegistry_Registry_CRUD.yaml deleted file mode 100644 index 541ed730220..00000000000 --- a/v2/internal/controllers/recordings/Test_ContainerRegistry_Registry_CRUD.yaml +++ /dev/null @@ -1,301 +0,0 @@ ---- -version: 1 -interactions: -- request: - body: '{"location":"westus2","name":"asotest-rg-ulmxnm","tags":{"CreatedAt":"2001-02-03T04:05:06Z"}}' - form: {} - headers: - Accept: - - application/json - Content-Length: - - "93" - Content-Type: - - application/json - Test-Request-Attempt: - - "0" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ulmxnm?api-version=2020-06-01 - method: PUT - response: - body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ulmxnm","name":"asotest-rg-ulmxnm","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Succeeded"}}' - headers: - Cache-Control: - - no-cache - Content-Length: - - "276" - Content-Type: - - application/json; charset=utf-8 - Expires: - - "-1" - Pragma: - - no-cache - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - X-Content-Type-Options: - - nosniff - status: 201 Created - code: 201 - duration: "" -- request: - body: "" - form: {} - headers: - Accept: - - application/json - Test-Request-Attempt: - - "0" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ulmxnm?api-version=2020-06-01 - method: GET - response: - body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ulmxnm","name":"asotest-rg-ulmxnm","type":"Microsoft.Resources/resourceGroups","location":"westus2","tags":{"CreatedAt":"2001-02-03T04:05:06Z"},"properties":{"provisioningState":"Succeeded"}}' - headers: - Cache-Control: - - no-cache - Content-Type: - - application/json; charset=utf-8 - Expires: - - "-1" - Pragma: - - no-cache - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - Vary: - - Accept-Encoding - X-Content-Type-Options: - - nosniff - status: 200 OK - code: 200 - duration: "" -- request: - body: '{"location":"westus2","name":"asotestregistryyyjckl","properties":{"adminUserEnabled":false,"publicNetworkAccess":"Enabled","zoneRedundancy":"Disabled"},"sku":{"name":"Basic"}}' - form: {} - headers: - Accept: - - application/json - Content-Length: - - "176" - Content-Type: - - application/json - Test-Request-Attempt: - - "0" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ulmxnm/providers/Microsoft.ContainerRegistry/registries/asotestregistryyyjckl?api-version=2021-09-01 - method: PUT - response: - body: '{"sku":{"name":"Basic","tier":"Basic"},"type":"Microsoft.ContainerRegistry/registries","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ulmxnm/providers/Microsoft.ContainerRegistry/registries/asotestregistryyyjckl","name":"asotestregistryyyjckl","location":"westus2","tags":{},"systemData":{"createdBy":"99de824c-b6d0-4769-af94-8819d4093b83","createdByType":"Application","createdAt":"2022-08-12T22:13:02.0566603+00:00","lastModifiedBy":"99de824c-b6d0-4769-af94-8819d4093b83","lastModifiedByType":"Application","lastModifiedAt":"2022-08-12T22:13:02.0566603+00:00"},"properties":{"loginServer":"asotestregistryyyjckl.azurecr.io","creationDate":"2001-02-03T04:05:06Z","provisioningState":"Succeeded","adminUserEnabled":false,"policies":{"quarantinePolicy":{"status":"disabled"},"trustPolicy":{"type":"Notary","status":"disabled"},"retentionPolicy":{"days":7,"lastUpdatedTime":"2022-08-12T22:13:03.5200197+00:00","status":"disabled"},"exportPolicy":{"status":"enabled"}},"encryption":{"status":"disabled"},"dataEndpointEnabled":false,"dataEndpointHostNames":[],"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","networkRuleBypassOptions":"AzureServices","zoneRedundancy":"Disabled"}}' - headers: - Api-Supported-Versions: - - "2021-09-01" - Cache-Control: - - no-cache - Content-Type: - - application/json; charset=utf-8 - Expires: - - "-1" - Pragma: - - no-cache - Server: - - Microsoft-HTTPAPI/2.0 - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - Vary: - - Accept-Encoding - X-Content-Type-Options: - - nosniff - status: 200 OK - code: 200 - duration: "" -- request: - body: "" - form: {} - headers: - Accept: - - application/json - Test-Request-Attempt: - - "0" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ulmxnm/providers/Microsoft.ContainerRegistry/registries/asotestregistryyyjckl?api-version=2021-09-01 - method: GET - response: - body: '{"sku":{"name":"Basic","tier":"Basic"},"type":"Microsoft.ContainerRegistry/registries","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ulmxnm/providers/Microsoft.ContainerRegistry/registries/asotestregistryyyjckl","name":"asotestregistryyyjckl","location":"westus2","tags":{},"systemData":{"createdBy":"99de824c-b6d0-4769-af94-8819d4093b83","createdByType":"Application","createdAt":"2022-08-12T22:13:02.0566603+00:00","lastModifiedBy":"99de824c-b6d0-4769-af94-8819d4093b83","lastModifiedByType":"Application","lastModifiedAt":"2022-08-12T22:13:02.0566603+00:00"},"properties":{"loginServer":"asotestregistryyyjckl.azurecr.io","creationDate":"2001-02-03T04:05:06Z","provisioningState":"Succeeded","adminUserEnabled":false,"policies":{"quarantinePolicy":{"status":"disabled"},"trustPolicy":{"type":"Notary","status":"disabled"},"retentionPolicy":{"days":7,"lastUpdatedTime":"2022-08-12T22:13:03.5200197+00:00","status":"disabled"},"exportPolicy":{"status":"enabled"}},"encryption":{"status":"disabled"},"dataEndpointEnabled":false,"dataEndpointHostNames":[],"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","networkRuleBypassOptions":"AzureServices","zoneRedundancy":"Disabled"}}' - headers: - Api-Supported-Versions: - - "2021-09-01" - Cache-Control: - - no-cache - Content-Type: - - application/json; charset=utf-8 - Expires: - - "-1" - Pragma: - - no-cache - Server: - - Microsoft-HTTPAPI/2.0 - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - Vary: - - Accept-Encoding - X-Content-Type-Options: - - nosniff - status: 200 OK - code: 200 - duration: "" -- request: - body: '{"location":"westus2","name":"asotestregistryyyjckl","properties":{"adminUserEnabled":false,"publicNetworkAccess":"Enabled","zoneRedundancy":"Disabled"},"sku":{"name":"Basic"},"tags":{"scratchcard":"lanyard"}}' - form: {} - headers: - Accept: - - application/json - Content-Length: - - "209" - Content-Type: - - application/json - Test-Request-Attempt: - - "1" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ulmxnm/providers/Microsoft.ContainerRegistry/registries/asotestregistryyyjckl?api-version=2021-09-01 - method: PUT - response: - body: '{"sku":{"name":"Basic","tier":"Basic"},"type":"Microsoft.ContainerRegistry/registries","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ulmxnm/providers/Microsoft.ContainerRegistry/registries/asotestregistryyyjckl","name":"asotestregistryyyjckl","location":"westus2","tags":{"scratchcard":"lanyard"},"systemData":{"createdBy":"99de824c-b6d0-4769-af94-8819d4093b83","createdByType":"Application","createdAt":"2022-08-12T22:13:02.0566603+00:00","lastModifiedBy":"99de824c-b6d0-4769-af94-8819d4093b83","lastModifiedByType":"Application","lastModifiedAt":"2022-08-12T22:13:06.9057579+00:00"},"properties":{"loginServer":"asotestregistryyyjckl.azurecr.io","creationDate":"2001-02-03T04:05:06Z","provisioningState":"Succeeded","adminUserEnabled":false,"policies":{"quarantinePolicy":{"status":"disabled"},"trustPolicy":{"type":"Notary","status":"disabled"},"retentionPolicy":{"days":7,"lastUpdatedTime":"2022-08-12T22:13:07.0677752+00:00","status":"disabled"},"exportPolicy":{"status":"enabled"}},"encryption":{"status":"disabled"},"dataEndpointEnabled":false,"dataEndpointHostNames":[],"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","networkRuleBypassOptions":"AzureServices","zoneRedundancy":"Disabled"}}' - headers: - Api-Supported-Versions: - - "2021-09-01" - Cache-Control: - - no-cache - Content-Type: - - application/json; charset=utf-8 - Expires: - - "-1" - Pragma: - - no-cache - Server: - - Microsoft-HTTPAPI/2.0 - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - Vary: - - Accept-Encoding - X-Content-Type-Options: - - nosniff - status: 200 OK - code: 200 - duration: "" -- request: - body: "" - form: {} - headers: - Accept: - - application/json - Test-Request-Attempt: - - "1" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ulmxnm/providers/Microsoft.ContainerRegistry/registries/asotestregistryyyjckl?api-version=2021-09-01 - method: GET - response: - body: '{"sku":{"name":"Basic","tier":"Basic"},"type":"Microsoft.ContainerRegistry/registries","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ulmxnm/providers/Microsoft.ContainerRegistry/registries/asotestregistryyyjckl","name":"asotestregistryyyjckl","location":"westus2","tags":{"scratchcard":"lanyard"},"systemData":{"createdBy":"99de824c-b6d0-4769-af94-8819d4093b83","createdByType":"Application","createdAt":"2022-08-12T22:13:02.0566603+00:00","lastModifiedBy":"99de824c-b6d0-4769-af94-8819d4093b83","lastModifiedByType":"Application","lastModifiedAt":"2022-08-12T22:13:06.9057579+00:00"},"properties":{"loginServer":"asotestregistryyyjckl.azurecr.io","creationDate":"2001-02-03T04:05:06Z","provisioningState":"Succeeded","adminUserEnabled":false,"policies":{"quarantinePolicy":{"status":"disabled"},"trustPolicy":{"type":"Notary","status":"disabled"},"retentionPolicy":{"days":7,"lastUpdatedTime":"2022-08-12T22:13:07.0677752+00:00","status":"disabled"},"exportPolicy":{"status":"enabled"}},"encryption":{"status":"disabled"},"dataEndpointEnabled":false,"dataEndpointHostNames":[],"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","networkRuleBypassOptions":"AzureServices","zoneRedundancy":"Disabled"}}' - headers: - Api-Supported-Versions: - - "2021-09-01" - Cache-Control: - - no-cache - Content-Type: - - application/json; charset=utf-8 - Expires: - - "-1" - Pragma: - - no-cache - Server: - - Microsoft-HTTPAPI/2.0 - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - Vary: - - Accept-Encoding - X-Content-Type-Options: - - nosniff - status: 200 OK - code: 200 - duration: "" -- request: - body: "" - form: {} - headers: - Accept: - - application/json - Test-Request-Attempt: - - "0" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ulmxnm/providers/Microsoft.ContainerRegistry/registries/asotestregistryyyjckl?api-version=2021-09-01 - method: DELETE - response: - body: "" - headers: - Api-Supported-Versions: - - "2021-09-01" - Cache-Control: - - no-cache - Content-Length: - - "0" - Expires: - - "-1" - Pragma: - - no-cache - Server: - - Microsoft-HTTPAPI/2.0 - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - X-Content-Type-Options: - - nosniff - status: 200 OK - code: 200 - duration: "" -- request: - body: "" - form: {} - headers: - Accept: - - application/json - Test-Request-Attempt: - - "0" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-ulmxnm?api-version=2020-06-01 - method: DELETE - response: - body: "" - headers: - Cache-Control: - - no-cache - Content-Length: - - "0" - Expires: - - "-1" - Location: - - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRVTE1YTk0tV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 - Pragma: - - no-cache - Retry-After: - - "15" - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - X-Content-Type-Options: - - nosniff - status: 202 Accepted - code: 202 - duration: "" -- request: - body: "" - form: {} - headers: - Test-Request-Attempt: - - "0" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRVTE1YTk0tV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 - method: GET - response: - body: "" - headers: - Cache-Control: - - no-cache - Content-Length: - - "0" - Expires: - - "-1" - Pragma: - - no-cache - Strict-Transport-Security: - - max-age=31536000; includeSubDomains - X-Content-Type-Options: - - nosniff - status: 200 OK - code: 200 - duration: "" diff --git a/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Containerregistry_v1api20210901_CreationAndDeletion.yaml b/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Containerregistry_v1api20210901_CreationAndDeletion.yaml new file mode 100644 index 00000000000..5ef5a3afdfc --- /dev/null +++ b/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Containerregistry_v1api20210901_CreationAndDeletion.yaml @@ -0,0 +1,543 @@ +--- +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-kplawf","tags":{"CreatedAt":"2001-02-03T04:05:06Z"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "93" + Content-Type: + - application/json + Test-Request-Hash: + - 782305b0898e9f0668e4fe69191f5fd99a09cb7b6326b62d7937e489fc406857 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kplawf?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-kplawf","name":"asotest-rg-kplawf","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: 6B80A5601D984BA2B58C239B4BF95D77 Ref B: MAA201060515009 Ref C: 2025-01-22T04:38:55Z' + status: 201 Created + code: 201 + duration: 5.075795147s + - 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-kplawf?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-kplawf","name":"asotest-rg-kplawf","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: 4494B30C35D34BE682D9D28B29F78D21 Ref B: MAA201060515009 Ref C: 2025-01-22T04:39:05Z' + status: 200 OK + code: 200 + duration: 490.009776ms + - id: 2 + 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: '{"location":"westcentralus","name":"asotestdcjijw","properties":{"publicNetworkAccess":"Enabled","zoneRedundancy":"Disabled"},"sku":{"name":"Basic"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "149" + Content-Type: + - application/json + Test-Request-Hash: + - 84b45c72d225f42ed458b6d7bf4cc880278396f6cd8decca2e11063b10eb698e + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kplawf/providers/Microsoft.ContainerRegistry/registries/asotestdcjijw?api-version=2021-09-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1172 + uncompressed: false + body: '{"sku":{"name":"Basic","tier":"Basic"},"type":"Microsoft.ContainerRegistry/registries","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kplawf/providers/Microsoft.ContainerRegistry/registries/asotestdcjijw","name":"asotestdcjijw","location":"westcentralus","tags":{},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-01-22T04:39:12.5068943+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-01-22T04:39:12.5068943+00:00"},"properties":{"loginServer":"asotestdcjijw.azurecr.io","creationDate":"2001-02-03T04:05:06Z","provisioningState":"Succeeded","adminUserEnabled":false,"policies":{"quarantinePolicy":{"status":"disabled"},"trustPolicy":{"type":"Notary","status":"disabled"},"retentionPolicy":{"days":7,"lastUpdatedTime":"2025-01-22T04:39:20.202235+00:00","status":"disabled"},"exportPolicy":{"status":"enabled"}},"encryption":{"status":"disabled"},"dataEndpointEnabled":false,"dataEndpointHostNames":[],"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","networkRuleBypassOptions":"AzureServices","zoneRedundancy":"Disabled"}}' + headers: + Api-Supported-Versions: + - "2021-09-01" + Cache-Control: + - no-cache + Content-Length: + - "1172" + 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: + - "12000" + X-Msedge-Ref: + - 'Ref A: 29BEB82582154C80BB4688DF619971E3 Ref B: MAA201060515009 Ref C: 2025-01-22T04:39:10Z' + status: 200 OK + code: 200 + duration: 10.071042244s + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kplawf/providers/Microsoft.ContainerRegistry/registries/asotestdcjijw?api-version=2021-09-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1172 + uncompressed: false + body: '{"sku":{"name":"Basic","tier":"Basic"},"type":"Microsoft.ContainerRegistry/registries","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kplawf/providers/Microsoft.ContainerRegistry/registries/asotestdcjijw","name":"asotestdcjijw","location":"westcentralus","tags":{},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-01-22T04:39:12.5068943+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-01-22T04:39:12.5068943+00:00"},"properties":{"loginServer":"asotestdcjijw.azurecr.io","creationDate":"2001-02-03T04:05:06Z","provisioningState":"Succeeded","adminUserEnabled":false,"policies":{"quarantinePolicy":{"status":"disabled"},"trustPolicy":{"type":"Notary","status":"disabled"},"retentionPolicy":{"days":7,"lastUpdatedTime":"2025-01-22T04:39:20.202235+00:00","status":"disabled"},"exportPolicy":{"status":"enabled"}},"encryption":{"status":"disabled"},"dataEndpointEnabled":false,"dataEndpointHostNames":[],"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","networkRuleBypassOptions":"AzureServices","zoneRedundancy":"Disabled"}}' + headers: + Api-Supported-Versions: + - "2021-09-01" + Cache-Control: + - no-cache + Content-Length: + - "1172" + 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: DB0F760379194C9BB57F2C0C9BF98B20 Ref B: MAA201060515009 Ref C: 2025-01-22T04:39:31Z' + status: 200 OK + code: 200 + duration: 991.710405ms + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kplawf?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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRLUExBV0YtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731175817303103&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=OauCoqT_Q5BIO2XFdzjL1LEkC7JsMmIb3CszChFa42cMeZJZ-QnOm_p5WMnaVsjNrdQewqQ6rjG1yFXnyKDt_EJjb601D8JP60kVKRv5Xk0d_5OjNIxxWFe9Y4K94E0UcaeFUszH8_aQ9vlT8be7PL-WzZ1HUspuutlwpxhjco5c2nBhu6fGNk_jFVQUlge0R2P-ydyPsMSIUSaf0FNGXcLDSeg08VtCf2M1i5sWMDvtD5ZREtkoGO5a-TyQcj5y4xAzgjDba1YPaeV_F1wIPl3X1fC4aqAZRb2gq66VpNieYRtUac6_FtcOvyqAUkDfXlMREAG-XMdEjaCoKLZDog&h=GpXgRYE8vCHyyYLT4aIMzxloGoDa2QMt7_QnOVb8fqo + 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: + - "12000" + X-Msedge-Ref: + - 'Ref A: B2CAB1A29D7B4029B085CC4A834D900A Ref B: MAA201060515009 Ref C: 2025-01-22T04:39:35Z' + status: 202 Accepted + code: 202 + duration: 5.692450178s + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRLUExBV0YtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731175817303103&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=OauCoqT_Q5BIO2XFdzjL1LEkC7JsMmIb3CszChFa42cMeZJZ-QnOm_p5WMnaVsjNrdQewqQ6rjG1yFXnyKDt_EJjb601D8JP60kVKRv5Xk0d_5OjNIxxWFe9Y4K94E0UcaeFUszH8_aQ9vlT8be7PL-WzZ1HUspuutlwpxhjco5c2nBhu6fGNk_jFVQUlge0R2P-ydyPsMSIUSaf0FNGXcLDSeg08VtCf2M1i5sWMDvtD5ZREtkoGO5a-TyQcj5y4xAzgjDba1YPaeV_F1wIPl3X1fC4aqAZRb2gq66VpNieYRtUac6_FtcOvyqAUkDfXlMREAG-XMdEjaCoKLZDog&h=GpXgRYE8vCHyyYLT4aIMzxloGoDa2QMt7_QnOVb8fqo + 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRLUExBV0YtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731176051941812&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=j8FDf5R4V21CcLOM02ns9sGOEtK8b23cJgBMpdQiyReNb49T7OrQle5DrGU_Dqv7Z1Ekq9iG5LsmnDQZg-VNKu4vb3XYeJe9aZuAhBf6ualUt1SbxnUoY0bj-Ch1V6_XQdp9BHDAcMOaUHH0jTHoTGJ6qcMgasnnGNsWhfiFlpoO8OR3bfv351VmJulLXrxmUg6z8VaXZIsjwddany_AnCKknRMkogKYj0eDGPRLD7VwtXkItqT_z5fVe3ufx7UEA75BlIqHsPjy2aCuq3wZ-iRzsamEmsrwQXt79Hds_IBZZL1G4OQL4JSINvn_556FfJr_MCcQPKnIrj7HodZdhA&h=32tO32PfyERLJ6gqwX2VRaAv_44J3FWdyv9ggej9ePk + 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: C137C12DF4434D549C9DB9FDEBC2B173 Ref B: MAA201060515009 Ref C: 2025-01-22T04:40:04Z' + status: 202 Accepted + code: 202 + duration: 1.015218392s + - 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/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRLUExBV0YtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731175817303103&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=OauCoqT_Q5BIO2XFdzjL1LEkC7JsMmIb3CszChFa42cMeZJZ-QnOm_p5WMnaVsjNrdQewqQ6rjG1yFXnyKDt_EJjb601D8JP60kVKRv5Xk0d_5OjNIxxWFe9Y4K94E0UcaeFUszH8_aQ9vlT8be7PL-WzZ1HUspuutlwpxhjco5c2nBhu6fGNk_jFVQUlge0R2P-ydyPsMSIUSaf0FNGXcLDSeg08VtCf2M1i5sWMDvtD5ZREtkoGO5a-TyQcj5y4xAzgjDba1YPaeV_F1wIPl3X1fC4aqAZRb2gq66VpNieYRtUac6_FtcOvyqAUkDfXlMREAG-XMdEjaCoKLZDog&h=GpXgRYE8vCHyyYLT4aIMzxloGoDa2QMt7_QnOVb8fqo + 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRLUExBV0YtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731176233248888&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=ttYk10_NPNvXzbaGWEPt94m2vMxyL1BYkcpGWQImCxMNt1PiLXVIi6Aix7kYCvo-jBTimNQoQOKRO0Oc-4ZYbdnW8gOhQrv3T2W50jE5ALS9voSPe8I8pWqMAMthC_q5vmisfB9JPr-C76o2rII58L9MOuNNT4aM6X88TAezQRoAIuQTRQGXAZFSlUnB8eqjmtXd3sGdZtfrFcVrEFvq910MPI38_E3OwjNT11C3ruICbTxHN0SlG7HiXAg0lzgTfJKqonOiR1BlOAWtDAtDxyWR1U7RlPu-wjQ8Nxt0RqIQAS36NjWIaqx2MQdtzgl5mfatb_IoIxHhUUm4Qo3BZQ&h=h3eFH7wcSYxr7g5PDiYLeCms13WSmlIuNtQsyKYO0Ao + 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: 082C26E9F56241DD9CFBD5277CC3496A Ref B: MAA201060515009 Ref C: 2025-01-22T04:40:22Z' + status: 202 Accepted + code: 202 + duration: 1.088122478s + - 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/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRLUExBV0YtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731175817303103&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=OauCoqT_Q5BIO2XFdzjL1LEkC7JsMmIb3CszChFa42cMeZJZ-QnOm_p5WMnaVsjNrdQewqQ6rjG1yFXnyKDt_EJjb601D8JP60kVKRv5Xk0d_5OjNIxxWFe9Y4K94E0UcaeFUszH8_aQ9vlT8be7PL-WzZ1HUspuutlwpxhjco5c2nBhu6fGNk_jFVQUlge0R2P-ydyPsMSIUSaf0FNGXcLDSeg08VtCf2M1i5sWMDvtD5ZREtkoGO5a-TyQcj5y4xAzgjDba1YPaeV_F1wIPl3X1fC4aqAZRb2gq66VpNieYRtUac6_FtcOvyqAUkDfXlMREAG-XMdEjaCoKLZDog&h=GpXgRYE8vCHyyYLT4aIMzxloGoDa2QMt7_QnOVb8fqo + 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRLUExBV0YtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731176418467860&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=Yf9Kp3unD472RXhvZbJDgJKFzqNjmkQYxBDSb6hmchz3IykMJixdHr6mmh5HO0iWY8V5C8BsYdMHiyW1wxKNlZgQ9K-htpH3ZBOh_L7J3Y7UoqZuOq7sOPyT2iNK7GcW5WRo9ZSPk58eEjZXM7gqzXW9vRWyMCS_JVNF0m1Q5kXq6_HfI4I6aXMpKUk7CrhEt-DzXRIYNY3smqP7POpD_UOiKkHHJNaKv6X9WnN91wLzUmy-xrO2mzF3hfKK26ZsTIfI7H9JWyQss8_oETnG_WFiAG2uAzVm5NGWNozjdeIRyAwvPcVb-2u3r3qHN265aJj5J2uP486hrjfo6vK0FA&h=NdMf39_wTSunNyEvWw7fRrtNEGGHCqNEKraDVOIvYsI + 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: 4317977B666D421799BF9184103EC13B Ref B: MAA201060515009 Ref C: 2025-01-22T04:40:41Z' + status: 202 Accepted + code: 202 + duration: 1.164674505s + - 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/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRLUExBV0YtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731175817303103&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=OauCoqT_Q5BIO2XFdzjL1LEkC7JsMmIb3CszChFa42cMeZJZ-QnOm_p5WMnaVsjNrdQewqQ6rjG1yFXnyKDt_EJjb601D8JP60kVKRv5Xk0d_5OjNIxxWFe9Y4K94E0UcaeFUszH8_aQ9vlT8be7PL-WzZ1HUspuutlwpxhjco5c2nBhu6fGNk_jFVQUlge0R2P-ydyPsMSIUSaf0FNGXcLDSeg08VtCf2M1i5sWMDvtD5ZREtkoGO5a-TyQcj5y4xAzgjDba1YPaeV_F1wIPl3X1fC4aqAZRb2gq66VpNieYRtUac6_FtcOvyqAUkDfXlMREAG-XMdEjaCoKLZDog&h=GpXgRYE8vCHyyYLT4aIMzxloGoDa2QMt7_QnOVb8fqo + 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: 9E9CDFDBEF1B4521AF8674534CBE2710 Ref B: MAA201060515009 Ref C: 2025-01-22T04:40:59Z' + status: 200 OK + code: 200 + duration: 1.065917648s + - id: 9 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-kplawf/providers/Microsoft.ContainerRegistry/registries/asotestdcjijw?api-version=2021-09-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-kplawf'' 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: AFF7152AB8C04802A705A31FA3B64BC9 Ref B: MAA201060515009 Ref C: 2025-01-22T04:41:07Z' + status: 404 Not Found + code: 404 + duration: 1.17364345s diff --git a/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Containerregistry_v1api20230701_CreationAndDeletion.yaml b/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Containerregistry_v1api20230701_CreationAndDeletion.yaml new file mode 100644 index 00000000000..39fa1de5d87 --- /dev/null +++ b/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Containerregistry_v1api20230701_CreationAndDeletion.yaml @@ -0,0 +1,1040 @@ +--- +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-alnjlr","tags":{"CreatedAt":"2001-02-03T04:05:06Z"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "93" + Content-Type: + - application/json + Test-Request-Hash: + - cbdb5c6c0ce54ad60c146d1d6310826e73be9d67aa2ffeb84e9cb57e68c896ec + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-alnjlr?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-alnjlr","name":"asotest-rg-alnjlr","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: 4550DB6558754C1DBCB2EB14F456252A Ref B: MAA201060514051 Ref C: 2025-01-23T01:08:29Z' + status: 201 Created + code: 201 + duration: 5.775470536s + - 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-alnjlr?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-alnjlr","name":"asotest-rg-alnjlr","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: 9710561FB82F4119A78C8D23DA93F218 Ref B: MAA201060514051 Ref C: 2025-01-23T01:08:40Z' + status: 200 OK + code: 200 + duration: 1.285968878s + - id: 2 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 151 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"westcentralus","name":"asotestffliwc","properties":{"publicNetworkAccess":"Enabled","zoneRedundancy":"Disabled"},"sku":{"name":"Premium"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "151" + Content-Type: + - application/json + Test-Request-Hash: + - 26678f41ac56153c46c6670d258e01d2ccca920c188a81e8b8bbb9daa169570c + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-alnjlr/providers/Microsoft.ContainerRegistry/registries/asotestffliwc?api-version=2023-07-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1431 + uncompressed: false + body: '{"sku":{"name":"Premium","tier":"Premium"},"type":"Microsoft.ContainerRegistry/registries","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-alnjlr/providers/Microsoft.ContainerRegistry/registries/asotestffliwc","name":"asotestffliwc","location":"westcentralus","tags":{},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-01-23T01:08:48.5727348+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-01-23T01:08:48.5727348+00:00"},"properties":{"loginServer":"asotestffliwc.azurecr.io","creationDate":"2001-02-03T04:05:06Z","provisioningState":"Succeeded","adminUserEnabled":false,"networkRuleSet":{"defaultAction":"Allow","ipRules":[]},"policies":{"quarantinePolicy":{"status":"disabled"},"trustPolicy":{"type":"Notary","status":"disabled"},"retentionPolicy":{"days":7,"lastUpdatedTime":"2025-01-23T01:09:07.1661947+00:00","status":"disabled"},"exportPolicy":{"status":"enabled"},"azureADAuthenticationAsArmPolicy":{"status":"enabled"},"softDeletePolicy":{"retentionDays":7,"lastUpdatedTime":"2025-01-23T01:09:07.1662399+00:00","status":"disabled"}},"encryption":{"status":"disabled"},"dataEndpointEnabled":false,"dataEndpointHostNames":[],"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","networkRuleBypassOptions":"AzureServices","zoneRedundancy":"Disabled","anonymousPullEnabled":false}}' + headers: + Api-Supported-Versions: + - "2023-07-01" + Cache-Control: + - no-cache + Content-Length: + - "1431" + 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: + - "12000" + X-Msedge-Ref: + - 'Ref A: AA89A3739F834121A94C97FABF231F16 Ref B: MAA201060514051 Ref C: 2025-01-23T01:08:45Z' + status: 200 OK + code: 200 + duration: 20.575420412s + - 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: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-alnjlr/providers/Microsoft.ContainerRegistry/registries/asotestffliwc?api-version=2023-07-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 1431 + uncompressed: false + body: '{"sku":{"name":"Premium","tier":"Premium"},"type":"Microsoft.ContainerRegistry/registries","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-alnjlr/providers/Microsoft.ContainerRegistry/registries/asotestffliwc","name":"asotestffliwc","location":"westcentralus","tags":{},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-01-23T01:08:48.5727348+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-01-23T01:08:48.5727348+00:00"},"properties":{"loginServer":"asotestffliwc.azurecr.io","creationDate":"2001-02-03T04:05:06Z","provisioningState":"Succeeded","adminUserEnabled":false,"networkRuleSet":{"defaultAction":"Allow","ipRules":[]},"policies":{"quarantinePolicy":{"status":"disabled"},"trustPolicy":{"type":"Notary","status":"disabled"},"retentionPolicy":{"days":7,"lastUpdatedTime":"2025-01-23T01:09:07.1661947+00:00","status":"disabled"},"exportPolicy":{"status":"enabled"},"azureADAuthenticationAsArmPolicy":{"status":"enabled"},"softDeletePolicy":{"retentionDays":7,"lastUpdatedTime":"2025-01-23T01:09:07.1662399+00:00","status":"disabled"}},"encryption":{"status":"disabled"},"dataEndpointEnabled":false,"dataEndpointHostNames":[],"privateEndpointConnections":[],"publicNetworkAccess":"Enabled","networkRuleBypassOptions":"AzureServices","zoneRedundancy":"Disabled","anonymousPullEnabled":false}}' + headers: + Api-Supported-Versions: + - "2023-07-01" + Cache-Control: + - no-cache + Content-Length: + - "1431" + 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: 56E0F56AC9874FC99FF0236B5D9DCA62 Ref B: MAA201060514051 Ref C: 2025-01-23T01:09:29Z' + status: 200 OK + code: 200 + duration: 1.018197374s + - id: 4 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 121 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: '{"location":"westeurope","name":"asotestqxrqmd","properties":{"regionEndpointEnabled":false,"zoneRedundancy":"Disabled"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "121" + Content-Type: + - application/json + Test-Request-Hash: + - 4be035b850fc90fe263705d375469395b46b527aff85a1a99a2e974d40591bef + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-alnjlr/providers/Microsoft.ContainerRegistry/registries/asotestffliwc/replications/asotestqxrqmd?api-version=2023-07-01 + method: PUT + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 699 + uncompressed: false + body: '{"type":"Microsoft.ContainerRegistry/registries/replications","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-alnjlr/providers/Microsoft.ContainerRegistry/registries/asotestffliwc/replications/asotestqxrqmd","name":"asotestqxrqmd","location":"westeurope","tags":{},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-01-23T01:09:55.808657+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-01-23T01:09:55.808657+00:00"},"properties":{"provisioningState":"Creating","status":{"timestamp":"2001-02-03T04:05:06Z"},"regionEndpointEnabled":false,"zoneRedundancy":"Disabled"}}' + headers: + Api-Supported-Versions: + - 2020-11-01-preview, 2021-06-01-preview, 2021-08-01-preview, 2021-09-01, 2021-12-01-preview, 2022-02-01-preview, 2022-12-01, 2023-01-01-preview, 2023-06-01-preview, 2023-07-01, 2023-08-01-preview, 2023-11-01-preview, 2024-01-01-preview, 2024-11-01-preview + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-alnjlr/providers/Microsoft.ContainerRegistry/registries/asotestffliwc/replications/asotestqxrqmd/operationStatuses/replications-75518c56-598f-4d10-b059-e21f50d846aa?api-version=2023-07-01&t=638731913989649430&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=rPGsZ8CxygewUbb4Wr4i4OJ6TkwfsLox_HOL2GHJkjrAJ7kWxleScBiu_De-D6fcs6e2dI4xoH11i5dkXFoJZq50he2fIvHgdiMHvLg3qYWwt9qFc16yS9l41P2FitFpDEbad7qQOS0tC4qw-Y8JeAi7cz24h_It9SLSuRCdcMkrHFfsjUErO1tTObVKQffhKpgcZN5IuD9OgZfmscfSYBoltq2HIejuZwRUJc5QRNdi2D30VxuMJ_Ye3yshM3CQc1xt8eHnETDvgTJBGqZizEGAfYrlFUQ9-TmaC4Yk9HFybxBnTtDygq6WIjD8-BWN9fE5CYsTVjgnTx0u5CUgUQ&h=Bc8rf-T-MVFpq55cEACq6Ftzb54XfBH7wHV_vjf5K64 + Cache-Control: + - no-cache + Content-Length: + - "699" + 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-Ratelimit-Remaining-Subscription-Global-Writes: + - "12000" + X-Msedge-Ref: + - 'Ref A: 94213F98077B421795DB609A01976C79 Ref B: MAA201060514051 Ref C: 2025-01-23T01:09:52Z' + status: 201 Created + code: 201 + duration: 6.066894869s + - 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: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-alnjlr/providers/Microsoft.ContainerRegistry/registries/asotestffliwc/replications/asotestqxrqmd/operationStatuses/replications-75518c56-598f-4d10-b059-e21f50d846aa?api-version=2023-07-01&t=638731913989649430&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=rPGsZ8CxygewUbb4Wr4i4OJ6TkwfsLox_HOL2GHJkjrAJ7kWxleScBiu_De-D6fcs6e2dI4xoH11i5dkXFoJZq50he2fIvHgdiMHvLg3qYWwt9qFc16yS9l41P2FitFpDEbad7qQOS0tC4qw-Y8JeAi7cz24h_It9SLSuRCdcMkrHFfsjUErO1tTObVKQffhKpgcZN5IuD9OgZfmscfSYBoltq2HIejuZwRUJc5QRNdi2D30VxuMJ_Ye3yshM3CQc1xt8eHnETDvgTJBGqZizEGAfYrlFUQ9-TmaC4Yk9HFybxBnTtDygq6WIjD8-BWN9fE5CYsTVjgnTx0u5CUgUQ&h=Bc8rf-T-MVFpq55cEACq6Ftzb54XfBH7wHV_vjf5K64 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 21 + uncompressed: false + body: '{"status":"Creating"}' + headers: + Api-Supported-Versions: + - 2020-11-01-preview, 2021-06-01-preview, 2021-08-01-preview, 2021-09-01, 2021-12-01-preview, 2022-02-01-preview, 2022-12-01, 2023-01-01-preview, 2023-06-01-preview, 2023-07-01, 2023-08-01-preview, 2023-11-01-preview, 2024-01-01-preview, 2024-11-01-preview + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-alnjlr/providers/Microsoft.ContainerRegistry/registries/asotestffliwc/replications/asotestqxrqmd/operationStatuses/replications-75518c56-598f-4d10-b059-e21f50d846aa?api-version=2023-07-01&t=638731914075233592&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=K96hhPx094R6NfckIoLlai8VI0CNfRivPt40rZRBWVfKVhPHpWTvWP5nMpFEhGgD-Q6_Ual49Obsm-Osirws9lQtZGw-OVSHksR6BZO7i5XpjON81WAdaugMD2Wj6AkZ30zFDx__MSNx2X1lunNbx4M7r5EIiC5t7LpEPJN6AgOg5DnN2wvbq4k7xXNSTp6YCmUpm-d7wOVeiUsPKQLWnQ0XJ9RIe8fyCx7eMH0updHHCmwpIZ3wINlXYvirSb5FEdLEnXh0p8QhnzaWHwdPF9gJF4GDOoOHk8MuABUk9OtEPOIp5MWkuQgDKMxat37DOeafourAcSYPtCjjht3kuw&h=rOWsJaMw6pb5e1UmYPPVy_pYWzfBi-a42CO5wNjKRCA + Cache-Control: + - no-cache + Content-Length: + - "21" + 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-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: FCFEB8FC122F4A73A043C6D9BC493D2A Ref B: MAA201060514051 Ref C: 2025-01-23T01:10:06Z' + status: 200 OK + code: 200 + duration: 1.020810232s + - 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/resourceGroups/asotest-rg-alnjlr/providers/Microsoft.ContainerRegistry/registries/asotestffliwc/replications/asotestqxrqmd/operationStatuses/replications-75518c56-598f-4d10-b059-e21f50d846aa?api-version=2023-07-01&t=638731913989649430&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=rPGsZ8CxygewUbb4Wr4i4OJ6TkwfsLox_HOL2GHJkjrAJ7kWxleScBiu_De-D6fcs6e2dI4xoH11i5dkXFoJZq50he2fIvHgdiMHvLg3qYWwt9qFc16yS9l41P2FitFpDEbad7qQOS0tC4qw-Y8JeAi7cz24h_It9SLSuRCdcMkrHFfsjUErO1tTObVKQffhKpgcZN5IuD9OgZfmscfSYBoltq2HIejuZwRUJc5QRNdi2D30VxuMJ_Ye3yshM3CQc1xt8eHnETDvgTJBGqZizEGAfYrlFUQ9-TmaC4Yk9HFybxBnTtDygq6WIjD8-BWN9fE5CYsTVjgnTx0u5CUgUQ&h=Bc8rf-T-MVFpq55cEACq6Ftzb54XfBH7wHV_vjf5K64 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 22 + uncompressed: false + body: '{"status":"Succeeded"}' + headers: + Api-Supported-Versions: + - 2020-11-01-preview, 2021-06-01-preview, 2021-08-01-preview, 2021-09-01, 2021-12-01-preview, 2022-02-01-preview, 2022-12-01, 2023-01-01-preview, 2023-06-01-preview, 2023-07-01, 2023-08-01-preview, 2023-11-01-preview, 2024-01-01-preview, 2024-11-01-preview + Azure-Asyncoperation: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-alnjlr/providers/Microsoft.ContainerRegistry/registries/asotestffliwc/replications/asotestqxrqmd/operationStatuses/replications-75518c56-598f-4d10-b059-e21f50d846aa?api-version=2023-07-01&t=638731914202836195&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=J16NUfITsHI_1_4jDlSgz-n1xU_7CjCfFovXyn8gja66ACd59XlAi3idB6eOkWCkgmLpcfrDnU-mztuBvgZDwgj_ZOFVTID1QY-e4EBBWLr2dJY0_EvPTc1oS3J1Mj9gifCRdYb9KeS3AYHlm6NuRSydQDclNKrtdwaVSN7mvoFbKN1aSe7sLCACGrPnt5GKOBFLN1OR0C_tJA9n7FM6CaCC55Q8LEtdCitKSJTApQrlG912ilZjfmgiaou0A0m5d_HHd1dWOHTT4v0TeWc0qKGhmpByfd1_fFGBJY3xWPPvNJJW0Tzom4I_SOd2jwLN7KxyE7tsWG6_4cfCYGSEgQ&h=tz9QtUDEBYNZo0T23Jqj_Uy6zwtRFcbkFP3n4AIZYLY + Cache-Control: + - no-cache + Content-Length: + - "22" + 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-Ratelimit-Remaining-Subscription-Global-Reads: + - "16499" + X-Msedge-Ref: + - 'Ref A: E4BDE179C6F0460C9E35AAE4191246EB Ref B: MAA201060514051 Ref C: 2025-01-23T01:10:19Z' + status: 200 OK + code: 200 + duration: 924.706988ms + - 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-alnjlr/providers/Microsoft.ContainerRegistry/registries/asotestffliwc/replications/asotestqxrqmd?api-version=2023-07-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 724 + uncompressed: false + body: '{"type":"Microsoft.ContainerRegistry/registries/replications","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-alnjlr/providers/Microsoft.ContainerRegistry/registries/asotestffliwc/replications/asotestqxrqmd","name":"asotestqxrqmd","location":"westeurope","tags":{},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-01-23T01:09:55.808657+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-01-23T01:09:55.808657+00:00"},"properties":{"provisioningState":"Succeeded","status":{"displayStatus":"Ready","timestamp":"2001-02-03T04:05:06Z"},"regionEndpointEnabled":false,"zoneRedundancy":"Disabled"}}' + headers: + Api-Supported-Versions: + - 2020-11-01-preview, 2021-06-01-preview, 2021-08-01-preview, 2021-09-01, 2021-12-01-preview, 2022-02-01-preview, 2022-12-01, 2023-01-01-preview, 2023-06-01-preview, 2023-07-01, 2023-08-01-preview, 2023-11-01-preview, 2024-01-01-preview, 2024-11-01-preview + Cache-Control: + - no-cache + Content-Length: + - "724" + 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: 206BC1D4FBAE4DC4BE2D7093E08E0128 Ref B: MAA201060514051 Ref C: 2025-01-23T01:10:21Z' + status: 200 OK + code: 200 + duration: 1.155984906s + - 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-alnjlr/providers/Microsoft.ContainerRegistry/registries/asotestffliwc/replications/asotestqxrqmd?api-version=2023-07-01 + method: GET + response: + proto: HTTP/2.0 + proto_major: 2 + proto_minor: 0 + transfer_encoding: [] + trailer: {} + content_length: 724 + uncompressed: false + body: '{"type":"Microsoft.ContainerRegistry/registries/replications","id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-alnjlr/providers/Microsoft.ContainerRegistry/registries/asotestffliwc/replications/asotestqxrqmd","name":"asotestqxrqmd","location":"westeurope","tags":{},"systemData":{"createdBy":"bearps@microsoft.com","createdByType":"User","createdAt":"2025-01-23T01:09:55.808657+00:00","lastModifiedBy":"bearps@microsoft.com","lastModifiedByType":"User","lastModifiedAt":"2025-01-23T01:09:55.808657+00:00"},"properties":{"provisioningState":"Succeeded","status":{"displayStatus":"Ready","timestamp":"2001-02-03T04:05:06Z"},"regionEndpointEnabled":false,"zoneRedundancy":"Disabled"}}' + headers: + Api-Supported-Versions: + - 2020-11-01-preview, 2021-06-01-preview, 2021-08-01-preview, 2021-09-01, 2021-12-01-preview, 2022-02-01-preview, 2022-12-01, 2023-01-01-preview, 2023-06-01-preview, 2023-07-01, 2023-08-01-preview, 2023-11-01-preview, 2024-01-01-preview, 2024-11-01-preview + Cache-Control: + - no-cache + Content-Length: + - "724" + 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: 549C290D861349C388B46D9511B50CBA Ref B: MAA201060514051 Ref C: 2025-01-23T01:10:24Z' + status: 200 OK + code: 200 + duration: 893.384108ms + - id: 9 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-alnjlr?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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRBTE5KTFItV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731914355017739&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=LTwEp4gwCnUmMj68MH15uvyvheUlDILDqziN0BeWvcqkn9V3B1MdxYcoFHwEpxzqUJ2ldqjUJAsVusb0nxnMyIKeXwXSVDDQnGWcaX9BOGFfptJeVAHck28XhNFdkWUl2Zt6wVlMJDvY6L6sl2TIzlQPsfU3IY0U_Hfkz56TauEOvF8MDzHlm5KPkIRp797RsXeF_tyFVIZDKm5uwQgLZmjPHGLrFRPjL4m9LMEUY_rACsqOPvdNjQOPnpozT2h57Mp29cunwOu_LrIGqZ9BW03PD75Z-jbvg1qaFlMAL42-A4uPjkh1XnrojyU_VCQUwyck4WLdBMGalUC5LYBvRg&h=i3PdCIJkfX-9H7zm-T2QJ0jxQZp9-vTAG6_pkdier1E + 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: BD3DD9BC65E94ADEBC4F6521889F8E9A Ref B: MAA201060514051 Ref C: 2025-01-23T01:10:30Z' + status: 202 Accepted + code: 202 + duration: 4.512898449s + - id: 10 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRBTE5KTFItV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731914355017739&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=LTwEp4gwCnUmMj68MH15uvyvheUlDILDqziN0BeWvcqkn9V3B1MdxYcoFHwEpxzqUJ2ldqjUJAsVusb0nxnMyIKeXwXSVDDQnGWcaX9BOGFfptJeVAHck28XhNFdkWUl2Zt6wVlMJDvY6L6sl2TIzlQPsfU3IY0U_Hfkz56TauEOvF8MDzHlm5KPkIRp797RsXeF_tyFVIZDKm5uwQgLZmjPHGLrFRPjL4m9LMEUY_rACsqOPvdNjQOPnpozT2h57Mp29cunwOu_LrIGqZ9BW03PD75Z-jbvg1qaFlMAL42-A4uPjkh1XnrojyU_VCQUwyck4WLdBMGalUC5LYBvRg&h=i3PdCIJkfX-9H7zm-T2QJ0jxQZp9-vTAG6_pkdier1E + 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRBTE5KTFItV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731914573691831&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=pu9ytAukBU97tIWOjf_2x4jiBr9NE4DHQJO4uEpFppigBto5MEaRon3XIaO0VbrX8pMbkJEiwl7P6jUDMcK5vyy6M01WApHlnA0LiBd7u6GKe51FuDVCWf25hlLobmEIot-cia3KbBQr7E2YgjTIkzvVmWDEih6GesbuTS34IArDo3VpFu2dw2im4Kzs9Mb88ZDIKq7KG-85gINqHm16Mn0QiDfmRU40jHdNiccmPbv6J6rHIPrfPTnFTPpNeZK8I9aYm-y-3mUJEi9YOSI4fFtGqkw3-EhbeaiHWEilsQwUkwMzWUDl7-sDu4bx4tR4yIHcec8ZTOSt4tQb2VHNgg&h=jKFOzU-H7a_cOG2lWIWLtVTwkHwzjvxAMOc_vzuliHU + 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: B06EFBFE3F1540858A87B374F306FB72 Ref B: MAA201060514051 Ref C: 2025-01-23T01:10:56Z' + status: 202 Accepted + code: 202 + duration: 1.030391319s + - id: 11 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRBTE5KTFItV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731914355017739&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=LTwEp4gwCnUmMj68MH15uvyvheUlDILDqziN0BeWvcqkn9V3B1MdxYcoFHwEpxzqUJ2ldqjUJAsVusb0nxnMyIKeXwXSVDDQnGWcaX9BOGFfptJeVAHck28XhNFdkWUl2Zt6wVlMJDvY6L6sl2TIzlQPsfU3IY0U_Hfkz56TauEOvF8MDzHlm5KPkIRp797RsXeF_tyFVIZDKm5uwQgLZmjPHGLrFRPjL4m9LMEUY_rACsqOPvdNjQOPnpozT2h57Mp29cunwOu_LrIGqZ9BW03PD75Z-jbvg1qaFlMAL42-A4uPjkh1XnrojyU_VCQUwyck4WLdBMGalUC5LYBvRg&h=i3PdCIJkfX-9H7zm-T2QJ0jxQZp9-vTAG6_pkdier1E + 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRBTE5KTFItV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731914753932774&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=R9l5eq1FSKlkFBV5qz-kDQDZmteHmSWxtYBKbCqu0Om76b0SKTltLFUf9T-jBQdIRf8c44sAWvn7jslFWlr16k-ibwO4_P8uSKrxILpti7ZWM-Xvcb_OVZGYsb7aF_1hoBKJjkReNUZq1U0ROMG6CPP7lcR2FyNv8UZ3wZ8KIufWYva5AnN94EM8ircZ4J39EHxE1YmM5uscBzYo7-Om7SNfYj3GGAGAmnpIAYrvuTooYPWE8fGxa3uOVqemSGBkhSSg50feiy1NiG691j6XjL7SoPP4yaSJhS7CZ7sVotsQYa3hYOCmvrGJ4QU324YjANlYhNQUy84KOaDxT5vI7w&h=U5U55G28nY8voUCBQLK0OuUIiAgpyf5w8OjzkJBchoo + 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: FBEFA2365D5C497B8B4FBABC2B192F83 Ref B: MAA201060514051 Ref C: 2025-01-23T01:11:14Z' + status: 202 Accepted + code: 202 + duration: 1.107809904s + - id: 12 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "2" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRBTE5KTFItV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731914355017739&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=LTwEp4gwCnUmMj68MH15uvyvheUlDILDqziN0BeWvcqkn9V3B1MdxYcoFHwEpxzqUJ2ldqjUJAsVusb0nxnMyIKeXwXSVDDQnGWcaX9BOGFfptJeVAHck28XhNFdkWUl2Zt6wVlMJDvY6L6sl2TIzlQPsfU3IY0U_Hfkz56TauEOvF8MDzHlm5KPkIRp797RsXeF_tyFVIZDKm5uwQgLZmjPHGLrFRPjL4m9LMEUY_rACsqOPvdNjQOPnpozT2h57Mp29cunwOu_LrIGqZ9BW03PD75Z-jbvg1qaFlMAL42-A4uPjkh1XnrojyU_VCQUwyck4WLdBMGalUC5LYBvRg&h=i3PdCIJkfX-9H7zm-T2QJ0jxQZp9-vTAG6_pkdier1E + 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRBTE5KTFItV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731914936542794&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=cAe1QuI1VbxTE6THOLAaXl2Tg14BfxFMawrpQ-5vOCAzlTXTMJ3Y1NhUsWrtMNzHB1p3K_maZKg83XTDPdwfnDliiuAbtu4PKDfKR05EvyU1sTxdJ7Ugh7rIvKETZVasyrvGpaiwvAE4qo3S5VrYcbwaYhKrxqliJC4LP4ortowWbLnUeKcPB-oKXRWeZwYUmAdWBJK8HGEjUXpT2H1Al7MzGrEye75JneNl3WVw7LoWY4gq6FbMMdQPv-hWdss5JH2EaVVtOQOQAywDrgtSnAx83PZqI0U3XUrTDC_KnvaroOeL8cLKWJNw1hY1EbdJSaxCYDuDOpowBho99QyMmA&h=vbZW2UrncEP10EVKyS1_wGsrBfQEIrjKVlLWLc0q_JI + 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: 7A6E572583BD48FAACA62FEC7E47C3BC Ref B: MAA201060514051 Ref C: 2025-01-23T01:11:32Z' + status: 202 Accepted + code: 202 + duration: 1.009783419s + - 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: + - "3" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRBTE5KTFItV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731914355017739&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=LTwEp4gwCnUmMj68MH15uvyvheUlDILDqziN0BeWvcqkn9V3B1MdxYcoFHwEpxzqUJ2ldqjUJAsVusb0nxnMyIKeXwXSVDDQnGWcaX9BOGFfptJeVAHck28XhNFdkWUl2Zt6wVlMJDvY6L6sl2TIzlQPsfU3IY0U_Hfkz56TauEOvF8MDzHlm5KPkIRp797RsXeF_tyFVIZDKm5uwQgLZmjPHGLrFRPjL4m9LMEUY_rACsqOPvdNjQOPnpozT2h57Mp29cunwOu_LrIGqZ9BW03PD75Z-jbvg1qaFlMAL42-A4uPjkh1XnrojyU_VCQUwyck4WLdBMGalUC5LYBvRg&h=i3PdCIJkfX-9H7zm-T2QJ0jxQZp9-vTAG6_pkdier1E + 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRBTE5KTFItV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731915117271636&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=B9X0QS34knoQYbDag97EtLj1BF2xjRK-oxj3lSOj2D2bGJES6Oi1euwQSG2TGDu-tRt_agXgqmJXy1sVRUEe4aetOmOqx5PI9l4DQkc4oReNz4kx3WzCL2H80AMenAbnEhe8B9Cy1WimIuG8oAR8pie44Bi8LwGG-fbWQ4ggnl0MBUHlWU-7H7GiyV0ZIg1DCJrqr9GMzEOOtL8VfsVTsw4vHr46Do0XS6ljq4CNzuBikYX2H3LGL4V6SRKFWRs8q196Y_HnAEliJMz6Uz7omehRB09jOQ_tQas09XqbQ-BlfiPoWB9-3LZLb_JqJM2612x1zU_sHUaUcx5YAIZL2w&h=E8JpZebPaFHN0NIc7jbkh4nKIYXHR3hVYY3zPncoPVw + 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: 5FE95B6779904DDCBA35767A4D6DB4B9 Ref B: MAA201060514051 Ref C: 2025-01-23T01:11:50Z' + status: 202 Accepted + code: 202 + duration: 1.021081741s + - 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: + - "4" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRBTE5KTFItV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731914355017739&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=LTwEp4gwCnUmMj68MH15uvyvheUlDILDqziN0BeWvcqkn9V3B1MdxYcoFHwEpxzqUJ2ldqjUJAsVusb0nxnMyIKeXwXSVDDQnGWcaX9BOGFfptJeVAHck28XhNFdkWUl2Zt6wVlMJDvY6L6sl2TIzlQPsfU3IY0U_Hfkz56TauEOvF8MDzHlm5KPkIRp797RsXeF_tyFVIZDKm5uwQgLZmjPHGLrFRPjL4m9LMEUY_rACsqOPvdNjQOPnpozT2h57Mp29cunwOu_LrIGqZ9BW03PD75Z-jbvg1qaFlMAL42-A4uPjkh1XnrojyU_VCQUwyck4WLdBMGalUC5LYBvRg&h=i3PdCIJkfX-9H7zm-T2QJ0jxQZp9-vTAG6_pkdier1E + 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRBTE5KTFItV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731915297806392&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=sFi4IrIBovV_7TWTiNSpZCQcwQdYVmmTt3gVFZIfOl4DdjxKgP-HFuyISmsIrERHBNDMlvOT3YCwwyp7Usegf7a0VOSJWDWYtDZFxHYYx2Oqdr4akF6E16pknRaYwsT9vvfc_4fR8rtr0aVEvf_lbzTaj_60d8Tmos2uRk2I95Fv7HVVdS26a_XRFlL9qg2NIdrKqw17aLmsvTXchB4-q-wLoS3qsv3ORfpzug1aVcx3FABseSjLVa9jcBmdGhws8nUsMpe1BmGffhE0Pklz36XAviFI_ZEqv99fytSRkVd3wUgVftipabq4kEugBnOJexHP0TQ92aeneeOrPARwwg&h=2x8fCbjeTUmZDT4QoCs3RqILmZbxRg08EjdIKnC8GAs + 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: 9B68DF80509D474E8C2471DBF0966830 Ref B: MAA201060514051 Ref C: 2025-01-23T01:12:08Z' + status: 202 Accepted + code: 202 + duration: 1.145885108s + - id: 15 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Test-Request-Attempt: + - "5" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRBTE5KTFItV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731914355017739&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=LTwEp4gwCnUmMj68MH15uvyvheUlDILDqziN0BeWvcqkn9V3B1MdxYcoFHwEpxzqUJ2ldqjUJAsVusb0nxnMyIKeXwXSVDDQnGWcaX9BOGFfptJeVAHck28XhNFdkWUl2Zt6wVlMJDvY6L6sl2TIzlQPsfU3IY0U_Hfkz56TauEOvF8MDzHlm5KPkIRp797RsXeF_tyFVIZDKm5uwQgLZmjPHGLrFRPjL4m9LMEUY_rACsqOPvdNjQOPnpozT2h57Mp29cunwOu_LrIGqZ9BW03PD75Z-jbvg1qaFlMAL42-A4uPjkh1XnrojyU_VCQUwyck4WLdBMGalUC5LYBvRg&h=i3PdCIJkfX-9H7zm-T2QJ0jxQZp9-vTAG6_pkdier1E + 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/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRBTE5KTFItV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731915481832116&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=eIN1Nifx09jKQUVWanozkiit-7DmRQ_SlIQoBzBxV9gP4kwnF6Mam-HYwuX_AEUHugUDfpabHYeCpqXFs60qyxtfGB97W_QUHpqnzSDvr7OzO_gjOaw3LvRVmlhVuMFKSRouOf7FY6cX9-qOgmjHZE6WBL9qd2UtUG1Wf-VIWWGq7L7QGvXtMiQkBmD3REG_Od78s202BTQG0n3ABVvyQBeXxXr7muMson7YO7Ky9LKk3Vzv1gdhpJtl7-YYrkcPCdd3vrmE8z3cX3zfHBqzk1z9Emy-oQ67sxuJO7xSnhLRpj9G-H4i4xVInqR_pBszroo4v4brgBT5q2EubG3wbw&h=CG6uxyd5JQpm0jWZgx4mAl_Souu8W30tbqG9H9abD4Y + 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: 11C85FCAA38646099C3DA3750491B861 Ref B: MAA201060514051 Ref C: 2025-01-23T01:12:27Z' + status: 202 Accepted + code: 202 + duration: 1.017218692s + - 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: + - "6" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRBTE5KTFItV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01&t=638731914355017739&c=MIIHhzCCBm-gAwIBAgITfAWQ0hCHZtQ3fJ4PSAAABZDSEDANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDUwHhcNMjQwOTI3MDkwMTAzWhcNMjUwMzI2MDkwMTAzWjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANt7qVbg97HivqUzi3BPPNiHD4wLqYw03AkBiXDpww3W8iIU6FZbbOXVgCL-rGpnbxPkLEVZ1WtRfvLgR3qDiVRjkSnE2knSE6qtvBRWdqqsD9YiSi5lYW67vgtBA_mHzHNDb0zhZ2iofVE5GjHIKYINZSTo8of54bY_fJe0xenYEq7lMpbffWaoano6LQH1L0hSdzAreTN7T_bTsK7TkXQtx45c1upRueZR1wq4PRd-9AYpkfKHhxnCe5LBeLB-Q88WZbmNxuycYiJZzbEGVcEbg5fYdfYb4QveB2WmK7bCWSEDu7WzRaYN9zfP9ZpVnTHTmRcN-f3uvUzxNBMe26UCAwEAAaOCBHQwggRwMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-hZvdFs6dEoFghfmRS4WsmTQCAWQCAQcwggHLBggrBgEFBQcBAQSCAb0wggG5MGMGCCsGAQUFBzAChldodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpaW5mcmEvQ2VydHMvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmwxLmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MFMGCCsGAQUFBzAChkdodHRwOi8vY3JsMi5hbWUuZ2JsL2FpYS9DTzFQS0lJTlRDQTAxLkFNRS5HQkxfQU1FJTIwSW5mcmElMjBDQSUyMDA1LmNydDBTBggrBgEFBQcwAoZHaHR0cDovL2NybDMuYW1lLmdibC9haWEvQ08xUEtJSU5UQ0EwMS5BTUUuR0JMX0FNRSUyMEluZnJhJTIwQ0ElMjAwNS5jcnQwUwYIKwYBBQUHMAKGR2h0dHA6Ly9jcmw0LmFtZS5nYmwvYWlhL0NPMVBLSUlOVENBMDEuQU1FLkdCTF9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3J0MB0GA1UdDgQWBBT07kfCxeuv0whuO9NP27UpdS8ZAzAOBgNVHQ8BAf8EBAMCBaAwggEmBgNVHR8EggEdMIIBGTCCARWgggERoIIBDYY_aHR0cDovL2NybC5taWNyb3NvZnQuY29tL3BraWluZnJhL0NSTC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMS5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMi5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsMy5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JshjFodHRwOi8vY3JsNC5hbWUuZ2JsL2NybC9BTUUlMjBJbmZyYSUyMENBJTIwMDUuY3JsMIGdBgNVHSAEgZUwgZIwDAYKKwYBBAGCN3sBATBmBgorBgEEAYI3ewICMFgwVgYIKwYBBQUHAgIwSh5IADMAMwBlADAAMQA5ADIAMQAtADQAZAA2ADQALQA0AGYAOABjAC0AYQAwADUANQAtADUAYgBkAGEAZgBmAGQANQBlADMAMwBkMAwGCisGAQQBgjd7AwEwDAYKKwYBBAGCN3sEAjAfBgNVHSMEGDAWgBR61hmFKHlscXYeYPjzS--iBUIWHTAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDQYJKoZIhvcNAQELBQADggEBAFB6-4Y-Z7skVWaPi2vBOob5I-JLv_MqkE8tGWMMCFI9McOWBWfeJWV7aA4X4MEwnVfuFzE4mdak49KhEWgAbnGBMMumWJtlE1VDYwoYj3k6VDrhg4K8cRAO24Ezl3_L9yTqPLHhnKpjnjZONChdqvy6tXy9zLDyo9uThhHykSdIVQPaynG83JYpUlN1akyNJVLxae9NCRV251OTh00g9z6gt1b4nk-Nszy6YtF1AoskPTpeZVcsxGTlq3ITXveDCeZrYbQ6EtZf5O8ekTrNsG-8DMSDIgDta1Dud4RchYh74jtodoiwmneC_ZG5VDcpozae4Mh1w3_kD4-E11i1U1U&s=LTwEp4gwCnUmMj68MH15uvyvheUlDILDqziN0BeWvcqkn9V3B1MdxYcoFHwEpxzqUJ2ldqjUJAsVusb0nxnMyIKeXwXSVDDQnGWcaX9BOGFfptJeVAHck28XhNFdkWUl2Zt6wVlMJDvY6L6sl2TIzlQPsfU3IY0U_Hfkz56TauEOvF8MDzHlm5KPkIRp797RsXeF_tyFVIZDKm5uwQgLZmjPHGLrFRPjL4m9LMEUY_rACsqOPvdNjQOPnpozT2h57Mp29cunwOu_LrIGqZ9BW03PD75Z-jbvg1qaFlMAL42-A4uPjkh1XnrojyU_VCQUwyck4WLdBMGalUC5LYBvRg&h=i3PdCIJkfX-9H7zm-T2QJ0jxQZp9-vTAG6_pkdier1E + 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: 1B85330722D648FEBD8DEC51883F32AC Ref B: MAA201060514051 Ref C: 2025-01-23T01:12:45Z' + status: 200 OK + code: 200 + duration: 532.525269ms + - 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-alnjlr/providers/Microsoft.ContainerRegistry/registries/asotestffliwc?api-version=2023-07-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-alnjlr'' 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: C06894974A774A319039AEAD006617AF Ref B: MAA201060514051 Ref C: 2025-01-23T01:12:48Z' + status: 404 Not Found + code: 404 + duration: 537.472011ms + - id: 18 + request: + proto: HTTP/1.1 + proto_major: 1 + proto_minor: 1 + content_length: 0 + transfer_encoding: [] + trailer: {} + host: management.azure.com + remote_addr: "" + request_uri: "" + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-alnjlr/providers/Microsoft.ContainerRegistry/registries/asotestffliwc/replications/asotestqxrqmd?api-version=2023-07-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-alnjlr'' 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: 6DB51F1B059346B5B70D1477EBD8EE9B Ref B: MAA201060514051 Ref C: 2025-01-23T01:12:54Z' + status: 404 Not Found + code: 404 + duration: 536.8847ms diff --git a/v2/samples/containerregistry/v1api/v1api20210901_registry.yaml b/v2/samples/containerregistry/v1api20210901/v1api20210901_registry.yaml similarity index 100% rename from v2/samples/containerregistry/v1api/v1api20210901_registry.yaml rename to v2/samples/containerregistry/v1api20210901/v1api20210901_registry.yaml diff --git a/v2/samples/containerregistry/v1api20230701/v1api20230701_registry.yaml b/v2/samples/containerregistry/v1api20230701/v1api20230701_registry.yaml new file mode 100644 index 00000000000..2fe696287ab --- /dev/null +++ b/v2/samples/containerregistry/v1api20230701/v1api20230701_registry.yaml @@ -0,0 +1,13 @@ +apiVersion: containerregistry.azure.com/v1api20230701 +kind: Registry +metadata: + name: sampleregistry + namespace: default +spec: + location: westcentralus + owner: + name: aso-sample-rg + publicNetworkAccess: Enabled + sku: + name: Premium + zoneRedundancy: Disabled diff --git a/v2/samples/containerregistry/v1api20230701/v1api20230701_registryreplication.yaml b/v2/samples/containerregistry/v1api20230701/v1api20230701_registryreplication.yaml new file mode 100644 index 00000000000..552e9710887 --- /dev/null +++ b/v2/samples/containerregistry/v1api20230701/v1api20230701_registryreplication.yaml @@ -0,0 +1,12 @@ +apiVersion: containerregistry.azure.com/v1api20230701 +kind: RegistryReplication +metadata: + name: replication + namespace: default +spec: + location: westeurope + owner: + name: sampleregistry + regionEndpointEnabled: false + zoneRedundancy: Disabled + \ No newline at end of file