From a7fbc8f36acd9976a7d179df82af06a62dc086f1 Mon Sep 17 00:00:00 2001 From: Matthew Christopher Date: Thu, 15 Jun 2023 15:19:27 -0700 Subject: [PATCH 1/2] Update ASOv1 Helm chart for 1.0.59040 release (#3079) --- Makefile | 2 +- charts/azure-service-operator-1.12.0.tgz | Bin 0 -> 35140 bytes charts/azure-service-operator/Chart.yaml | 4 +- ...n_azuresqlactions.azure.microsoft.com.yaml | 2 + ...azuresqldatabases.azure.microsoft.com.yaml | 3 ++ ...sqlfailovergroups.azure.microsoft.com.yaml | 4 ++ ...esqlfirewallrules.azure.microsoft.com.yaml | 2 + ...resqlmanagedusers.azure.microsoft.com.yaml | 2 + ...n_azuresqlservers.azure.microsoft.com.yaml | 2 + ...ion_azuresqlusers.azure.microsoft.com.yaml | 4 +- ...azuresqlvnetrules.azure.microsoft.com.yaml | 2 + charts/azure-service-operator/values.yaml | 2 +- charts/index.yaml | 45 ++++++++++++------ 13 files changed, 55 insertions(+), 19 deletions(-) create mode 100644 charts/azure-service-operator-1.12.0.tgz diff --git a/Makefile b/Makefile index f7501b418f5..241139122ef 100644 --- a/Makefile +++ b/Makefile @@ -206,7 +206,7 @@ validate-cainjection-files: # Generate manifests for helm and package them up .PHONY: helm-chart-manifests -helm-chart-manifests: LATEST_TAG := $(shell curl -sL https://api.github.com/repos/Azure/azure-service-operator/releases/latest | jq '.tag_name' --raw-output ) +helm-chart-manifests: LATEST_TAG := $(shell curl -sL https://api.github.com/repos/Azure/azure-service-operator/releases | jq '[.[] | select(.tag_name | startswith("1.0")).tag_name][0]' --raw-output ) helm-chart-manifests: KUBE_RBAC_PROXY := gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1 helm-chart-manifests: generate @echo "Latest released tag is $(LATEST_TAG)" diff --git a/charts/azure-service-operator-1.12.0.tgz b/charts/azure-service-operator-1.12.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..30d215b13cdd59f8bf8e2c2189c7385df3445e00 GIT binary patch literal 35140 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 Date: Fri, 16 Jun 2023 13:00:29 +1200 Subject: [PATCH 2/2] Export API keys for search service (#3065) --- .../search_service_extension.go | 150 ++++++ .../search_service_spec_arm_types_gen.go | 19 + .../search_service_spec_arm_types_gen_test.go | 123 +++++ .../v1api20220901/search_service_types_gen.go | 486 +++++++++++++++++- .../search_service_types_gen_test.go | 408 +++++++++++++++ v2/api/search/v1api20220901/structure.txt | 19 +- .../v1api20220901/zz_generated.deepcopy.go | 145 ++++++ .../search_service_types_gen.go | 49 +- .../search_service_types_gen_test.go | 240 +++++++++ .../search/v1api20220901storage/structure.txt | 14 +- .../zz_generated.deepcopy.go | 128 +++++ v2/api/search/versions_matrix.md | 3 + v2/azure-arm.yaml | 8 +- v2/cmd/asoctl/go.mod | 1 + v2/cmd/asoctl/go.sum | 4 +- v2/go.mod | 3 +- v2/go.sum | 5 +- .../crd_search_searchservice_test.go | 28 + ...Test_Search_v1api_CreationAndDeletion.yaml | 387 ++++++++------ .../Test_Search_SearchService_CRUD.yaml | 432 +++++++++++++--- v2/internal/testcommon/test_context.go | 11 + .../v1api20181130_userassignedidentity.yaml | 9 - .../v1api/v1api20220901_searchservice.yaml | 14 + 23 files changed, 2417 insertions(+), 269 deletions(-) create mode 100644 v2/api/search/customizations/search_service_extension.go delete mode 100644 v2/samples/search/v1api/refs/v1api20181130_userassignedidentity.yaml diff --git a/v2/api/search/customizations/search_service_extension.go b/v2/api/search/customizations/search_service_extension.go new file mode 100644 index 00000000000..781b3155a54 --- /dev/null +++ b/v2/api/search/customizations/search_service_extension.go @@ -0,0 +1,150 @@ +/* + * Copyright (c) Microsoft Corporation. + * Licensed under the MIT license. + */ + +package customizations + +import ( + "context" + + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/search/armsearch" + "github.com/go-logr/logr" + "github.com/pkg/errors" + "k8s.io/api/core/v1" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/conversion" + + search "github.com/Azure/azure-service-operator/v2/api/search/v1api20220901storage" + "github.com/Azure/azure-service-operator/v2/internal/genericarmclient" + . "github.com/Azure/azure-service-operator/v2/internal/logging" + "github.com/Azure/azure-service-operator/v2/internal/util/to" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime/secrets" +) + +var _ genruntime.KubernetesExporter = &SearchServiceExtension{} + +func (ext *SearchServiceExtension) ExportKubernetesResources( + ctx context.Context, + obj genruntime.MetaObject, + armClient *genericarmclient.GenericClient, + log logr.Logger) ([]client.Object, error) { + + // This has to be the current hub devices version. It will need to be updated + // if the hub devices version changes. + typedObj, ok := obj.(*search.SearchService) + if !ok { + return nil, errors.Errorf("cannot run on unknown resource type %T, expected *devices.IotHub", obj) + } + + // Type assert that we are the hub type. This will fail to compile if + // the hub type has been changed but this extension has not + var _ conversion.Hub = typedObj + + hasSecrets := secretsSpecified(typedObj) + if !hasSecrets { + log.V(Debug).Info("No secrets retrieval to perform as operatorSpec is empty") + return nil, nil + } + + id, err := genruntime.GetAndParseResourceID(typedObj) + if err != nil { + return nil, err + } + + queryKeys := make(map[string]armsearch.QueryKey) + var adminKeys armsearch.AdminKeysClientGetResponse + // Only bother calling ListKeys if there are secrets to retrieve + if hasSecrets { + subscription := id.SubscriptionID + // Using armClient.ClientOptions() here ensures we share the same HTTP connection, so this is not opening a new + // connection each time through + var queryKeysClient *armsearch.QueryKeysClient + queryKeysClient, err = armsearch.NewQueryKeysClient(subscription, armClient.Creds(), armClient.ClientOptions()) + if err != nil { + return nil, errors.Wrapf(err, "failed to create new SeachServiceQueryClient") + } + + var pager *runtime.Pager[armsearch.QueryKeysClientListBySearchServiceResponse] + var resp armsearch.QueryKeysClientListBySearchServiceResponse + pager = queryKeysClient.NewListBySearchServicePager(id.ResourceGroupName, typedObj.AzureName(), nil, nil) + for pager.More() { + resp, err = pager.NextPage(ctx) + addSecretsToMap(resp.Value, queryKeys) + } + + if err != nil { + return nil, errors.Wrapf(err, "failed listing query keys") + } + + var adminKeysClient *armsearch.AdminKeysClient + adminKeysClient, err = armsearch.NewAdminKeysClient(subscription, armClient.Creds(), armClient.ClientOptions()) + if err != nil { + return nil, errors.Wrapf(err, "failed to create new SeachServiceAdminClient") + } + + adminKeys, err = adminKeysClient.Get(ctx, id.ResourceGroupName, typedObj.AzureName(), nil, nil) + if err != nil { + return nil, err + } + } + + secretSlice, err := secretsToWrite(typedObj, queryKeys, adminKeys) + if err != nil { + return nil, err + } + + return secrets.SliceToClientObjectSlice(secretSlice), nil +} + +func secretsSpecified(obj *search.SearchService) bool { + if obj.Spec.OperatorSpec == nil || obj.Spec.OperatorSpec.Secrets == nil { + return false + } + + secrets := obj.Spec.OperatorSpec.Secrets + + if secrets.AdminPrimaryKey != nil || + secrets.AdminSecondaryKey != nil || + secrets.QueryKey != nil { + return true + } + + return false +} + +func addSecretsToMap(keys []*armsearch.QueryKey, result map[string]armsearch.QueryKey) { + for _, key := range keys { + if key == nil { + continue + } + + // We have to do it this way, since the autogenerated query key has key.Name == nil. See screenshot in https://learn.microsoft.com/en-us/azure/search/search-security-api-keys?tabs=portal-use%2Cportal-find%2Cportal-query#find-existing-keys + if key.Name == nil && key.Key != nil { + result["default"] = *key + continue + } + + result[*key.Name] = *key + } +} + +func secretsToWrite(obj *search.SearchService, queryKeys map[string]armsearch.QueryKey, adminKeys armsearch.AdminKeysClientGetResponse) ([]*v1.Secret, error) { + operatorSpecSecrets := obj.Spec.OperatorSpec.Secrets + if operatorSpecSecrets == nil { + return nil, errors.Errorf("unexpected nil operatorspec") + } + + collector := secrets.NewCollector(obj.Namespace) + defaultQueryKey, ok := queryKeys["default"] + if ok { + collector.AddValue(operatorSpecSecrets.QueryKey, to.Value(defaultQueryKey.Key)) + } + + collector.AddValue(operatorSpecSecrets.AdminPrimaryKey, to.Value(adminKeys.PrimaryKey)) + collector.AddValue(operatorSpecSecrets.AdminSecondaryKey, to.Value(adminKeys.SecondaryKey)) + + return collector.Values() +} diff --git a/v2/api/search/v1api20220901/search_service_spec_arm_types_gen.go b/v2/api/search/v1api20220901/search_service_spec_arm_types_gen.go index 144871822d9..aa5be344f39 100644 --- a/v2/api/search/v1api20220901/search_service_spec_arm_types_gen.go +++ b/v2/api/search/v1api20220901/search_service_spec_arm_types_gen.go @@ -49,6 +49,10 @@ type Identity_ARM struct { // Properties of the search service. type SearchServiceProperties_ARM struct { + // AuthOptions: Defines the options for how the data plane API of a search service authenticates requests. This cannot be + // set if 'disableLocalAuth' is set to true. + AuthOptions *DataPlaneAuthOptions_ARM `json:"authOptions,omitempty"` + // DisableLocalAuth: When set to true, calls to the search service will not be permitted to utilize API keys for // authentication. This cannot be set to true if 'dataPlaneAuthOptions' are defined. DisableLocalAuth *bool `json:"disableLocalAuth,omitempty"` @@ -91,6 +95,14 @@ type Sku_ARM struct { Name *Sku_Name `json:"name,omitempty"` } +// Defines the options for how the data plane API of a Search service authenticates requests. This cannot be set if +// 'disableLocalAuth' is set to true. +type DataPlaneAuthOptions_ARM struct { + // AadOrApiKey: Indicates that either the API key or an access token from Azure Active Directory can be used for + // authentication. + AadOrApiKey *DataPlaneAadOrApiKeyAuthOption_ARM `json:"aadOrApiKey,omitempty"` +} + // Describes a policy that determines how resources within the search service are to be encrypted with Customer Managed // Keys. type EncryptionWithCmk_ARM struct { @@ -128,6 +140,13 @@ const ( Sku_Name_Storage_Optimized_L2 = Sku_Name("storage_optimized_l2") ) +// Indicates that either the API key or an access token from Azure Active Directory can be used for authentication. +type DataPlaneAadOrApiKeyAuthOption_ARM struct { + // AadAuthFailureMode: Describes what response the data plane API of a Search service would send for requests that failed + // authentication. + AadAuthFailureMode *DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode `json:"aadAuthFailureMode,omitempty"` +} + // The IP restriction rule of the Azure Cognitive Search service. type IpRule_ARM struct { // Value: Value corresponding to a single IPv4 address (eg., 123.1.2.3) or an IP range in CIDR format (eg., 123.1.2.3/24) diff --git a/v2/api/search/v1api20220901/search_service_spec_arm_types_gen_test.go b/v2/api/search/v1api20220901/search_service_spec_arm_types_gen_test.go index acd3b1e732b..11effbd66d1 100644 --- a/v2/api/search/v1api20220901/search_service_spec_arm_types_gen_test.go +++ b/v2/api/search/v1api20220901/search_service_spec_arm_types_gen_test.go @@ -232,6 +232,7 @@ func AddIndependentPropertyGeneratorsForSearchServiceProperties_ARM(gens map[str // AddRelatedPropertyGeneratorsForSearchServiceProperties_ARM is a factory method for creating gopter generators func AddRelatedPropertyGeneratorsForSearchServiceProperties_ARM(gens map[string]gopter.Gen) { + gens["AuthOptions"] = gen.PtrOf(DataPlaneAuthOptions_ARMGenerator()) gens["EncryptionWithCmk"] = gen.PtrOf(EncryptionWithCmk_ARMGenerator()) gens["NetworkRuleSet"] = gen.PtrOf(NetworkRuleSet_ARMGenerator()) } @@ -303,6 +304,67 @@ func AddIndependentPropertyGeneratorsForSku_ARM(gens map[string]gopter.Gen) { Sku_Name_Storage_Optimized_L2)) } +func Test_DataPlaneAuthOptions_ARM_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 DataPlaneAuthOptions_ARM via JSON returns original", + prop.ForAll(RunJSONSerializationTestForDataPlaneAuthOptions_ARM, DataPlaneAuthOptions_ARMGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForDataPlaneAuthOptions_ARM runs a test to see if a specific instance of DataPlaneAuthOptions_ARM round trips to JSON and back losslessly +func RunJSONSerializationTestForDataPlaneAuthOptions_ARM(subject DataPlaneAuthOptions_ARM) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual DataPlaneAuthOptions_ARM + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of DataPlaneAuthOptions_ARM instances for property testing - lazily instantiated by +// DataPlaneAuthOptions_ARMGenerator() +var dataPlaneAuthOptions_ARMGenerator gopter.Gen + +// DataPlaneAuthOptions_ARMGenerator returns a generator of DataPlaneAuthOptions_ARM instances for property testing. +func DataPlaneAuthOptions_ARMGenerator() gopter.Gen { + if dataPlaneAuthOptions_ARMGenerator != nil { + return dataPlaneAuthOptions_ARMGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForDataPlaneAuthOptions_ARM(generators) + dataPlaneAuthOptions_ARMGenerator = gen.Struct(reflect.TypeOf(DataPlaneAuthOptions_ARM{}), generators) + + return dataPlaneAuthOptions_ARMGenerator +} + +// AddRelatedPropertyGeneratorsForDataPlaneAuthOptions_ARM is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForDataPlaneAuthOptions_ARM(gens map[string]gopter.Gen) { + gens["AadOrApiKey"] = gen.PtrOf(DataPlaneAadOrApiKeyAuthOption_ARMGenerator()) +} + func Test_EncryptionWithCmk_ARM_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -424,6 +486,67 @@ func AddRelatedPropertyGeneratorsForNetworkRuleSet_ARM(gens map[string]gopter.Ge gens["IpRules"] = gen.SliceOf(IpRule_ARMGenerator()) } +func Test_DataPlaneAadOrApiKeyAuthOption_ARM_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 DataPlaneAadOrApiKeyAuthOption_ARM via JSON returns original", + prop.ForAll(RunJSONSerializationTestForDataPlaneAadOrApiKeyAuthOption_ARM, DataPlaneAadOrApiKeyAuthOption_ARMGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForDataPlaneAadOrApiKeyAuthOption_ARM runs a test to see if a specific instance of DataPlaneAadOrApiKeyAuthOption_ARM round trips to JSON and back losslessly +func RunJSONSerializationTestForDataPlaneAadOrApiKeyAuthOption_ARM(subject DataPlaneAadOrApiKeyAuthOption_ARM) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual DataPlaneAadOrApiKeyAuthOption_ARM + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of DataPlaneAadOrApiKeyAuthOption_ARM instances for property testing - lazily instantiated by +// DataPlaneAadOrApiKeyAuthOption_ARMGenerator() +var dataPlaneAadOrApiKeyAuthOption_ARMGenerator gopter.Gen + +// DataPlaneAadOrApiKeyAuthOption_ARMGenerator returns a generator of DataPlaneAadOrApiKeyAuthOption_ARM instances for property testing. +func DataPlaneAadOrApiKeyAuthOption_ARMGenerator() gopter.Gen { + if dataPlaneAadOrApiKeyAuthOption_ARMGenerator != nil { + return dataPlaneAadOrApiKeyAuthOption_ARMGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForDataPlaneAadOrApiKeyAuthOption_ARM(generators) + dataPlaneAadOrApiKeyAuthOption_ARMGenerator = gen.Struct(reflect.TypeOf(DataPlaneAadOrApiKeyAuthOption_ARM{}), generators) + + return dataPlaneAadOrApiKeyAuthOption_ARMGenerator +} + +// AddIndependentPropertyGeneratorsForDataPlaneAadOrApiKeyAuthOption_ARM is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForDataPlaneAadOrApiKeyAuthOption_ARM(gens map[string]gopter.Gen) { + gens["AadAuthFailureMode"] = gen.PtrOf(gen.OneConstOf(DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode_Http401WithBearerChallenge, DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode_Http403)) +} + func Test_IpRule_ARM_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() diff --git a/v2/api/search/v1api20220901/search_service_types_gen.go b/v2/api/search/v1api20220901/search_service_types_gen.go index e2c8784f169..b0a7547c896 100644 --- a/v2/api/search/v1api20220901/search_service_types_gen.go +++ b/v2/api/search/v1api20220901/search_service_types_gen.go @@ -226,7 +226,7 @@ func (service *SearchService) ValidateUpdate(old runtime.Object) error { // createValidations validates the creation of the resource func (service *SearchService) createValidations() []func() error { - return []func() error{service.validateResourceReferences} + return []func() error{service.validateResourceReferences, service.validateSecretDestinations} } // deleteValidations validates the deletion of the resource @@ -240,7 +240,11 @@ func (service *SearchService) updateValidations() []func(old runtime.Object) err func(old runtime.Object) error { return service.validateResourceReferences() }, - service.validateWriteOnceProperties} + service.validateWriteOnceProperties, + func(old runtime.Object) error { + return service.validateSecretDestinations() + }, + } } // validateResourceReferences validates all resource references @@ -252,6 +256,22 @@ func (service *SearchService) validateResourceReferences() error { return genruntime.ValidateResourceReferences(refs) } +// validateSecretDestinations validates there are no colliding genruntime.SecretDestination's +func (service *SearchService) validateSecretDestinations() error { + if service.Spec.OperatorSpec == nil { + return nil + } + if service.Spec.OperatorSpec.Secrets == nil { + return nil + } + toValidate := []*genruntime.SecretDestination{ + service.Spec.OperatorSpec.Secrets.AdminPrimaryKey, + service.Spec.OperatorSpec.Secrets.AdminSecondaryKey, + service.Spec.OperatorSpec.Secrets.QueryKey, + } + return genruntime.ValidateSecretDestinations(toValidate) +} + // validateWriteOnceProperties validates all WriteOnce properties func (service *SearchService) validateWriteOnceProperties(old runtime.Object) error { oldObj, ok := old.(*SearchService) @@ -339,6 +359,10 @@ type APIVersion string const APIVersion_Value = APIVersion("2022-09-01") type SearchService_Spec struct { + // AuthOptions: Defines the options for how the data plane API of a search service authenticates requests. This cannot be + // set if 'disableLocalAuth' is set to true. + AuthOptions *DataPlaneAuthOptions `json:"authOptions,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"` @@ -366,6 +390,10 @@ type SearchService_Spec struct { // NetworkRuleSet: Network specific rules that determine how the Azure Cognitive Search service may be reached. 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 *SearchServiceOperatorSpec `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 @@ -427,7 +455,8 @@ func (service *SearchService_Spec) ConvertToARM(resolved genruntime.ConvertToARM result.Name = resolved.Name // Set property ‘Properties’: - if service.DisableLocalAuth != nil || + if service.AuthOptions != nil || + service.DisableLocalAuth != nil || service.EncryptionWithCmk != nil || service.HostingMode != nil || service.NetworkRuleSet != nil || @@ -436,6 +465,14 @@ func (service *SearchService_Spec) ConvertToARM(resolved genruntime.ConvertToARM service.ReplicaCount != nil { result.Properties = &SearchServiceProperties_ARM{} } + if service.AuthOptions != nil { + authOptions_ARM, err := (*service.AuthOptions).ConvertToARM(resolved) + if err != nil { + return nil, err + } + authOptions := *authOptions_ARM.(*DataPlaneAuthOptions_ARM) + result.Properties.AuthOptions = &authOptions + } if service.DisableLocalAuth != nil { disableLocalAuth := *service.DisableLocalAuth result.Properties.DisableLocalAuth = &disableLocalAuth @@ -505,6 +542,20 @@ func (service *SearchService_Spec) PopulateFromARM(owner genruntime.ArbitraryOwn return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected SearchService_Spec_ARM, got %T", armInput) } + // Set property ‘AuthOptions’: + // copying flattened property: + if typedInput.Properties != nil { + if typedInput.Properties.AuthOptions != nil { + var authOptions1 DataPlaneAuthOptions + err := authOptions1.PopulateFromARM(owner, *typedInput.Properties.AuthOptions) + if err != nil { + return err + } + authOptions := authOptions1 + service.AuthOptions = &authOptions + } + } + // Set property ‘AzureName’: service.SetAzureName(genruntime.ExtractKubernetesResourceNameFromARMName(typedInput.Name)) @@ -571,6 +622,8 @@ func (service *SearchService_Spec) PopulateFromARM(owner genruntime.ArbitraryOwn } } + // no assignment for property ‘OperatorSpec’ + // Set property ‘Owner’: service.Owner = &genruntime.KnownResourceReference{Name: owner.Name} @@ -677,6 +730,18 @@ func (service *SearchService_Spec) ConvertSpecTo(destination genruntime.Converti // AssignProperties_From_SearchService_Spec populates our SearchService_Spec from the provided source SearchService_Spec func (service *SearchService_Spec) AssignProperties_From_SearchService_Spec(source *v1api20220901s.SearchService_Spec) error { + // AuthOptions + if source.AuthOptions != nil { + var authOption DataPlaneAuthOptions + err := authOption.AssignProperties_From_DataPlaneAuthOptions(source.AuthOptions) + if err != nil { + return errors.Wrap(err, "calling AssignProperties_From_DataPlaneAuthOptions() to populate field AuthOptions") + } + service.AuthOptions = &authOption + } else { + service.AuthOptions = nil + } + // AzureName service.AzureName = source.AzureName @@ -735,6 +800,18 @@ func (service *SearchService_Spec) AssignProperties_From_SearchService_Spec(sour service.NetworkRuleSet = nil } + // OperatorSpec + if source.OperatorSpec != nil { + var operatorSpec SearchServiceOperatorSpec + err := operatorSpec.AssignProperties_From_SearchServiceOperatorSpec(source.OperatorSpec) + if err != nil { + return errors.Wrap(err, "calling AssignProperties_From_SearchServiceOperatorSpec() to populate field OperatorSpec") + } + service.OperatorSpec = &operatorSpec + } else { + service.OperatorSpec = nil + } + // Owner if source.Owner != nil { owner := source.Owner.Copy() @@ -791,6 +868,18 @@ func (service *SearchService_Spec) AssignProperties_To_SearchService_Spec(destin // Create a new property bag propertyBag := genruntime.NewPropertyBag() + // AuthOptions + if service.AuthOptions != nil { + var authOption v1api20220901s.DataPlaneAuthOptions + err := service.AuthOptions.AssignProperties_To_DataPlaneAuthOptions(&authOption) + if err != nil { + return errors.Wrap(err, "calling AssignProperties_To_DataPlaneAuthOptions() to populate field AuthOptions") + } + destination.AuthOptions = &authOption + } else { + destination.AuthOptions = nil + } + // AzureName destination.AzureName = service.AzureName @@ -849,6 +938,18 @@ func (service *SearchService_Spec) AssignProperties_To_SearchService_Spec(destin destination.NetworkRuleSet = nil } + // OperatorSpec + if service.OperatorSpec != nil { + var operatorSpec v1api20220901s.SearchServiceOperatorSpec + err := service.OperatorSpec.AssignProperties_To_SearchServiceOperatorSpec(&operatorSpec) + if err != nil { + return errors.Wrap(err, "calling AssignProperties_To_SearchServiceOperatorSpec() to populate field OperatorSpec") + } + destination.OperatorSpec = &operatorSpec + } else { + destination.OperatorSpec = nil + } + // OriginalVersion destination.OriginalVersion = service.OriginalVersion() @@ -913,6 +1014,18 @@ func (service *SearchService_Spec) AssignProperties_To_SearchService_Spec(destin // Initialize_From_SearchService_STATUS populates our SearchService_Spec from the provided source SearchService_STATUS func (service *SearchService_Spec) Initialize_From_SearchService_STATUS(source *SearchService_STATUS) error { + // AuthOptions + if source.AuthOptions != nil { + var authOption DataPlaneAuthOptions + err := authOption.Initialize_From_DataPlaneAuthOptions_STATUS(source.AuthOptions) + if err != nil { + return errors.Wrap(err, "calling Initialize_From_DataPlaneAuthOptions_STATUS() to populate field AuthOptions") + } + service.AuthOptions = &authOption + } else { + service.AuthOptions = nil + } + // DisableLocalAuth if source.DisableLocalAuth != nil { disableLocalAuth := *source.DisableLocalAuth @@ -1722,6 +1835,128 @@ func (service *SearchService_STATUS) AssignProperties_To_SearchService_STATUS(de return nil } +// Defines the options for how the data plane API of a Search service authenticates requests. This cannot be set if +// 'disableLocalAuth' is set to true. +type DataPlaneAuthOptions struct { + // AadOrApiKey: Indicates that either the API key or an access token from Azure Active Directory can be used for + // authentication. + AadOrApiKey *DataPlaneAadOrApiKeyAuthOption `json:"aadOrApiKey,omitempty"` +} + +var _ genruntime.ARMTransformer = &DataPlaneAuthOptions{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (options *DataPlaneAuthOptions) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if options == nil { + return nil, nil + } + result := &DataPlaneAuthOptions_ARM{} + + // Set property ‘AadOrApiKey’: + if options.AadOrApiKey != nil { + aadOrApiKey_ARM, err := (*options.AadOrApiKey).ConvertToARM(resolved) + if err != nil { + return nil, err + } + aadOrApiKey := *aadOrApiKey_ARM.(*DataPlaneAadOrApiKeyAuthOption_ARM) + result.AadOrApiKey = &aadOrApiKey + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (options *DataPlaneAuthOptions) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &DataPlaneAuthOptions_ARM{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (options *DataPlaneAuthOptions) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(DataPlaneAuthOptions_ARM) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected DataPlaneAuthOptions_ARM, got %T", armInput) + } + + // Set property ‘AadOrApiKey’: + if typedInput.AadOrApiKey != nil { + var aadOrApiKey1 DataPlaneAadOrApiKeyAuthOption + err := aadOrApiKey1.PopulateFromARM(owner, *typedInput.AadOrApiKey) + if err != nil { + return err + } + aadOrApiKey := aadOrApiKey1 + options.AadOrApiKey = &aadOrApiKey + } + + // No error + return nil +} + +// AssignProperties_From_DataPlaneAuthOptions populates our DataPlaneAuthOptions from the provided source DataPlaneAuthOptions +func (options *DataPlaneAuthOptions) AssignProperties_From_DataPlaneAuthOptions(source *v1api20220901s.DataPlaneAuthOptions) error { + + // AadOrApiKey + if source.AadOrApiKey != nil { + var aadOrApiKey DataPlaneAadOrApiKeyAuthOption + err := aadOrApiKey.AssignProperties_From_DataPlaneAadOrApiKeyAuthOption(source.AadOrApiKey) + if err != nil { + return errors.Wrap(err, "calling AssignProperties_From_DataPlaneAadOrApiKeyAuthOption() to populate field AadOrApiKey") + } + options.AadOrApiKey = &aadOrApiKey + } else { + options.AadOrApiKey = nil + } + + // No error + return nil +} + +// AssignProperties_To_DataPlaneAuthOptions populates the provided destination DataPlaneAuthOptions from our DataPlaneAuthOptions +func (options *DataPlaneAuthOptions) AssignProperties_To_DataPlaneAuthOptions(destination *v1api20220901s.DataPlaneAuthOptions) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AadOrApiKey + if options.AadOrApiKey != nil { + var aadOrApiKey v1api20220901s.DataPlaneAadOrApiKeyAuthOption + err := options.AadOrApiKey.AssignProperties_To_DataPlaneAadOrApiKeyAuthOption(&aadOrApiKey) + if err != nil { + return errors.Wrap(err, "calling AssignProperties_To_DataPlaneAadOrApiKeyAuthOption() to populate field AadOrApiKey") + } + destination.AadOrApiKey = &aadOrApiKey + } else { + destination.AadOrApiKey = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_DataPlaneAuthOptions_STATUS populates our DataPlaneAuthOptions from the provided source DataPlaneAuthOptions_STATUS +func (options *DataPlaneAuthOptions) Initialize_From_DataPlaneAuthOptions_STATUS(source *DataPlaneAuthOptions_STATUS) error { + + // AadOrApiKey + if source.AadOrApiKey != nil { + var aadOrApiKey DataPlaneAadOrApiKeyAuthOption + err := aadOrApiKey.Initialize_From_DataPlaneAadOrApiKeyAuthOption_STATUS(source.AadOrApiKey) + if err != nil { + return errors.Wrap(err, "calling Initialize_From_DataPlaneAadOrApiKeyAuthOption_STATUS() to populate field AadOrApiKey") + } + options.AadOrApiKey = &aadOrApiKey + } else { + options.AadOrApiKey = nil + } + + // No error + return nil +} + // Defines the options for how the data plane API of a Search service authenticates requests. This cannot be set if // 'disableLocalAuth' is set to true. type DataPlaneAuthOptions_STATUS struct { @@ -2534,6 +2769,59 @@ func (connection *PrivateEndpointConnection_STATUS) AssignProperties_To_PrivateE return nil } +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type SearchServiceOperatorSpec struct { + // Secrets: configures where to place Azure generated secrets. + Secrets *SearchServiceOperatorSecrets `json:"secrets,omitempty"` +} + +// AssignProperties_From_SearchServiceOperatorSpec populates our SearchServiceOperatorSpec from the provided source SearchServiceOperatorSpec +func (operator *SearchServiceOperatorSpec) AssignProperties_From_SearchServiceOperatorSpec(source *v1api20220901s.SearchServiceOperatorSpec) error { + + // Secrets + if source.Secrets != nil { + var secret SearchServiceOperatorSecrets + err := secret.AssignProperties_From_SearchServiceOperatorSecrets(source.Secrets) + if err != nil { + return errors.Wrap(err, "calling AssignProperties_From_SearchServiceOperatorSecrets() to populate field Secrets") + } + operator.Secrets = &secret + } else { + operator.Secrets = nil + } + + // No error + return nil +} + +// AssignProperties_To_SearchServiceOperatorSpec populates the provided destination SearchServiceOperatorSpec from our SearchServiceOperatorSpec +func (operator *SearchServiceOperatorSpec) AssignProperties_To_SearchServiceOperatorSpec(destination *v1api20220901s.SearchServiceOperatorSpec) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // Secrets + if operator.Secrets != nil { + var secret v1api20220901s.SearchServiceOperatorSecrets + err := operator.Secrets.AssignProperties_To_SearchServiceOperatorSecrets(&secret) + if err != nil { + return errors.Wrap(err, "calling AssignProperties_To_SearchServiceOperatorSecrets() to populate field Secrets") + } + destination.Secrets = &secret + } else { + destination.Secrets = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + // +kubebuilder:validation:Enum={"default","highDensity"} type SearchServiceProperties_HostingMode string @@ -2821,6 +3109,106 @@ func (sku *Sku_STATUS) AssignProperties_To_Sku_STATUS(destination *v1api20220901 return nil } +// Indicates that either the API key or an access token from Azure Active Directory can be used for authentication. +type DataPlaneAadOrApiKeyAuthOption struct { + // AadAuthFailureMode: Describes what response the data plane API of a Search service would send for requests that failed + // authentication. + AadAuthFailureMode *DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode `json:"aadAuthFailureMode,omitempty"` +} + +var _ genruntime.ARMTransformer = &DataPlaneAadOrApiKeyAuthOption{} + +// ConvertToARM converts from a Kubernetes CRD object to an ARM object +func (option *DataPlaneAadOrApiKeyAuthOption) ConvertToARM(resolved genruntime.ConvertToARMResolvedDetails) (interface{}, error) { + if option == nil { + return nil, nil + } + result := &DataPlaneAadOrApiKeyAuthOption_ARM{} + + // Set property ‘AadAuthFailureMode’: + if option.AadAuthFailureMode != nil { + aadAuthFailureMode := *option.AadAuthFailureMode + result.AadAuthFailureMode = &aadAuthFailureMode + } + return result, nil +} + +// NewEmptyARMValue returns an empty ARM value suitable for deserializing into +func (option *DataPlaneAadOrApiKeyAuthOption) NewEmptyARMValue() genruntime.ARMResourceStatus { + return &DataPlaneAadOrApiKeyAuthOption_ARM{} +} + +// PopulateFromARM populates a Kubernetes CRD object from an Azure ARM object +func (option *DataPlaneAadOrApiKeyAuthOption) PopulateFromARM(owner genruntime.ArbitraryOwnerReference, armInput interface{}) error { + typedInput, ok := armInput.(DataPlaneAadOrApiKeyAuthOption_ARM) + if !ok { + return fmt.Errorf("unexpected type supplied for PopulateFromARM() function. Expected DataPlaneAadOrApiKeyAuthOption_ARM, got %T", armInput) + } + + // Set property ‘AadAuthFailureMode’: + if typedInput.AadAuthFailureMode != nil { + aadAuthFailureMode := *typedInput.AadAuthFailureMode + option.AadAuthFailureMode = &aadAuthFailureMode + } + + // No error + return nil +} + +// AssignProperties_From_DataPlaneAadOrApiKeyAuthOption populates our DataPlaneAadOrApiKeyAuthOption from the provided source DataPlaneAadOrApiKeyAuthOption +func (option *DataPlaneAadOrApiKeyAuthOption) AssignProperties_From_DataPlaneAadOrApiKeyAuthOption(source *v1api20220901s.DataPlaneAadOrApiKeyAuthOption) error { + + // AadAuthFailureMode + if source.AadAuthFailureMode != nil { + aadAuthFailureMode := DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode(*source.AadAuthFailureMode) + option.AadAuthFailureMode = &aadAuthFailureMode + } else { + option.AadAuthFailureMode = nil + } + + // No error + return nil +} + +// AssignProperties_To_DataPlaneAadOrApiKeyAuthOption populates the provided destination DataPlaneAadOrApiKeyAuthOption from our DataPlaneAadOrApiKeyAuthOption +func (option *DataPlaneAadOrApiKeyAuthOption) AssignProperties_To_DataPlaneAadOrApiKeyAuthOption(destination *v1api20220901s.DataPlaneAadOrApiKeyAuthOption) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AadAuthFailureMode + if option.AadAuthFailureMode != nil { + aadAuthFailureMode := string(*option.AadAuthFailureMode) + destination.AadAuthFailureMode = &aadAuthFailureMode + } else { + destination.AadAuthFailureMode = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// Initialize_From_DataPlaneAadOrApiKeyAuthOption_STATUS populates our DataPlaneAadOrApiKeyAuthOption from the provided source DataPlaneAadOrApiKeyAuthOption_STATUS +func (option *DataPlaneAadOrApiKeyAuthOption) Initialize_From_DataPlaneAadOrApiKeyAuthOption_STATUS(source *DataPlaneAadOrApiKeyAuthOption_STATUS) error { + + // AadAuthFailureMode + if source.AadAuthFailureMode != nil { + aadAuthFailureMode := DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode(*source.AadAuthFailureMode) + option.AadAuthFailureMode = &aadAuthFailureMode + } else { + option.AadAuthFailureMode = nil + } + + // No error + return nil +} + // Indicates that either the API key or an access token from Azure Active Directory can be used for authentication. type DataPlaneAadOrApiKeyAuthOption_STATUS struct { // AadAuthFailureMode: Describes what response the data plane API of a Search service would send for requests that failed @@ -3060,6 +3448,98 @@ func (rule *IpRule_STATUS) AssignProperties_To_IpRule_STATUS(destination *v1api2 return nil } +type SearchServiceOperatorSecrets struct { + // AdminPrimaryKey: indicates where the AdminPrimaryKey secret should be placed. If omitted, the secret will not be + // retrieved from Azure. + AdminPrimaryKey *genruntime.SecretDestination `json:"adminPrimaryKey,omitempty"` + + // AdminSecondaryKey: indicates where the AdminSecondaryKey secret should be placed. If omitted, the secret will not be + // retrieved from Azure. + AdminSecondaryKey *genruntime.SecretDestination `json:"adminSecondaryKey,omitempty"` + + // QueryKey: indicates where the QueryKey secret should be placed. If omitted, the secret will not be retrieved from Azure. + QueryKey *genruntime.SecretDestination `json:"queryKey,omitempty"` +} + +// AssignProperties_From_SearchServiceOperatorSecrets populates our SearchServiceOperatorSecrets from the provided source SearchServiceOperatorSecrets +func (secrets *SearchServiceOperatorSecrets) AssignProperties_From_SearchServiceOperatorSecrets(source *v1api20220901s.SearchServiceOperatorSecrets) error { + + // AdminPrimaryKey + if source.AdminPrimaryKey != nil { + adminPrimaryKey := source.AdminPrimaryKey.Copy() + secrets.AdminPrimaryKey = &adminPrimaryKey + } else { + secrets.AdminPrimaryKey = nil + } + + // AdminSecondaryKey + if source.AdminSecondaryKey != nil { + adminSecondaryKey := source.AdminSecondaryKey.Copy() + secrets.AdminSecondaryKey = &adminSecondaryKey + } else { + secrets.AdminSecondaryKey = nil + } + + // QueryKey + if source.QueryKey != nil { + queryKey := source.QueryKey.Copy() + secrets.QueryKey = &queryKey + } else { + secrets.QueryKey = nil + } + + // No error + return nil +} + +// AssignProperties_To_SearchServiceOperatorSecrets populates the provided destination SearchServiceOperatorSecrets from our SearchServiceOperatorSecrets +func (secrets *SearchServiceOperatorSecrets) AssignProperties_To_SearchServiceOperatorSecrets(destination *v1api20220901s.SearchServiceOperatorSecrets) error { + // Create a new property bag + propertyBag := genruntime.NewPropertyBag() + + // AdminPrimaryKey + if secrets.AdminPrimaryKey != nil { + adminPrimaryKey := secrets.AdminPrimaryKey.Copy() + destination.AdminPrimaryKey = &adminPrimaryKey + } else { + destination.AdminPrimaryKey = nil + } + + // AdminSecondaryKey + if secrets.AdminSecondaryKey != nil { + adminSecondaryKey := secrets.AdminSecondaryKey.Copy() + destination.AdminSecondaryKey = &adminSecondaryKey + } else { + destination.AdminSecondaryKey = nil + } + + // QueryKey + if secrets.QueryKey != nil { + queryKey := secrets.QueryKey.Copy() + destination.QueryKey = &queryKey + } else { + destination.QueryKey = nil + } + + // Update the property bag + if len(propertyBag) > 0 { + destination.PropertyBag = propertyBag + } else { + destination.PropertyBag = nil + } + + // No error + return nil +} + +// +kubebuilder:validation:Enum={"http401WithBearerChallenge","http403"} +type DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode string + +const ( + DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode_Http401WithBearerChallenge = DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode("http401WithBearerChallenge") + DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode_Http403 = DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode("http403") +) + type DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode_STATUS string const ( diff --git a/v2/api/search/v1api20220901/search_service_types_gen_test.go b/v2/api/search/v1api20220901/search_service_types_gen_test.go index 5ea74d35a60..41ea1cefd58 100644 --- a/v2/api/search/v1api20220901/search_service_types_gen_test.go +++ b/v2/api/search/v1api20220901/search_service_types_gen_test.go @@ -284,9 +284,11 @@ func AddIndependentPropertyGeneratorsForSearchService_Spec(gens map[string]gopte // AddRelatedPropertyGeneratorsForSearchService_Spec is a factory method for creating gopter generators func AddRelatedPropertyGeneratorsForSearchService_Spec(gens map[string]gopter.Gen) { + gens["AuthOptions"] = gen.PtrOf(DataPlaneAuthOptionsGenerator()) gens["EncryptionWithCmk"] = gen.PtrOf(EncryptionWithCmkGenerator()) gens["Identity"] = gen.PtrOf(IdentityGenerator()) gens["NetworkRuleSet"] = gen.PtrOf(NetworkRuleSetGenerator()) + gens["OperatorSpec"] = gen.PtrOf(SearchServiceOperatorSpecGenerator()) gens["Sku"] = gen.PtrOf(SkuGenerator()) } @@ -431,6 +433,109 @@ func AddRelatedPropertyGeneratorsForSearchService_STATUS(gens map[string]gopter. gens["Sku"] = gen.PtrOf(Sku_STATUSGenerator()) } +func Test_DataPlaneAuthOptions_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from DataPlaneAuthOptions to DataPlaneAuthOptions via AssignProperties_To_DataPlaneAuthOptions & AssignProperties_From_DataPlaneAuthOptions returns original", + prop.ForAll(RunPropertyAssignmentTestForDataPlaneAuthOptions, DataPlaneAuthOptionsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForDataPlaneAuthOptions tests if a specific instance of DataPlaneAuthOptions can be assigned to v1api20220901storage and back losslessly +func RunPropertyAssignmentTestForDataPlaneAuthOptions(subject DataPlaneAuthOptions) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other v1api20220901s.DataPlaneAuthOptions + err := copied.AssignProperties_To_DataPlaneAuthOptions(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual DataPlaneAuthOptions + err = actual.AssignProperties_From_DataPlaneAuthOptions(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_DataPlaneAuthOptions_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 DataPlaneAuthOptions via JSON returns original", + prop.ForAll(RunJSONSerializationTestForDataPlaneAuthOptions, DataPlaneAuthOptionsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForDataPlaneAuthOptions runs a test to see if a specific instance of DataPlaneAuthOptions round trips to JSON and back losslessly +func RunJSONSerializationTestForDataPlaneAuthOptions(subject DataPlaneAuthOptions) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual DataPlaneAuthOptions + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of DataPlaneAuthOptions instances for property testing - lazily instantiated by +// DataPlaneAuthOptionsGenerator() +var dataPlaneAuthOptionsGenerator gopter.Gen + +// DataPlaneAuthOptionsGenerator returns a generator of DataPlaneAuthOptions instances for property testing. +func DataPlaneAuthOptionsGenerator() gopter.Gen { + if dataPlaneAuthOptionsGenerator != nil { + return dataPlaneAuthOptionsGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForDataPlaneAuthOptions(generators) + dataPlaneAuthOptionsGenerator = gen.Struct(reflect.TypeOf(DataPlaneAuthOptions{}), generators) + + return dataPlaneAuthOptionsGenerator +} + +// AddRelatedPropertyGeneratorsForDataPlaneAuthOptions is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForDataPlaneAuthOptions(gens map[string]gopter.Gen) { + gens["AadOrApiKey"] = gen.PtrOf(DataPlaneAadOrApiKeyAuthOptionGenerator()) +} + func Test_DataPlaneAuthOptions_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1254,6 +1359,109 @@ func AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS(gens ma gens["Id"] = gen.PtrOf(gen.AlphaString()) } +func Test_SearchServiceOperatorSpec_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SearchServiceOperatorSpec to SearchServiceOperatorSpec via AssignProperties_To_SearchServiceOperatorSpec & AssignProperties_From_SearchServiceOperatorSpec returns original", + prop.ForAll(RunPropertyAssignmentTestForSearchServiceOperatorSpec, SearchServiceOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSearchServiceOperatorSpec tests if a specific instance of SearchServiceOperatorSpec can be assigned to v1api20220901storage and back losslessly +func RunPropertyAssignmentTestForSearchServiceOperatorSpec(subject SearchServiceOperatorSpec) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other v1api20220901s.SearchServiceOperatorSpec + err := copied.AssignProperties_To_SearchServiceOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SearchServiceOperatorSpec + err = actual.AssignProperties_From_SearchServiceOperatorSpec(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_SearchServiceOperatorSpec_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 SearchServiceOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSearchServiceOperatorSpec, SearchServiceOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSearchServiceOperatorSpec runs a test to see if a specific instance of SearchServiceOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForSearchServiceOperatorSpec(subject SearchServiceOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SearchServiceOperatorSpec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SearchServiceOperatorSpec instances for property testing - lazily instantiated by +// SearchServiceOperatorSpecGenerator() +var searchServiceOperatorSpecGenerator gopter.Gen + +// SearchServiceOperatorSpecGenerator returns a generator of SearchServiceOperatorSpec instances for property testing. +func SearchServiceOperatorSpecGenerator() gopter.Gen { + if searchServiceOperatorSpecGenerator != nil { + return searchServiceOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForSearchServiceOperatorSpec(generators) + searchServiceOperatorSpecGenerator = gen.Struct(reflect.TypeOf(SearchServiceOperatorSpec{}), generators) + + return searchServiceOperatorSpecGenerator +} + +// AddRelatedPropertyGeneratorsForSearchServiceOperatorSpec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSearchServiceOperatorSpec(gens map[string]gopter.Gen) { + gens["Secrets"] = gen.PtrOf(SearchServiceOperatorSecretsGenerator()) +} + func Test_SharedPrivateLinkResource_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1575,6 +1783,109 @@ func AddIndependentPropertyGeneratorsForSku_STATUS(gens map[string]gopter.Gen) { Sku_Name_STATUS_Storage_Optimized_L2)) } +func Test_DataPlaneAadOrApiKeyAuthOption_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from DataPlaneAadOrApiKeyAuthOption to DataPlaneAadOrApiKeyAuthOption via AssignProperties_To_DataPlaneAadOrApiKeyAuthOption & AssignProperties_From_DataPlaneAadOrApiKeyAuthOption returns original", + prop.ForAll(RunPropertyAssignmentTestForDataPlaneAadOrApiKeyAuthOption, DataPlaneAadOrApiKeyAuthOptionGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForDataPlaneAadOrApiKeyAuthOption tests if a specific instance of DataPlaneAadOrApiKeyAuthOption can be assigned to v1api20220901storage and back losslessly +func RunPropertyAssignmentTestForDataPlaneAadOrApiKeyAuthOption(subject DataPlaneAadOrApiKeyAuthOption) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other v1api20220901s.DataPlaneAadOrApiKeyAuthOption + err := copied.AssignProperties_To_DataPlaneAadOrApiKeyAuthOption(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual DataPlaneAadOrApiKeyAuthOption + err = actual.AssignProperties_From_DataPlaneAadOrApiKeyAuthOption(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_DataPlaneAadOrApiKeyAuthOption_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 DataPlaneAadOrApiKeyAuthOption via JSON returns original", + prop.ForAll(RunJSONSerializationTestForDataPlaneAadOrApiKeyAuthOption, DataPlaneAadOrApiKeyAuthOptionGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForDataPlaneAadOrApiKeyAuthOption runs a test to see if a specific instance of DataPlaneAadOrApiKeyAuthOption round trips to JSON and back losslessly +func RunJSONSerializationTestForDataPlaneAadOrApiKeyAuthOption(subject DataPlaneAadOrApiKeyAuthOption) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual DataPlaneAadOrApiKeyAuthOption + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of DataPlaneAadOrApiKeyAuthOption instances for property testing - lazily instantiated by +// DataPlaneAadOrApiKeyAuthOptionGenerator() +var dataPlaneAadOrApiKeyAuthOptionGenerator gopter.Gen + +// DataPlaneAadOrApiKeyAuthOptionGenerator returns a generator of DataPlaneAadOrApiKeyAuthOption instances for property testing. +func DataPlaneAadOrApiKeyAuthOptionGenerator() gopter.Gen { + if dataPlaneAadOrApiKeyAuthOptionGenerator != nil { + return dataPlaneAadOrApiKeyAuthOptionGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForDataPlaneAadOrApiKeyAuthOption(generators) + dataPlaneAadOrApiKeyAuthOptionGenerator = gen.Struct(reflect.TypeOf(DataPlaneAadOrApiKeyAuthOption{}), generators) + + return dataPlaneAadOrApiKeyAuthOptionGenerator +} + +// AddIndependentPropertyGeneratorsForDataPlaneAadOrApiKeyAuthOption is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForDataPlaneAadOrApiKeyAuthOption(gens map[string]gopter.Gen) { + gens["AadAuthFailureMode"] = gen.PtrOf(gen.OneConstOf(DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode_Http401WithBearerChallenge, DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode_Http403)) +} + func Test_DataPlaneAadOrApiKeyAuthOption_STATUS_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1881,3 +2192,100 @@ func IpRule_STATUSGenerator() gopter.Gen { func AddIndependentPropertyGeneratorsForIpRule_STATUS(gens map[string]gopter.Gen) { gens["Value"] = gen.PtrOf(gen.AlphaString()) } + +func Test_SearchServiceOperatorSecrets_WhenPropertiesConverted_RoundTripsWithoutLoss(t *testing.T) { + t.Parallel() + parameters := gopter.DefaultTestParameters() + parameters.MaxSize = 10 + properties := gopter.NewProperties(parameters) + properties.Property( + "Round trip from SearchServiceOperatorSecrets to SearchServiceOperatorSecrets via AssignProperties_To_SearchServiceOperatorSecrets & AssignProperties_From_SearchServiceOperatorSecrets returns original", + prop.ForAll(RunPropertyAssignmentTestForSearchServiceOperatorSecrets, SearchServiceOperatorSecretsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(false, 240, os.Stdout)) +} + +// RunPropertyAssignmentTestForSearchServiceOperatorSecrets tests if a specific instance of SearchServiceOperatorSecrets can be assigned to v1api20220901storage and back losslessly +func RunPropertyAssignmentTestForSearchServiceOperatorSecrets(subject SearchServiceOperatorSecrets) string { + // Copy subject to make sure assignment doesn't modify it + copied := subject.DeepCopy() + + // Use AssignPropertiesTo() for the first stage of conversion + var other v1api20220901s.SearchServiceOperatorSecrets + err := copied.AssignProperties_To_SearchServiceOperatorSecrets(&other) + if err != nil { + return err.Error() + } + + // Use AssignPropertiesFrom() to convert back to our original type + var actual SearchServiceOperatorSecrets + err = actual.AssignProperties_From_SearchServiceOperatorSecrets(&other) + if err != nil { + return err.Error() + } + + // Check for a match + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +func Test_SearchServiceOperatorSecrets_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 SearchServiceOperatorSecrets via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSearchServiceOperatorSecrets, SearchServiceOperatorSecretsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSearchServiceOperatorSecrets runs a test to see if a specific instance of SearchServiceOperatorSecrets round trips to JSON and back losslessly +func RunJSONSerializationTestForSearchServiceOperatorSecrets(subject SearchServiceOperatorSecrets) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SearchServiceOperatorSecrets + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SearchServiceOperatorSecrets instances for property testing - lazily instantiated by +// SearchServiceOperatorSecretsGenerator() +var searchServiceOperatorSecretsGenerator gopter.Gen + +// SearchServiceOperatorSecretsGenerator returns a generator of SearchServiceOperatorSecrets instances for property testing. +func SearchServiceOperatorSecretsGenerator() gopter.Gen { + if searchServiceOperatorSecretsGenerator != nil { + return searchServiceOperatorSecretsGenerator + } + + generators := make(map[string]gopter.Gen) + searchServiceOperatorSecretsGenerator = gen.Struct(reflect.TypeOf(SearchServiceOperatorSecrets{}), generators) + + return searchServiceOperatorSecretsGenerator +} diff --git a/v2/api/search/v1api20220901/structure.txt b/v2/api/search/v1api20220901/structure.txt index 5fe2b0d8aa0..d85cb871842 100644 --- a/v2/api/search/v1api20220901/structure.txt +++ b/v2/api/search/v1api20220901/structure.txt @@ -4,7 +4,12 @@ github.com/Azure/azure-service-operator/v2/api/search/v1api20220901 │ └── "2022-09-01" ├── SearchService: Resource │ ├── Owner: github.com/Azure/azure-service-operator/v2/api/resources/v1apiv20191001.ResourceGroup -│ ├── Spec: Object (13 properties) +│ ├── Spec: Object (15 properties) +│ │ ├── AuthOptions: *Object (1 property) +│ │ │ └── AadOrApiKey: *Object (1 property) +│ │ │ └── AadAuthFailureMode: *Enum (2 values) +│ │ │ ├── "http401WithBearerChallenge" +│ │ │ └── "http403" │ │ ├── AzureName: string │ │ ├── DisableLocalAuth: *bool │ │ ├── EncryptionWithCmk: *Object (1 property) @@ -23,6 +28,11 @@ github.com/Azure/azure-service-operator/v2/api/search/v1api20220901 │ │ ├── NetworkRuleSet: *Object (1 property) │ │ │ └── IpRules: Object (1 property)[] │ │ │ └── Value: *string +│ │ ├── OperatorSpec: *Object (1 property) +│ │ │ └── Secrets: *Object (3 properties) +│ │ │ ├── AdminPrimaryKey: *genruntime.SecretDestination +│ │ │ ├── AdminSecondaryKey: *genruntime.SecretDestination +│ │ │ └── QueryKey: *genruntime.SecretDestination │ │ ├── Owner: *genruntime.KnownResourceReference │ │ ├── PartitionCount: Validated<*int> (2 rules) │ │ │ ├── Rule 0: Maximum: 12 @@ -178,7 +188,12 @@ github.com/Azure/azure-service-operator/v2/api/search/v1api20220901 │ └── "SystemAssigned" ├── Location: *string ├── Name: string - ├── Properties: *Object (7 properties) + ├── Properties: *Object (8 properties) + │ ├── AuthOptions: *Object (1 property) + │ │ └── AadOrApiKey: *Object (1 property) + │ │ └── AadAuthFailureMode: *Enum (2 values) + │ │ ├── "http401WithBearerChallenge" + │ │ └── "http403" │ ├── DisableLocalAuth: *bool │ ├── EncryptionWithCmk: *Object (1 property) │ │ └── Enforcement: *Enum (3 values) diff --git a/v2/api/search/v1api20220901/zz_generated.deepcopy.go b/v2/api/search/v1api20220901/zz_generated.deepcopy.go index 3f52f7c9150..8b14b37de8b 100644 --- a/v2/api/search/v1api20220901/zz_generated.deepcopy.go +++ b/v2/api/search/v1api20220901/zz_generated.deepcopy.go @@ -17,6 +17,46 @@ import ( "k8s.io/apimachinery/pkg/runtime" ) +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DataPlaneAadOrApiKeyAuthOption) DeepCopyInto(out *DataPlaneAadOrApiKeyAuthOption) { + *out = *in + if in.AadAuthFailureMode != nil { + in, out := &in.AadAuthFailureMode, &out.AadAuthFailureMode + *out = new(DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataPlaneAadOrApiKeyAuthOption. +func (in *DataPlaneAadOrApiKeyAuthOption) DeepCopy() *DataPlaneAadOrApiKeyAuthOption { + if in == nil { + return nil + } + out := new(DataPlaneAadOrApiKeyAuthOption) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DataPlaneAadOrApiKeyAuthOption_ARM) DeepCopyInto(out *DataPlaneAadOrApiKeyAuthOption_ARM) { + *out = *in + if in.AadAuthFailureMode != nil { + in, out := &in.AadAuthFailureMode, &out.AadAuthFailureMode + *out = new(DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataPlaneAadOrApiKeyAuthOption_ARM. +func (in *DataPlaneAadOrApiKeyAuthOption_ARM) DeepCopy() *DataPlaneAadOrApiKeyAuthOption_ARM { + if in == nil { + return nil + } + out := new(DataPlaneAadOrApiKeyAuthOption_ARM) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *DataPlaneAadOrApiKeyAuthOption_STATUS) DeepCopyInto(out *DataPlaneAadOrApiKeyAuthOption_STATUS) { *out = *in @@ -57,6 +97,46 @@ func (in *DataPlaneAadOrApiKeyAuthOption_STATUS_ARM) DeepCopy() *DataPlaneAadOrA return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DataPlaneAuthOptions) DeepCopyInto(out *DataPlaneAuthOptions) { + *out = *in + if in.AadOrApiKey != nil { + in, out := &in.AadOrApiKey, &out.AadOrApiKey + *out = new(DataPlaneAadOrApiKeyAuthOption) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataPlaneAuthOptions. +func (in *DataPlaneAuthOptions) DeepCopy() *DataPlaneAuthOptions { + if in == nil { + return nil + } + out := new(DataPlaneAuthOptions) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DataPlaneAuthOptions_ARM) DeepCopyInto(out *DataPlaneAuthOptions_ARM) { + *out = *in + if in.AadOrApiKey != nil { + in, out := &in.AadOrApiKey, &out.AadOrApiKey + *out = new(DataPlaneAadOrApiKeyAuthOption_ARM) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataPlaneAuthOptions_ARM. +func (in *DataPlaneAuthOptions_ARM) DeepCopy() *DataPlaneAuthOptions_ARM { + if in == nil { + return nil + } + out := new(DataPlaneAuthOptions_ARM) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *DataPlaneAuthOptions_STATUS) DeepCopyInto(out *DataPlaneAuthOptions_STATUS) { *out = *in @@ -568,9 +648,64 @@ func (in *SearchServiceList) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SearchServiceOperatorSecrets) DeepCopyInto(out *SearchServiceOperatorSecrets) { + *out = *in + if in.AdminPrimaryKey != nil { + in, out := &in.AdminPrimaryKey, &out.AdminPrimaryKey + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.AdminSecondaryKey != nil { + in, out := &in.AdminSecondaryKey, &out.AdminSecondaryKey + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.QueryKey != nil { + in, out := &in.QueryKey, &out.QueryKey + *out = new(genruntime.SecretDestination) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SearchServiceOperatorSecrets. +func (in *SearchServiceOperatorSecrets) DeepCopy() *SearchServiceOperatorSecrets { + if in == nil { + return nil + } + out := new(SearchServiceOperatorSecrets) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SearchServiceOperatorSpec) DeepCopyInto(out *SearchServiceOperatorSpec) { + *out = *in + if in.Secrets != nil { + in, out := &in.Secrets, &out.Secrets + *out = new(SearchServiceOperatorSecrets) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SearchServiceOperatorSpec. +func (in *SearchServiceOperatorSpec) DeepCopy() *SearchServiceOperatorSpec { + if in == nil { + return nil + } + out := new(SearchServiceOperatorSpec) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SearchServiceProperties_ARM) DeepCopyInto(out *SearchServiceProperties_ARM) { *out = *in + if in.AuthOptions != nil { + in, out := &in.AuthOptions, &out.AuthOptions + *out = new(DataPlaneAuthOptions_ARM) + (*in).DeepCopyInto(*out) + } if in.DisableLocalAuth != nil { in, out := &in.DisableLocalAuth, &out.DisableLocalAuth *out = new(bool) @@ -890,6 +1025,11 @@ func (in *SearchService_STATUS_ARM) DeepCopy() *SearchService_STATUS_ARM { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SearchService_Spec) DeepCopyInto(out *SearchService_Spec) { *out = *in + if in.AuthOptions != nil { + in, out := &in.AuthOptions, &out.AuthOptions + *out = new(DataPlaneAuthOptions) + (*in).DeepCopyInto(*out) + } if in.DisableLocalAuth != nil { in, out := &in.DisableLocalAuth, &out.DisableLocalAuth *out = new(bool) @@ -920,6 +1060,11 @@ func (in *SearchService_Spec) DeepCopyInto(out *SearchService_Spec) { *out = new(NetworkRuleSet) (*in).DeepCopyInto(*out) } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(SearchServiceOperatorSpec) + (*in).DeepCopyInto(*out) + } if in.Owner != nil { in, out := &in.Owner, &out.Owner *out = new(genruntime.KnownResourceReference) diff --git a/v2/api/search/v1api20220901storage/search_service_types_gen.go b/v2/api/search/v1api20220901storage/search_service_types_gen.go index 0652f3c3090..90bfd9bffb4 100644 --- a/v2/api/search/v1api20220901storage/search_service_types_gen.go +++ b/v2/api/search/v1api20220901storage/search_service_types_gen.go @@ -142,16 +142,19 @@ const APIVersion_Value = APIVersion("2022-09-01") // Storage version of v1api20220901.SearchService_Spec type SearchService_Spec struct { + AuthOptions *DataPlaneAuthOptions `json:"authOptions,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"` - DisableLocalAuth *bool `json:"disableLocalAuth,omitempty"` - EncryptionWithCmk *EncryptionWithCmk `json:"encryptionWithCmk,omitempty"` - HostingMode *string `json:"hostingMode,omitempty"` - Identity *Identity `json:"identity,omitempty"` - Location *string `json:"location,omitempty"` - NetworkRuleSet *NetworkRuleSet `json:"networkRuleSet,omitempty"` - OriginalVersion string `json:"originalVersion,omitempty"` + AzureName string `json:"azureName,omitempty"` + DisableLocalAuth *bool `json:"disableLocalAuth,omitempty"` + EncryptionWithCmk *EncryptionWithCmk `json:"encryptionWithCmk,omitempty"` + HostingMode *string `json:"hostingMode,omitempty"` + Identity *Identity `json:"identity,omitempty"` + Location *string `json:"location,omitempty"` + NetworkRuleSet *NetworkRuleSet `json:"networkRuleSet,omitempty"` + OperatorSpec *SearchServiceOperatorSpec `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 @@ -233,6 +236,14 @@ func (service *SearchService_STATUS) ConvertStatusTo(destination genruntime.Conv return destination.ConvertStatusFrom(service) } +// Storage version of v1api20220901.DataPlaneAuthOptions +// Defines the options for how the data plane API of a Search service authenticates requests. This cannot be set if +// 'disableLocalAuth' is set to true. +type DataPlaneAuthOptions struct { + AadOrApiKey *DataPlaneAadOrApiKeyAuthOption `json:"aadOrApiKey,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + // Storage version of v1api20220901.DataPlaneAuthOptions_STATUS // Defines the options for how the data plane API of a Search service authenticates requests. This cannot be set if // 'disableLocalAuth' is set to true. @@ -296,6 +307,13 @@ type PrivateEndpointConnection_STATUS struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } +// Storage version of v1api20220901.SearchServiceOperatorSpec +// Details for configuring operator behavior. Fields in this struct are interpreted by the operator directly rather than being passed to Azure +type SearchServiceOperatorSpec struct { + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + Secrets *SearchServiceOperatorSecrets `json:"secrets,omitempty"` +} + // Storage version of v1api20220901.SharedPrivateLinkResource_STATUS // Describes a Shared Private Link Resource managed by the Azure Cognitive Search service. type SharedPrivateLinkResource_STATUS struct { @@ -317,6 +335,13 @@ type Sku_STATUS struct { PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` } +// Storage version of v1api20220901.DataPlaneAadOrApiKeyAuthOption +// Indicates that either the API key or an access token from Azure Active Directory can be used for authentication. +type DataPlaneAadOrApiKeyAuthOption struct { + AadAuthFailureMode *string `json:"aadAuthFailureMode,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` +} + // Storage version of v1api20220901.DataPlaneAadOrApiKeyAuthOption_STATUS // Indicates that either the API key or an access token from Azure Active Directory can be used for authentication. type DataPlaneAadOrApiKeyAuthOption_STATUS struct { @@ -338,6 +363,14 @@ type IpRule_STATUS struct { Value *string `json:"value,omitempty"` } +// Storage version of v1api20220901.SearchServiceOperatorSecrets +type SearchServiceOperatorSecrets struct { + AdminPrimaryKey *genruntime.SecretDestination `json:"adminPrimaryKey,omitempty"` + AdminSecondaryKey *genruntime.SecretDestination `json:"adminSecondaryKey,omitempty"` + PropertyBag genruntime.PropertyBag `json:"$propertyBag,omitempty"` + QueryKey *genruntime.SecretDestination `json:"queryKey,omitempty"` +} + func init() { SchemeBuilder.Register(&SearchService{}, &SearchServiceList{}) } diff --git a/v2/api/search/v1api20220901storage/search_service_types_gen_test.go b/v2/api/search/v1api20220901storage/search_service_types_gen_test.go index a6b68ffc4cd..df030dcc1ec 100644 --- a/v2/api/search/v1api20220901storage/search_service_types_gen_test.go +++ b/v2/api/search/v1api20220901storage/search_service_types_gen_test.go @@ -157,9 +157,11 @@ func AddIndependentPropertyGeneratorsForSearchService_Spec(gens map[string]gopte // AddRelatedPropertyGeneratorsForSearchService_Spec is a factory method for creating gopter generators func AddRelatedPropertyGeneratorsForSearchService_Spec(gens map[string]gopter.Gen) { + gens["AuthOptions"] = gen.PtrOf(DataPlaneAuthOptionsGenerator()) gens["EncryptionWithCmk"] = gen.PtrOf(EncryptionWithCmkGenerator()) gens["Identity"] = gen.PtrOf(IdentityGenerator()) gens["NetworkRuleSet"] = gen.PtrOf(NetworkRuleSetGenerator()) + gens["OperatorSpec"] = gen.PtrOf(SearchServiceOperatorSpecGenerator()) gens["Sku"] = gen.PtrOf(SkuGenerator()) } @@ -256,6 +258,67 @@ func AddRelatedPropertyGeneratorsForSearchService_STATUS(gens map[string]gopter. gens["Sku"] = gen.PtrOf(Sku_STATUSGenerator()) } +func Test_DataPlaneAuthOptions_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 DataPlaneAuthOptions via JSON returns original", + prop.ForAll(RunJSONSerializationTestForDataPlaneAuthOptions, DataPlaneAuthOptionsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForDataPlaneAuthOptions runs a test to see if a specific instance of DataPlaneAuthOptions round trips to JSON and back losslessly +func RunJSONSerializationTestForDataPlaneAuthOptions(subject DataPlaneAuthOptions) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual DataPlaneAuthOptions + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of DataPlaneAuthOptions instances for property testing - lazily instantiated by +// DataPlaneAuthOptionsGenerator() +var dataPlaneAuthOptionsGenerator gopter.Gen + +// DataPlaneAuthOptionsGenerator returns a generator of DataPlaneAuthOptions instances for property testing. +func DataPlaneAuthOptionsGenerator() gopter.Gen { + if dataPlaneAuthOptionsGenerator != nil { + return dataPlaneAuthOptionsGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForDataPlaneAuthOptions(generators) + dataPlaneAuthOptionsGenerator = gen.Struct(reflect.TypeOf(DataPlaneAuthOptions{}), generators) + + return dataPlaneAuthOptionsGenerator +} + +// AddRelatedPropertyGeneratorsForDataPlaneAuthOptions is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForDataPlaneAuthOptions(gens map[string]gopter.Gen) { + gens["AadOrApiKey"] = gen.PtrOf(DataPlaneAadOrApiKeyAuthOptionGenerator()) +} + func Test_DataPlaneAuthOptions_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -743,6 +806,67 @@ func AddIndependentPropertyGeneratorsForPrivateEndpointConnection_STATUS(gens ma gens["Id"] = gen.PtrOf(gen.AlphaString()) } +func Test_SearchServiceOperatorSpec_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 SearchServiceOperatorSpec via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSearchServiceOperatorSpec, SearchServiceOperatorSpecGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSearchServiceOperatorSpec runs a test to see if a specific instance of SearchServiceOperatorSpec round trips to JSON and back losslessly +func RunJSONSerializationTestForSearchServiceOperatorSpec(subject SearchServiceOperatorSpec) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SearchServiceOperatorSpec + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SearchServiceOperatorSpec instances for property testing - lazily instantiated by +// SearchServiceOperatorSpecGenerator() +var searchServiceOperatorSpecGenerator gopter.Gen + +// SearchServiceOperatorSpecGenerator returns a generator of SearchServiceOperatorSpec instances for property testing. +func SearchServiceOperatorSpecGenerator() gopter.Gen { + if searchServiceOperatorSpecGenerator != nil { + return searchServiceOperatorSpecGenerator + } + + generators := make(map[string]gopter.Gen) + AddRelatedPropertyGeneratorsForSearchServiceOperatorSpec(generators) + searchServiceOperatorSpecGenerator = gen.Struct(reflect.TypeOf(SearchServiceOperatorSpec{}), generators) + + return searchServiceOperatorSpecGenerator +} + +// AddRelatedPropertyGeneratorsForSearchServiceOperatorSpec is a factory method for creating gopter generators +func AddRelatedPropertyGeneratorsForSearchServiceOperatorSpec(gens map[string]gopter.Gen) { + gens["Secrets"] = gen.PtrOf(SearchServiceOperatorSecretsGenerator()) +} + func Test_SharedPrivateLinkResource_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -924,6 +1048,67 @@ func AddIndependentPropertyGeneratorsForSku_STATUS(gens map[string]gopter.Gen) { gens["Name"] = gen.PtrOf(gen.AlphaString()) } +func Test_DataPlaneAadOrApiKeyAuthOption_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 DataPlaneAadOrApiKeyAuthOption via JSON returns original", + prop.ForAll(RunJSONSerializationTestForDataPlaneAadOrApiKeyAuthOption, DataPlaneAadOrApiKeyAuthOptionGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForDataPlaneAadOrApiKeyAuthOption runs a test to see if a specific instance of DataPlaneAadOrApiKeyAuthOption round trips to JSON and back losslessly +func RunJSONSerializationTestForDataPlaneAadOrApiKeyAuthOption(subject DataPlaneAadOrApiKeyAuthOption) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual DataPlaneAadOrApiKeyAuthOption + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of DataPlaneAadOrApiKeyAuthOption instances for property testing - lazily instantiated by +// DataPlaneAadOrApiKeyAuthOptionGenerator() +var dataPlaneAadOrApiKeyAuthOptionGenerator gopter.Gen + +// DataPlaneAadOrApiKeyAuthOptionGenerator returns a generator of DataPlaneAadOrApiKeyAuthOption instances for property testing. +func DataPlaneAadOrApiKeyAuthOptionGenerator() gopter.Gen { + if dataPlaneAadOrApiKeyAuthOptionGenerator != nil { + return dataPlaneAadOrApiKeyAuthOptionGenerator + } + + generators := make(map[string]gopter.Gen) + AddIndependentPropertyGeneratorsForDataPlaneAadOrApiKeyAuthOption(generators) + dataPlaneAadOrApiKeyAuthOptionGenerator = gen.Struct(reflect.TypeOf(DataPlaneAadOrApiKeyAuthOption{}), generators) + + return dataPlaneAadOrApiKeyAuthOptionGenerator +} + +// AddIndependentPropertyGeneratorsForDataPlaneAadOrApiKeyAuthOption is a factory method for creating gopter generators +func AddIndependentPropertyGeneratorsForDataPlaneAadOrApiKeyAuthOption(gens map[string]gopter.Gen) { + gens["AadAuthFailureMode"] = gen.PtrOf(gen.AlphaString()) +} + func Test_DataPlaneAadOrApiKeyAuthOption_STATUS_WhenSerializedToJson_DeserializesAsEqual(t *testing.T) { t.Parallel() parameters := gopter.DefaultTestParameters() @@ -1104,3 +1289,58 @@ func IpRule_STATUSGenerator() gopter.Gen { func AddIndependentPropertyGeneratorsForIpRule_STATUS(gens map[string]gopter.Gen) { gens["Value"] = gen.PtrOf(gen.AlphaString()) } + +func Test_SearchServiceOperatorSecrets_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 SearchServiceOperatorSecrets via JSON returns original", + prop.ForAll(RunJSONSerializationTestForSearchServiceOperatorSecrets, SearchServiceOperatorSecretsGenerator())) + properties.TestingRun(t, gopter.NewFormatedReporter(true, 240, os.Stdout)) +} + +// RunJSONSerializationTestForSearchServiceOperatorSecrets runs a test to see if a specific instance of SearchServiceOperatorSecrets round trips to JSON and back losslessly +func RunJSONSerializationTestForSearchServiceOperatorSecrets(subject SearchServiceOperatorSecrets) string { + // Serialize to JSON + bin, err := json.Marshal(subject) + if err != nil { + return err.Error() + } + + // Deserialize back into memory + var actual SearchServiceOperatorSecrets + err = json.Unmarshal(bin, &actual) + if err != nil { + return err.Error() + } + + // Check for outcome + match := cmp.Equal(subject, actual, cmpopts.EquateEmpty()) + if !match { + actualFmt := pretty.Sprint(actual) + subjectFmt := pretty.Sprint(subject) + result := diff.Diff(subjectFmt, actualFmt) + return result + } + + return "" +} + +// Generator of SearchServiceOperatorSecrets instances for property testing - lazily instantiated by +// SearchServiceOperatorSecretsGenerator() +var searchServiceOperatorSecretsGenerator gopter.Gen + +// SearchServiceOperatorSecretsGenerator returns a generator of SearchServiceOperatorSecrets instances for property testing. +func SearchServiceOperatorSecretsGenerator() gopter.Gen { + if searchServiceOperatorSecretsGenerator != nil { + return searchServiceOperatorSecretsGenerator + } + + generators := make(map[string]gopter.Gen) + searchServiceOperatorSecretsGenerator = gen.Struct(reflect.TypeOf(SearchServiceOperatorSecrets{}), generators) + + return searchServiceOperatorSecretsGenerator +} diff --git a/v2/api/search/v1api20220901storage/structure.txt b/v2/api/search/v1api20220901storage/structure.txt index 909d520c1d2..30660645aaf 100644 --- a/v2/api/search/v1api20220901storage/structure.txt +++ b/v2/api/search/v1api20220901storage/structure.txt @@ -4,7 +4,12 @@ github.com/Azure/azure-service-operator/v2/api/search/v1api20220901storage │ └── "2022-09-01" └── SearchService: Resource ├── Owner: github.com/Azure/azure-service-operator/v2/api/resources/v1apiv20191001.ResourceGroup - ├── Spec: Object (15 properties) + ├── Spec: Object (17 properties) + │ ├── AuthOptions: *Object (2 properties) + │ │ ├── AadOrApiKey: *Object (2 properties) + │ │ │ ├── AadAuthFailureMode: *string + │ │ │ └── PropertyBag: genruntime.PropertyBag + │ │ └── PropertyBag: genruntime.PropertyBag │ ├── AzureName: string │ ├── DisableLocalAuth: *bool │ ├── EncryptionWithCmk: *Object (2 properties) @@ -20,6 +25,13 @@ github.com/Azure/azure-service-operator/v2/api/search/v1api20220901storage │ │ │ ├── PropertyBag: genruntime.PropertyBag │ │ │ └── Value: *string │ │ └── PropertyBag: genruntime.PropertyBag + │ ├── OperatorSpec: *Object (2 properties) + │ │ ├── PropertyBag: genruntime.PropertyBag + │ │ └── Secrets: *Object (4 properties) + │ │ ├── AdminPrimaryKey: *genruntime.SecretDestination + │ │ ├── AdminSecondaryKey: *genruntime.SecretDestination + │ │ ├── PropertyBag: genruntime.PropertyBag + │ │ └── QueryKey: *genruntime.SecretDestination │ ├── OriginalVersion: string │ ├── Owner: *genruntime.KnownResourceReference │ ├── PartitionCount: *int diff --git a/v2/api/search/v1api20220901storage/zz_generated.deepcopy.go b/v2/api/search/v1api20220901storage/zz_generated.deepcopy.go index 25b7d48f7a4..be22e8c46f5 100644 --- a/v2/api/search/v1api20220901storage/zz_generated.deepcopy.go +++ b/v2/api/search/v1api20220901storage/zz_generated.deepcopy.go @@ -17,6 +17,33 @@ import ( 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 *DataPlaneAadOrApiKeyAuthOption) DeepCopyInto(out *DataPlaneAadOrApiKeyAuthOption) { + *out = *in + if in.AadAuthFailureMode != nil { + in, out := &in.AadAuthFailureMode, &out.AadAuthFailureMode + *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 DataPlaneAadOrApiKeyAuthOption. +func (in *DataPlaneAadOrApiKeyAuthOption) DeepCopy() *DataPlaneAadOrApiKeyAuthOption { + if in == nil { + return nil + } + out := new(DataPlaneAadOrApiKeyAuthOption) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *DataPlaneAadOrApiKeyAuthOption_STATUS) DeepCopyInto(out *DataPlaneAadOrApiKeyAuthOption_STATUS) { *out = *in @@ -44,6 +71,33 @@ func (in *DataPlaneAadOrApiKeyAuthOption_STATUS) DeepCopy() *DataPlaneAadOrApiKe return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *DataPlaneAuthOptions) DeepCopyInto(out *DataPlaneAuthOptions) { + *out = *in + if in.AadOrApiKey != nil { + in, out := &in.AadOrApiKey, &out.AadOrApiKey + *out = new(DataPlaneAadOrApiKeyAuthOption) + (*in).DeepCopyInto(*out) + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DataPlaneAuthOptions. +func (in *DataPlaneAuthOptions) DeepCopy() *DataPlaneAuthOptions { + if in == nil { + return nil + } + out := new(DataPlaneAuthOptions) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *DataPlaneAuthOptions_STATUS) DeepCopyInto(out *DataPlaneAuthOptions_STATUS) { *out = *in @@ -399,6 +453,70 @@ func (in *SearchServiceList) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SearchServiceOperatorSecrets) DeepCopyInto(out *SearchServiceOperatorSecrets) { + *out = *in + if in.AdminPrimaryKey != nil { + in, out := &in.AdminPrimaryKey, &out.AdminPrimaryKey + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.AdminSecondaryKey != nil { + in, out := &in.AdminSecondaryKey, &out.AdminSecondaryKey + *out = new(genruntime.SecretDestination) + **out = **in + } + if in.PropertyBag != nil { + in, out := &in.PropertyBag, &out.PropertyBag + *out = make(genruntime.PropertyBag, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.QueryKey != nil { + in, out := &in.QueryKey, &out.QueryKey + *out = new(genruntime.SecretDestination) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SearchServiceOperatorSecrets. +func (in *SearchServiceOperatorSecrets) DeepCopy() *SearchServiceOperatorSecrets { + if in == nil { + return nil + } + out := new(SearchServiceOperatorSecrets) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SearchServiceOperatorSpec) DeepCopyInto(out *SearchServiceOperatorSpec) { + *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.Secrets != nil { + in, out := &in.Secrets, &out.Secrets + *out = new(SearchServiceOperatorSecrets) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SearchServiceOperatorSpec. +func (in *SearchServiceOperatorSpec) DeepCopy() *SearchServiceOperatorSpec { + if in == nil { + return nil + } + out := new(SearchServiceOperatorSpec) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SearchService_STATUS) DeepCopyInto(out *SearchService_STATUS) { *out = *in @@ -537,6 +655,11 @@ func (in *SearchService_STATUS) DeepCopy() *SearchService_STATUS { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SearchService_Spec) DeepCopyInto(out *SearchService_Spec) { *out = *in + if in.AuthOptions != nil { + in, out := &in.AuthOptions, &out.AuthOptions + *out = new(DataPlaneAuthOptions) + (*in).DeepCopyInto(*out) + } if in.DisableLocalAuth != nil { in, out := &in.DisableLocalAuth, &out.DisableLocalAuth *out = new(bool) @@ -567,6 +690,11 @@ func (in *SearchService_Spec) DeepCopyInto(out *SearchService_Spec) { *out = new(NetworkRuleSet) (*in).DeepCopyInto(*out) } + if in.OperatorSpec != nil { + in, out := &in.OperatorSpec, &out.OperatorSpec + *out = new(SearchServiceOperatorSpec) + (*in).DeepCopyInto(*out) + } if in.Owner != nil { in, out := &in.Owner, &out.Owner *out = new(genruntime.KnownResourceReference) diff --git a/v2/api/search/versions_matrix.md b/v2/api/search/versions_matrix.md index 47f951b613d..1f2bc8eca3b 100644 --- a/v2/api/search/versions_matrix.md +++ b/v2/api/search/versions_matrix.md @@ -1,8 +1,11 @@ | Type Definitions in package "search" | v1api20220901 | |----------------------------------------------------------|---------------| | APIVersion | v1api20220901 | +| DataPlaneAadOrApiKeyAuthOption | v1api20220901 | +| DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode | v1api20220901 | | DataPlaneAadOrApiKeyAuthOption_AadAuthFailureMode_STATUS | v1api20220901 | | DataPlaneAadOrApiKeyAuthOption_STATUS | v1api20220901 | +| DataPlaneAuthOptions | v1api20220901 | | DataPlaneAuthOptions_STATUS | v1api20220901 | | EncryptionWithCmk | v1api20220901 | | EncryptionWithCmk_EncryptionComplianceStatus_STATUS | v1api20220901 | diff --git a/v2/azure-arm.yaml b/v2/azure-arm.yaml index ebadb6c1f81..5953c2a2977 100644 --- a/v2/azure-arm.yaml +++ b/v2/azure-arm.yaml @@ -277,8 +277,8 @@ typeTransformers: because: These properties should be marked readonly - group: search - name: SearchServiceProperties - property: AuthOptions + name: DataPlaneAuthOptions + property: ApiKeyOnly remove: true because: We need a better handling for JSON # Discussion: https://github.com/Azure/azure-service-operator/pull/2916/files/93b06daa9549a91ac626e3241c5987b23b4087ac#r1179803300 @@ -1548,6 +1548,10 @@ objectModelConfiguration: SearchService: $export: true $supportedFrom: v2.1.0 + $azureGeneratedSecrets: + - AdminPrimaryKey + - AdminSecondaryKey + - QueryKey servicebus: 2021-01-01-preview: Namespace: diff --git a/v2/cmd/asoctl/go.mod b/v2/cmd/asoctl/go.mod index ee2d95ecfc9..10665d8d77d 100644 --- a/v2/cmd/asoctl/go.mod +++ b/v2/cmd/asoctl/go.mod @@ -35,6 +35,7 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/iothub/armiothub v1.1.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/machinelearning/armmachinelearning v1.0.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/redis/armredis v1.0.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/search/armsearch v1.1.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/servicebus/armservicebus v1.1.1 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.0.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/subscription/armsubscription v1.0.0 // indirect diff --git a/v2/cmd/asoctl/go.sum b/v2/cmd/asoctl/go.sum index 29a141d44b2..6957359407f 100644 --- a/v2/cmd/asoctl/go.sum +++ b/v2/cmd/asoctl/go.sum @@ -43,7 +43,7 @@ github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontai github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice v1.0.0/go.mod h1:TmlMW4W5OvXOmOyKNnor8nlMMiO1ctIyzmHme/VHsrA= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cosmos/armcosmos v1.0.0 h1:Fv8iibGn1eSw0lt2V3cTsuokBEnOP+M//n8OiMcCgTM= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cosmos/armcosmos v1.0.0/go.mod h1:Qpe/qN9d5IQ7WPtTXMRCd6+BWTnhi3sxXVys6oJ5Vho= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal v1.0.0 h1:lMW1lD/17LUA5z1XTURo7LcVG2ICBPlyMHjIUrcFZNQ= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal v1.1.2 h1:mLY+pNLjCUeKhgnAJWAKhEUQM+RJQo2H1fuGSw1Ky1E= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/iothub/armiothub v1.1.1 h1:Dh8SxVXcSyQN76LI4IseKyrnqyTUsx336Axg8zDYSMs= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/iothub/armiothub v1.1.1/go.mod h1:fqmmortNEICbosf7BfNVO3wWs6Cz/pkxYfExJC97Vy8= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/machinelearning/armmachinelearning v1.0.0 h1:KWvCVjnOTKCZAlqED5KPNoN9AfcK2BhUeveLdiwy33Q= @@ -51,6 +51,8 @@ github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/machinelearning/armmachine github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/redis/armredis v1.0.0 h1:nmpTBgRg1HynngFYICRhceC7s5dmbKN9fJ/XQz/UQ2I= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/redis/armredis v1.0.0/go.mod h1:3yjiOtnkVociBTlF7UZrwAGfJrGaOCsvtVS4HzNajxQ= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.0.0 h1:ECsQtyERDVz3NP3kvDOTLvbQhqWp/x9EsGKtb4ogUr8= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/search/armsearch v1.1.0 h1:SCO2mlFZrUMU8MmA5Y6EszSm2OGumuPBXFQXEvkESvk= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/search/armsearch v1.1.0/go.mod h1:0W36ZU3i/Y81U7D1udQyD8qA3SD4tV7ayADNymIdHBo= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/servicebus/armservicebus v1.1.1 h1:h+ZMdUM0/8oVqHjY9+1rupIvT0craBLapKhuzWui9lo= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/servicebus/armservicebus v1.1.1/go.mod h1:Ad79PTMmXBLbmMbRJkfefudJNxzFHfszKYadXA8SDSw= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.0.0 h1:TMEyRFKh1zaSPmoQh3kxK+xRAYVq8guCI/7SMO0F3KY= diff --git a/v2/go.mod b/v2/go.mod index 55a384852e8..1745174bd85 100644 --- a/v2/go.mod +++ b/v2/go.mod @@ -11,6 +11,8 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/iothub/armiothub v1.1.1 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/machinelearning/armmachinelearning v1.0.0 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/redis/armredis v1.0.0 + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/search/armsearch v1.1.0 + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/servicebus/armservicebus v1.1.1 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.0.0 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/subscription/armsubscription v1.0.0 github.com/benbjohnson/clock v1.1.0 @@ -44,7 +46,6 @@ require ( require ( cloud.google.com/go v0.97.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/servicebus/armservicebus v1.1.1 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.1.2 // indirect diff --git a/v2/go.sum b/v2/go.sum index 7de3014d92d..70ac08e971d 100644 --- a/v2/go.sum +++ b/v2/go.sum @@ -56,15 +56,16 @@ github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontai github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/containerservice/armcontainerservice v1.0.0/go.mod h1:TmlMW4W5OvXOmOyKNnor8nlMMiO1ctIyzmHme/VHsrA= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cosmos/armcosmos v1.0.0 h1:Fv8iibGn1eSw0lt2V3cTsuokBEnOP+M//n8OiMcCgTM= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cosmos/armcosmos v1.0.0/go.mod h1:Qpe/qN9d5IQ7WPtTXMRCd6+BWTnhi3sxXVys6oJ5Vho= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal v1.0.0 h1:lMW1lD/17LUA5z1XTURo7LcVG2ICBPlyMHjIUrcFZNQ= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal v1.1.2 h1:mLY+pNLjCUeKhgnAJWAKhEUQM+RJQo2H1fuGSw1Ky1E= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/iothub/armiothub v1.1.1 h1:Dh8SxVXcSyQN76LI4IseKyrnqyTUsx336Axg8zDYSMs= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/iothub/armiothub v1.1.1/go.mod h1:fqmmortNEICbosf7BfNVO3wWs6Cz/pkxYfExJC97Vy8= -github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal v1.1.2 h1:mLY+pNLjCUeKhgnAJWAKhEUQM+RJQo2H1fuGSw1Ky1E= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/machinelearning/armmachinelearning v1.0.0 h1:KWvCVjnOTKCZAlqED5KPNoN9AfcK2BhUeveLdiwy33Q= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/machinelearning/armmachinelearning v1.0.0/go.mod h1:qNN4I5AKYbXMLriS9XKebBw8EVIQkX6tJzrdtjOoJ4I= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/redis/armredis v1.0.0 h1:nmpTBgRg1HynngFYICRhceC7s5dmbKN9fJ/XQz/UQ2I= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/redis/armredis v1.0.0/go.mod h1:3yjiOtnkVociBTlF7UZrwAGfJrGaOCsvtVS4HzNajxQ= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.0.0 h1:ECsQtyERDVz3NP3kvDOTLvbQhqWp/x9EsGKtb4ogUr8= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/search/armsearch v1.1.0 h1:SCO2mlFZrUMU8MmA5Y6EszSm2OGumuPBXFQXEvkESvk= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/search/armsearch v1.1.0/go.mod h1:0W36ZU3i/Y81U7D1udQyD8qA3SD4tV7ayADNymIdHBo= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/servicebus/armservicebus v1.1.1 h1:h+ZMdUM0/8oVqHjY9+1rupIvT0craBLapKhuzWui9lo= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/servicebus/armservicebus v1.1.1/go.mod h1:Ad79PTMmXBLbmMbRJkfefudJNxzFHfszKYadXA8SDSw= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.0.0 h1:TMEyRFKh1zaSPmoQh3kxK+xRAYVq8guCI/7SMO0F3KY= diff --git a/v2/internal/controllers/crd_search_searchservice_test.go b/v2/internal/controllers/crd_search_searchservice_test.go index fb8122cfde9..b4af8a6cc35 100644 --- a/v2/internal/controllers/crd_search_searchservice_test.go +++ b/v2/internal/controllers/crd_search_searchservice_test.go @@ -13,6 +13,7 @@ import ( search "github.com/Azure/azure-service-operator/v2/api/search/v1api20220901" "github.com/Azure/azure-service-operator/v2/internal/testcommon" "github.com/Azure/azure-service-operator/v2/internal/util/to" + "github.com/Azure/azure-service-operator/v2/pkg/genruntime" ) func Test_Search_SearchService_CRUD(t *testing.T) { @@ -44,6 +45,14 @@ func Test_Search_SearchService_CRUD(t *testing.T) { tc.Expect(service.Status.Id).ToNot(BeNil()) armId := *service.Status.Id + tc.RunSubtests( + testcommon.Subtest{ + Name: "WriteSearchServiceSecrets", + Test: func(tc *testcommon.KubePerTestContext) { + SearchService_WriteSecrets(tc, service) + }, + }) + old := service.DeepCopy() key := "foo" service.Spec.Tags = map[string]string{key: "bar"} @@ -59,3 +68,22 @@ func Test_Search_SearchService_CRUD(t *testing.T) { tc.Expect(retryAfter).To(BeZero()) tc.Expect(exists).To(BeFalse()) } + +func SearchService_WriteSecrets(tc *testcommon.KubePerTestContext, service *search.SearchService) { + old := service.DeepCopy() + searchKeysSecret := "searchkeyssecret" + service.Spec.OperatorSpec = &search.SearchServiceOperatorSpec{ + Secrets: &search.SearchServiceOperatorSecrets{ + AdminPrimaryKey: &genruntime.SecretDestination{Name: searchKeysSecret, Key: "adminPrimaryKey"}, + AdminSecondaryKey: &genruntime.SecretDestination{Name: searchKeysSecret, Key: "adminSecondaryKey"}, + QueryKey: &genruntime.SecretDestination{Name: searchKeysSecret, Key: "queryKey"}, + }, + } + + tc.PatchResourceAndWait(old, service) + tc.ExpectSecretHasKeys( + searchKeysSecret, + "adminPrimaryKey", + "adminSecondaryKey", + "queryKey") +} diff --git a/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Search_v1api_CreationAndDeletion.yaml b/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Search_v1api_CreationAndDeletion.yaml index 2a62e644de7..7fa59a886fc 100644 --- a/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Search_v1api_CreationAndDeletion.yaml +++ b/v2/internal/controllers/recordings/Test_Samples_CreationAndDeletion/Test_Search_v1api_CreationAndDeletion.yaml @@ -66,34 +66,39 @@ interactions: code: 200 duration: "" - request: - body: '{"location":"westcentralus","name":"aso-sample-userassignedidentity"}' + body: '{"identity":{"type":"SystemAssigned"},"location":"westus2","name":"asotestqctlbg","properties":{"authOptions":{"aadOrApiKey":{"aadAuthFailureMode":"http403"}},"encryptionWithCmk":{"enforcement":"Disabled"},"hostingMode":"default","partitionCount":1,"publicNetworkAccess":"disabled","replicaCount":1},"sku":{"name":"standard"}}' form: {} headers: Accept: - application/json Content-Length: - - "69" + - "326" Content-Type: - application/json Test-Request-Attempt: - "0" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aso-sample-userassignedidentity?api-version=2018-11-30 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg?api-version=2022-09-01 method: PUT response: - body: '{"location":"westcentralus","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asotest-rg-zklaaa/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aso-sample-userassignedidentity","name":"aso-sample-userassignedidentity","type":"Microsoft.ManagedIdentity/userAssignedIdentities","properties":{"tenantId":"00000000-0000-0000-0000-000000000000","principalId":"ba5cef4c-e59e-4851-b6a6-f25ed31f7f1f","clientId":"592bbac0-e841-43c9-b6b5-19d649f53249"}}' + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg","name":"asotestqctlbg","type":"Microsoft.Search/searchServices","location":"West + US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"aadOrApiKey":{"aadAuthFailureMode":"http403"}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"2f793422-989d-40d8-aa8c-975ab718237e","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Length: - - "488" + - "876" Content-Type: - application/json; charset=utf-8 + Elapsed-Time: + - "5483" + Etag: + - W/"datetime'2023-06-13T01%3A32%3A41.3765674Z'" Expires: - "-1" - Location: - - /subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asotest-rg-zklaaa/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aso-sample-userassignedidentity Pragma: - no-cache + Request-Id: + - 14d572a7-ee92-4f4d-b17d-909ad80ad1c2 Strict-Transport-Security: - max-age=31536000; includeSubDomains X-Content-Type-Options: @@ -102,34 +107,35 @@ interactions: code: 201 duration: "" - request: - body: '{"location":"westcentralus","name":"aso-sample-userassignedidentity"}' + body: "" form: {} headers: - Accept: - - application/json - Content-Length: - - "69" - Content-Type: - - application/json Test-Request-Attempt: - - "1" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aso-sample-userassignedidentity?api-version=2018-11-30 - method: PUT + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg?api-version=2022-09-01 + method: GET response: - body: '{"location":"westcentralus","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asotest-rg-zklaaa/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aso-sample-userassignedidentity","name":"aso-sample-userassignedidentity","type":"Microsoft.ManagedIdentity/userAssignedIdentities","properties":{"tenantId":"00000000-0000-0000-0000-000000000000","principalId":"ba5cef4c-e59e-4851-b6a6-f25ed31f7f1f","clientId":"592bbac0-e841-43c9-b6b5-19d649f53249"}}' + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg","name":"asotestqctlbg","type":"Microsoft.Search/searchServices","location":"West + US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"aadOrApiKey":{"aadAuthFailureMode":"http403"}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"2f793422-989d-40d8-aa8c-975ab718237e","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 + Elapsed-Time: + - "744" + Etag: + - W/"datetime'2023-06-13T01%3A32%3A41.3765674Z'" Expires: - "-1" Pragma: - no-cache + Request-Id: + - 0405f6c3-d536-4f25-bde4-efbf75b7d6fc Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: - - Accept-Encoding + - Accept-Encoding,Accept-Encoding X-Content-Type-Options: - nosniff status: 200 OK @@ -139,99 +145,98 @@ interactions: body: "" form: {} headers: - Accept: - - application/json Test-Request-Attempt: - - "0" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aso-sample-userassignedidentity?api-version=2018-11-30 + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg?api-version=2022-09-01 method: GET response: - body: '{"location":"westcentralus","tags":{},"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/asotest-rg-zklaaa/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aso-sample-userassignedidentity","name":"aso-sample-userassignedidentity","type":"Microsoft.ManagedIdentity/userAssignedIdentities","properties":{"tenantId":"00000000-0000-0000-0000-000000000000","principalId":"ba5cef4c-e59e-4851-b6a6-f25ed31f7f1f","clientId":"592bbac0-e841-43c9-b6b5-19d649f53249"}}' + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg","name":"asotestqctlbg","type":"Microsoft.Search/searchServices","location":"West + US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"aadOrApiKey":{"aadAuthFailureMode":"http403"}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"2f793422-989d-40d8-aa8c-975ab718237e","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 + Elapsed-Time: + - "1556" + Etag: + - W/"datetime'2023-06-13T01%3A32%3A41.3765674Z'" Expires: - "-1" Pragma: - no-cache + Request-Id: + - ea3ece1a-d466-4254-9c6b-e67d8d898340 Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: - - Accept-Encoding + - Accept-Encoding,Accept-Encoding X-Content-Type-Options: - nosniff status: 200 OK code: 200 duration: "" - request: - body: '{"identity":{"type":"SystemAssigned"},"location":"westus2","name":"asotestqctlbg","properties":{"encryptionWithCmk":{"enforcement":"Disabled"},"hostingMode":"default","partitionCount":1,"publicNetworkAccess":"disabled","replicaCount":1},"sku":{"name":"standard"}}' + body: "" form: {} headers: - Accept: - - application/json - Content-Length: - - "263" - Content-Type: - - application/json Test-Request-Attempt: - - "0" + - "2" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg?api-version=2022-09-01 - method: PUT + method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg","name":"asotestqctlbg","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"4bbe01d0-5fd8-41e5-a717-47dd6868e534","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"aadOrApiKey":{"aadAuthFailureMode":"http403"}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"2f793422-989d-40d8-aa8c-975ab718237e","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache - Content-Length: - - "845" Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "4101" + - "610" Etag: - - W/"datetime'2023-04-27T00%3A54%3A21.9079743Z'" + - W/"datetime'2023-06-13T01%3A32%3A41.3765674Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - 9914e370-87cd-489c-9f4a-a2c9509d72e5 + - 54cc633e-5626-43a3-aac2-6155829aa42c Strict-Transport-Security: - max-age=31536000; includeSubDomains + Vary: + - Accept-Encoding,Accept-Encoding X-Content-Type-Options: - nosniff - status: 201 Created - code: 201 + status: 200 OK + code: 200 duration: "" - request: body: "" form: {} headers: Test-Request-Attempt: - - "0" + - "3" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg?api-version=2022-09-01 method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg","name":"asotestqctlbg","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"4bbe01d0-5fd8-41e5-a717-47dd6868e534","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"aadOrApiKey":{"aadAuthFailureMode":"http403"}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"2f793422-989d-40d8-aa8c-975ab718237e","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "155" + - "400" Etag: - - W/"datetime'2023-04-27T00%3A54%3A21.9079743Z'" + - W/"datetime'2023-06-13T01%3A32%3A41.3765674Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - 32cf5d4c-1eaf-4b24-8f3b-f5dff64aeec9 + - 9721bfce-77f2-4085-8c2c-bfbbaf6b151a Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -246,27 +251,27 @@ interactions: form: {} headers: Test-Request-Attempt: - - "1" + - "4" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg?api-version=2022-09-01 method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg","name":"asotestqctlbg","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"4bbe01d0-5fd8-41e5-a717-47dd6868e534","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"aadOrApiKey":{"aadAuthFailureMode":"http403"}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"2f793422-989d-40d8-aa8c-975ab718237e","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "316" + - "222" Etag: - - W/"datetime'2023-04-27T00%3A54%3A21.9079743Z'" + - W/"datetime'2023-06-13T01%3A32%3A41.3765674Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - 4822eb95-31e3-4dd9-ad75-2f13955a394e + - 37705b77-6256-4e74-b12c-42fef43bff13 Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -281,27 +286,27 @@ interactions: form: {} headers: Test-Request-Attempt: - - "2" + - "5" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg?api-version=2022-09-01 method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg","name":"asotestqctlbg","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"4bbe01d0-5fd8-41e5-a717-47dd6868e534","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"aadOrApiKey":{"aadAuthFailureMode":"http403"}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"2f793422-989d-40d8-aa8c-975ab718237e","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "161" + - "342" Etag: - - W/"datetime'2023-04-27T00%3A54%3A21.9079743Z'" + - W/"datetime'2023-06-13T01%3A32%3A41.3765674Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - 0a87fcf9-41b9-46cf-9342-adafab088d90 + - 347da2bb-3c45-49b4-8087-cd511a8e1728 Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -316,27 +321,27 @@ interactions: form: {} headers: Test-Request-Attempt: - - "3" + - "6" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg?api-version=2022-09-01 method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg","name":"asotestqctlbg","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"4bbe01d0-5fd8-41e5-a717-47dd6868e534","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"aadOrApiKey":{"aadAuthFailureMode":"http403"}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"2f793422-989d-40d8-aa8c-975ab718237e","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "214" + - "1132" Etag: - - W/"datetime'2023-04-27T00%3A54%3A21.9079743Z'" + - W/"datetime'2023-06-13T01%3A32%3A41.3765674Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - efd23a5e-50c7-4403-9de6-123164e1edaf + - ff1f6778-44b5-4a4f-8b7c-fea7785b370a Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -351,27 +356,27 @@ interactions: form: {} headers: Test-Request-Attempt: - - "4" + - "7" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg?api-version=2022-09-01 method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg","name":"asotestqctlbg","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"4bbe01d0-5fd8-41e5-a717-47dd6868e534","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"aadOrApiKey":{"aadAuthFailureMode":"http403"}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"2f793422-989d-40d8-aa8c-975ab718237e","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "223" + - "516" Etag: - - W/"datetime'2023-04-27T00%3A54%3A21.9079743Z'" + - W/"datetime'2023-06-13T01%3A32%3A41.3765674Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - e6bd443d-a323-43f1-a744-4c5ea7b2e781 + - 64df9f62-8633-4b0f-8018-ca046da263de Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -386,27 +391,27 @@ interactions: form: {} headers: Test-Request-Attempt: - - "5" + - "8" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg?api-version=2022-09-01 method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg","name":"asotestqctlbg","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"4bbe01d0-5fd8-41e5-a717-47dd6868e534","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"aadOrApiKey":{"aadAuthFailureMode":"http403"}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"2f793422-989d-40d8-aa8c-975ab718237e","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "183" + - "251" Etag: - - W/"datetime'2023-04-27T00%3A54%3A21.9079743Z'" + - W/"datetime'2023-06-13T01%3A32%3A41.3765674Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - 0eda1956-0d95-455d-8070-c53a8c95074e + - d24903c6-36ae-4348-8a63-75fa5de3e685 Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -421,27 +426,27 @@ interactions: form: {} headers: Test-Request-Attempt: - - "6" + - "9" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg?api-version=2022-09-01 method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg","name":"asotestqctlbg","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"4bbe01d0-5fd8-41e5-a717-47dd6868e534","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"aadOrApiKey":{"aadAuthFailureMode":"http403"}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"2f793422-989d-40d8-aa8c-975ab718237e","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "222" + - "173" Etag: - - W/"datetime'2023-04-27T00%3A54%3A21.9079743Z'" + - W/"datetime'2023-06-13T01%3A32%3A41.3765674Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - 7b5dd83b-6c87-4467-b10d-db5d53e340b6 + - e61255de-9334-4f90-8d6e-253afc01b1e2 Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -456,27 +461,27 @@ interactions: form: {} headers: Test-Request-Attempt: - - "7" + - "10" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg?api-version=2022-09-01 method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg","name":"asotestqctlbg","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"4bbe01d0-5fd8-41e5-a717-47dd6868e534","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"aadOrApiKey":{"aadAuthFailureMode":"http403"}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"2f793422-989d-40d8-aa8c-975ab718237e","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "149" + - "185" Etag: - - W/"datetime'2023-04-27T00%3A54%3A21.9079743Z'" + - W/"datetime'2023-06-13T01%3A32%3A41.3765674Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - 27f0439d-9a27-4675-80ea-8f6b28829c14 + - 19d61069-bebf-4387-b772-af577ea9d3b4 Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -491,27 +496,27 @@ interactions: form: {} headers: Test-Request-Attempt: - - "8" + - "11" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg?api-version=2022-09-01 method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg","name":"asotestqctlbg","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"4bbe01d0-5fd8-41e5-a717-47dd6868e534","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"aadOrApiKey":{"aadAuthFailureMode":"http403"}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"2f793422-989d-40d8-aa8c-975ab718237e","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "200" + - "563" Etag: - - W/"datetime'2023-04-27T00%3A54%3A21.9079743Z'" + - W/"datetime'2023-06-13T01%3A32%3A41.3765674Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - eeea049a-15ac-46ee-be90-3918fafe31f6 + - a57b0a8e-d5d3-447c-bf80-9e82a01cf1a5 Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -526,27 +531,27 @@ interactions: form: {} headers: Test-Request-Attempt: - - "9" + - "12" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg?api-version=2022-09-01 method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg","name":"asotestqctlbg","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"4bbe01d0-5fd8-41e5-a717-47dd6868e534","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"aadOrApiKey":{"aadAuthFailureMode":"http403"}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"2f793422-989d-40d8-aa8c-975ab718237e","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "303" + - "780" Etag: - - W/"datetime'2023-04-27T00%3A54%3A21.9079743Z'" + - W/"datetime'2023-06-13T01%3A32%3A41.3765674Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - 50258e60-0297-47d7-8787-8dce2d6594e3 + - 721fbcd4-0e13-45fd-a24c-7db89c0bfae8 Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -561,27 +566,27 @@ interactions: form: {} headers: Test-Request-Attempt: - - "10" + - "13" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg?api-version=2022-09-01 method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg","name":"asotestqctlbg","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"4bbe01d0-5fd8-41e5-a717-47dd6868e534","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"aadOrApiKey":{"aadAuthFailureMode":"http403"}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"2f793422-989d-40d8-aa8c-975ab718237e","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "201" + - "525" Etag: - - W/"datetime'2023-04-27T00%3A54%3A21.9079743Z'" + - W/"datetime'2023-06-13T01%3A32%3A41.3765674Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - 7d935e50-2610-4ccf-b4b3-310b1cca11d3 + - e9ab8953-ff47-40b7-b28e-b82a37075219 Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -596,27 +601,27 @@ interactions: form: {} headers: Test-Request-Attempt: - - "11" + - "14" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg?api-version=2022-09-01 method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg","name":"asotestqctlbg","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"4bbe01d0-5fd8-41e5-a717-47dd6868e534","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"running","statusDetails":"","provisioningState":"succeeded","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"aadOrApiKey":{"aadAuthFailureMode":"http403"}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"2f793422-989d-40d8-aa8c-975ab718237e","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "162" + - "539" Etag: - - W/"datetime'2023-04-27T00%3A54%3A21.9079743Z'" + - W/"datetime'2023-06-13T01%3A32%3A41.3765674Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - 7ce4d0d7-60f1-45cc-9cb8-00c8e416d646 + - c3060947-ac24-4cca-adb5-026d4a254137 Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -630,28 +635,30 @@ interactions: body: "" form: {} headers: + Accept: + - application/json Test-Request-Attempt: - - "12" + - "15" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg?api-version=2022-09-01 method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg","name":"asotestqctlbg","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"4bbe01d0-5fd8-41e5-a717-47dd6868e534","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"running","statusDetails":"","provisioningState":"succeeded","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"aadOrApiKey":{"aadAuthFailureMode":"http403"}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"2f793422-989d-40d8-aa8c-975ab718237e","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "169" + - "196" Etag: - - W/"datetime'2023-04-27T00%3A54%3A21.9079743Z'" + - W/"datetime'2023-06-13T01%3A32%3A41.3765674Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - a35d664d-0ff0-430d-98dd-f2ccff8a3c7f + - e9da9e6e-78f4-46b9-a722-927ace454630 Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -665,28 +672,27 @@ interactions: body: "" form: {} headers: + Accept: + - application/json Test-Request-Attempt: - - "13" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg?api-version=2022-09-01 - method: GET + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg/listQueryKeys?api-version=2020-08-01 + method: POST response: - body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg","name":"asotestqctlbg","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"4bbe01d0-5fd8-41e5-a717-47dd6868e534","tenantId":"00000000-0000-0000-0000-000000000000"}}' + body: '{"value":[{"name":null,"key":"{KEY}"}],"nextLink":null}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "224" - Etag: - - W/"datetime'2023-04-27T00%3A54%3A21.9079743Z'" + - "327" Expires: - "-1" Pragma: - no-cache Request-Id: - - 3943736b-77be-49d1-b8b2-65241f9d763a + - 3938868a-eb52-4122-805b-570f0b5f8816 Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -700,28 +706,27 @@ interactions: body: "" form: {} headers: + Accept: + - application/json Test-Request-Attempt: - - "14" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg?api-version=2022-09-01 - method: GET + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg/listAdminKeys?api-version=2020-08-01 + method: POST response: - body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg","name":"asotestqctlbg","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"running","statusDetails":"","provisioningState":"succeeded","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"4bbe01d0-5fd8-41e5-a717-47dd6868e534","tenantId":"00000000-0000-0000-0000-000000000000"}}' + body: '{"primaryKey":"{KEY}","secondaryKey":"{KEY}"}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "215" - Etag: - - W/"datetime'2023-04-27T00%3A54%3A21.9079743Z'" + - "315" Expires: - "-1" Pragma: - no-cache Request-Id: - - f3179139-4b8f-43cf-b643-ece912fcd2a1 + - 22e5634c-c27b-417e-ada0-12f073771713 Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -738,46 +743,39 @@ interactions: Accept: - application/json Test-Request-Attempt: - - "15" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg?api-version=2022-09-01 - method: GET + - "0" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa?api-version=2020-06-01 + method: DELETE response: - body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg","name":"asotestqctlbg","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"running","statusDetails":"","provisioningState":"succeeded","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"4bbe01d0-5fd8-41e5-a717-47dd6868e534","tenantId":"00000000-0000-0000-0000-000000000000"}}' + body: "" headers: Cache-Control: - no-cache - Content-Type: - - application/json; charset=utf-8 - Elapsed-Time: - - "151" - Etag: - - W/"datetime'2023-04-27T00%3A54%3A21.9079743Z'" + Content-Length: + - "0" Expires: - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRaS0xBQUEtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 Pragma: - no-cache - Request-Id: - - 6cae7388-1148-4009-908f-56bdd7688632 + Retry-After: + - "15" Strict-Transport-Security: - max-age=31536000; includeSubDomains - Vary: - - Accept-Encoding,Accept-Encoding X-Content-Type-Options: - nosniff - status: 200 OK - code: 200 + status: 202 Accepted + code: 202 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-zklaaa?api-version=2020-06-01 - method: DELETE + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRaS0xBQUEtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 + method: GET response: body: "" headers: @@ -805,7 +803,37 @@ interactions: form: {} headers: Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRaS0xBQUEtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 + method: GET + response: + body: "" + headers: + Cache-Control: + - no-cache + Content-Length: - "0" + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRaS0xBQUEtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 + Pragma: + - no-cache + Retry-After: + - "15" + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + X-Content-Type-Options: + - nosniff + status: 202 Accepted + code: 202 + duration: "" +- request: + body: "" + form: {} + headers: + Test-Request-Attempt: + - "2" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRaS0xBQUEtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 method: GET response: @@ -835,7 +863,7 @@ interactions: form: {} headers: Test-Request-Attempt: - - "1" + - "3" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRaS0xBQUEtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 method: GET response: @@ -865,7 +893,7 @@ interactions: form: {} headers: Test-Request-Attempt: - - "2" + - "4" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRaS0xBQUEtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 method: GET response: @@ -895,7 +923,7 @@ interactions: form: {} headers: Test-Request-Attempt: - - "3" + - "5" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRaS0xBQUEtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 method: GET response: @@ -925,7 +953,7 @@ interactions: form: {} headers: Test-Request-Attempt: - - "4" + - "6" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRaS0xBQUEtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 method: GET response: @@ -937,35 +965,64 @@ interactions: - "0" Expires: - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRaS0xBQUEtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 Pragma: - no-cache + Retry-After: + - "15" Strict-Transport-Security: - max-age=31536000; includeSubDomains X-Content-Type-Options: - nosniff - status: 200 OK - code: 200 + status: 202 Accepted + code: 202 duration: "" - request: body: "" form: {} headers: - Accept: - - application/json Test-Request-Attempt: + - "7" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRaS0xBQUEtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 + method: GET + response: + body: "" + headers: + Cache-Control: + - no-cache + Content-Length: - "0" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg?api-version=2022-09-01 - method: DELETE + Expires: + - "-1" + Location: + - https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRaS0xBQUEtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?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: + - "8" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/operationresults/eyJqb2JJZCI6IlJFU09VUkNFR1JPVVBERUxFVElPTkpPQi1BU09URVNUOjJEUkc6MkRaS0xBQUEtV0VTVFVTMiIsImpvYkxvY2F0aW9uIjoid2VzdHVzMiJ9?api-version=2020-06-01 + method: GET response: - body: '{"error":{"code":"ResourceGroupNotFound","message":"Resource group ''asotest-rg-zklaaa'' - could not be found."}}' + body: "" headers: Cache-Control: - no-cache Content-Length: - - "109" - Content-Type: - - application/json; charset=utf-8 + - "0" Expires: - "-1" Pragma: @@ -974,10 +1031,8 @@ interactions: - max-age=31536000; includeSubDomains X-Content-Type-Options: - nosniff - X-Ms-Failure-Cause: - - gateway - status: 404 Not Found - code: 404 + status: 200 OK + code: 200 duration: "" - request: body: "" @@ -987,7 +1042,7 @@ interactions: - application/json Test-Request-Attempt: - "0" - url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.ManagedIdentity/userAssignedIdentities/aso-sample-userassignedidentity?api-version=2018-11-30 + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zklaaa/providers/Microsoft.Search/searchServices/asotestqctlbg?api-version=2022-09-01 method: DELETE response: body: '{"error":{"code":"ResourceGroupNotFound","message":"Resource group ''asotest-rg-zklaaa'' diff --git a/v2/internal/controllers/recordings/Test_Search_SearchService_CRUD.yaml b/v2/internal/controllers/recordings/Test_Search_SearchService_CRUD.yaml index 1d544a5cf99..5c4be77edfb 100644 --- a/v2/internal/controllers/recordings/Test_Search_SearchService_CRUD.yaml +++ b/v2/internal/controllers/recordings/Test_Search_SearchService_CRUD.yaml @@ -81,24 +81,24 @@ interactions: method: PUT response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr","name":"asotest-search-htqllr","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"9a89a9d3-08d1-46f5-b6c8-dde4a2474e4f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"6815d354-4975-4ed8-a973-666e2a9d1e8f","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Length: - - "861" + - "882" Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "4091" + - "4734" Etag: - - W/"datetime'2023-04-27T00%3A40%3A37.1886571Z'" + - W/"datetime'2023-06-11T23%3A28%3A01.1201231Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - f6362065-8cd8-4ce0-a510-8def84c5b603 + - b7238eb9-2b41-483d-8fc0-7e09e5586c52 Strict-Transport-Security: - max-age=31536000; includeSubDomains X-Content-Type-Options: @@ -116,22 +116,22 @@ interactions: method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr","name":"asotest-search-htqllr","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"9a89a9d3-08d1-46f5-b6c8-dde4a2474e4f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"6815d354-4975-4ed8-a973-666e2a9d1e8f","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "240" + - "157" Etag: - - W/"datetime'2023-04-27T00%3A40%3A37.1886571Z'" + - W/"datetime'2023-06-11T23%3A28%3A01.1201231Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - a7b59af0-4bb7-457d-b22b-3ab55b5df217 + - 904f57af-7d2d-4b89-9106-3b25cfc8be3a Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -151,22 +151,22 @@ interactions: method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr","name":"asotest-search-htqllr","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"9a89a9d3-08d1-46f5-b6c8-dde4a2474e4f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"6815d354-4975-4ed8-a973-666e2a9d1e8f","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "214" + - "164" Etag: - - W/"datetime'2023-04-27T00%3A40%3A37.1886571Z'" + - W/"datetime'2023-06-11T23%3A28%3A01.1201231Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - e2eac3ea-6f10-48de-a0b1-46853aa7b7d8 + - 32c5ece8-384f-4f80-bd80-2360dc1f0105 Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -186,22 +186,22 @@ interactions: method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr","name":"asotest-search-htqllr","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"9a89a9d3-08d1-46f5-b6c8-dde4a2474e4f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"6815d354-4975-4ed8-a973-666e2a9d1e8f","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "156" + - "157" Etag: - - W/"datetime'2023-04-27T00%3A40%3A37.1886571Z'" + - W/"datetime'2023-06-11T23%3A28%3A01.1201231Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - 91e07391-3954-4919-8aa4-1309156a0efe + - 224d43fd-4dda-49ce-b4bc-1d9f50de80d4 Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -221,22 +221,22 @@ interactions: method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr","name":"asotest-search-htqllr","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"9a89a9d3-08d1-46f5-b6c8-dde4a2474e4f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"6815d354-4975-4ed8-a973-666e2a9d1e8f","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "176" + - "223" Etag: - - W/"datetime'2023-04-27T00%3A40%3A37.1886571Z'" + - W/"datetime'2023-06-11T23%3A28%3A01.1201231Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - 360382aa-e6de-4e90-8497-534f45812adc + - 7a737626-e34f-463c-b8eb-5f2809002f70 Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -256,22 +256,22 @@ interactions: method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr","name":"asotest-search-htqllr","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"9a89a9d3-08d1-46f5-b6c8-dde4a2474e4f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"6815d354-4975-4ed8-a973-666e2a9d1e8f","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "192" + - "186" Etag: - - W/"datetime'2023-04-27T00%3A40%3A37.1886571Z'" + - W/"datetime'2023-06-11T23%3A28%3A01.1201231Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - 358112e6-570f-4771-bffe-2277017d079a + - 02737e55-15f0-42cf-a64e-a089d08ba6d1 Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -291,22 +291,22 @@ interactions: method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr","name":"asotest-search-htqllr","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"9a89a9d3-08d1-46f5-b6c8-dde4a2474e4f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"6815d354-4975-4ed8-a973-666e2a9d1e8f","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "148" + - "167" Etag: - - W/"datetime'2023-04-27T00%3A40%3A37.1886571Z'" + - W/"datetime'2023-06-11T23%3A28%3A01.1201231Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - a7109be5-44e3-4552-b97f-f5a8545e0fc5 + - 3760c926-20d6-404a-b1b4-e4a50f3f325e Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -326,22 +326,22 @@ interactions: method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr","name":"asotest-search-htqllr","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"9a89a9d3-08d1-46f5-b6c8-dde4a2474e4f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"6815d354-4975-4ed8-a973-666e2a9d1e8f","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "160" + - "209" Etag: - - W/"datetime'2023-04-27T00%3A40%3A37.1886571Z'" + - W/"datetime'2023-06-11T23%3A28%3A01.1201231Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - 483f80b2-b565-43eb-be8e-c99fc7dd587b + - 6b55f612-a31a-4e9b-830f-6c7344dc9965 Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -361,22 +361,22 @@ interactions: method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr","name":"asotest-search-htqllr","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"9a89a9d3-08d1-46f5-b6c8-dde4a2474e4f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"6815d354-4975-4ed8-a973-666e2a9d1e8f","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "141" + - "175" Etag: - - W/"datetime'2023-04-27T00%3A40%3A37.1886571Z'" + - W/"datetime'2023-06-11T23%3A28%3A01.1201231Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - 5af9e5cc-64bc-4906-bcb0-f9325d221732 + - e61651f9-6cf6-4f62-9bff-59a7a0e8fcb9 Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -396,7 +396,7 @@ interactions: method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr","name":"asotest-search-htqllr","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"9a89a9d3-08d1-46f5-b6c8-dde4a2474e4f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"6815d354-4975-4ed8-a973-666e2a9d1e8f","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache @@ -405,13 +405,13 @@ interactions: Elapsed-Time: - "164" Etag: - - W/"datetime'2023-04-27T00%3A40%3A37.1886571Z'" + - W/"datetime'2023-06-11T23%3A28%3A01.1201231Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - e6f1433d-229e-4123-a5f6-95501e6505d2 + - 79a45740-c144-423f-8eb0-4752d4386a5d Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -431,22 +431,22 @@ interactions: method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr","name":"asotest-search-htqllr","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"9a89a9d3-08d1-46f5-b6c8-dde4a2474e4f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"6815d354-4975-4ed8-a973-666e2a9d1e8f","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "169" + - "177" Etag: - - W/"datetime'2023-04-27T00%3A40%3A37.1886571Z'" + - W/"datetime'2023-06-11T23%3A28%3A01.1201231Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - 7ee2a403-0df3-4bfc-aea8-adfe4b43d587 + - 8201979f-ccfe-4279-b835-756351193eaf Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -466,22 +466,22 @@ interactions: method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr","name":"asotest-search-htqllr","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"9a89a9d3-08d1-46f5-b6c8-dde4a2474e4f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"6815d354-4975-4ed8-a973-666e2a9d1e8f","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "303" + - "235" Etag: - - W/"datetime'2023-04-27T00%3A40%3A37.1886571Z'" + - W/"datetime'2023-06-11T23%3A28%3A01.1201231Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - 0514bf3c-d752-4a09-9e54-2f0ba7caf39f + - 3c5158b1-b79f-43c2-bde2-4c5b2b12cef3 Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -501,22 +501,22 @@ interactions: method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr","name":"asotest-search-htqllr","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"9a89a9d3-08d1-46f5-b6c8-dde4a2474e4f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"6815d354-4975-4ed8-a973-666e2a9d1e8f","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "278" + - "737" Etag: - - W/"datetime'2023-04-27T00%3A40%3A37.1886571Z'" + - W/"datetime'2023-06-11T23%3A28%3A01.1201231Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - 99a5b12d-41b2-4d17-8eca-30a9e19b1ea0 + - 3220b327-4eb2-4822-96f3-b183fb7126d1 Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -536,22 +536,92 @@ interactions: method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr","name":"asotest-search-htqllr","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"running","statusDetails":"","provisioningState":"succeeded","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"9a89a9d3-08d1-46f5-b6c8-dde4a2474e4f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"6815d354-4975-4ed8-a973-666e2a9d1e8f","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "202" + - "369" Etag: - - W/"datetime'2023-04-27T00%3A40%3A37.1886571Z'" + - W/"datetime'2023-06-11T23%3A28%3A01.1201231Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - 0d8c8c17-2fc2-424a-922f-70b3422520e9 + - cadac3a2-de8d-48c0-98c7-8e27ece9c6b2 + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + Vary: + - Accept-Encoding,Accept-Encoding + X-Content-Type-Options: + - nosniff + status: 200 OK + code: 200 + duration: "" +- request: + body: "" + form: {} + headers: + Test-Request-Attempt: + - "13" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr?api-version=2022-09-01 + method: GET + response: + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr","name":"asotest-search-htqllr","type":"Microsoft.Search/searchServices","location":"West + US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"provisioning","statusDetails":"","provisioningState":"provisioning","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"6815d354-4975-4ed8-a973-666e2a9d1e8f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + headers: + Cache-Control: + - no-cache + Content-Type: + - application/json; charset=utf-8 + Elapsed-Time: + - "192" + Etag: + - W/"datetime'2023-06-11T23%3A28%3A01.1201231Z'" + Expires: + - "-1" + Pragma: + - no-cache + Request-Id: + - df715b6c-c85a-44de-8069-cd28563234fa + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + Vary: + - Accept-Encoding,Accept-Encoding + X-Content-Type-Options: + - nosniff + status: 200 OK + code: 200 + duration: "" +- request: + body: "" + form: {} + headers: + Test-Request-Attempt: + - "14" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr?api-version=2022-09-01 + method: GET + response: + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr","name":"asotest-search-htqllr","type":"Microsoft.Search/searchServices","location":"West + US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"running","statusDetails":"","provisioningState":"succeeded","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"6815d354-4975-4ed8-a973-666e2a9d1e8f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + headers: + Cache-Control: + - no-cache + Content-Type: + - application/json; charset=utf-8 + Elapsed-Time: + - "342" + Etag: + - W/"datetime'2023-06-11T23%3A28%3A01.1201231Z'" + Expires: + - "-1" + Pragma: + - no-cache + Request-Id: + - e48d1764-2e07-4054-ac53-e8c47a9f84be Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -568,27 +638,173 @@ interactions: Accept: - application/json Test-Request-Attempt: - - "13" + - "15" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr?api-version=2022-09-01 + method: GET + response: + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr","name":"asotest-search-htqllr","type":"Microsoft.Search/searchServices","location":"West + US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"running","statusDetails":"","provisioningState":"succeeded","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"6815d354-4975-4ed8-a973-666e2a9d1e8f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + headers: + Cache-Control: + - no-cache + Content-Type: + - application/json; charset=utf-8 + Elapsed-Time: + - "214" + Etag: + - W/"datetime'2023-06-11T23%3A28%3A01.1201231Z'" + Expires: + - "-1" + Pragma: + - no-cache + Request-Id: + - ffd6c6a0-2bf8-4473-9528-43fc3937d7ab + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + Vary: + - Accept-Encoding,Accept-Encoding + X-Content-Type-Options: + - nosniff + status: 200 OK + code: 200 + duration: "" +- request: + body: '{"identity":{"type":"SystemAssigned"},"location":"westus2","name":"asotest-search-htqllr","properties":{"encryptionWithCmk":{"enforcement":"Disabled"},"hostingMode":"default","partitionCount":1,"publicNetworkAccess":"disabled","replicaCount":1},"sku":{"name":"standard"}}' + form: {} + headers: + Accept: + - application/json + Content-Length: + - "271" + Content-Type: + - application/json + Test-Request-Attempt: + - "1" + url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr?api-version=2022-09-01 + method: PUT + response: + body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr","name":"asotest-search-htqllr","type":"Microsoft.Search/searchServices","location":"West + US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"running","statusDetails":"","provisioningState":"succeeded","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"6815d354-4975-4ed8-a973-666e2a9d1e8f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + headers: + Cache-Control: + - no-cache + Content-Type: + - application/json; charset=utf-8 + Elapsed-Time: + - "347" + Etag: + - W/"datetime'2023-06-11T23%3A38%3A33.3007369Z'" + Expires: + - "-1" + Pragma: + - no-cache + Request-Id: + - 7e040c58-a77a-4346-a481-2f1808c52083 + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + Vary: + - Accept-Encoding,Accept-Encoding + X-Content-Type-Options: + - nosniff + status: 200 OK + code: 200 + duration: "" +- request: + body: "" + form: {} + headers: + Accept: + - application/json + Test-Request-Attempt: + - "16" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr?api-version=2022-09-01 method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr","name":"asotest-search-htqllr","type":"Microsoft.Search/searchServices","location":"West - US 2","properties":{"replicaCount":1,"partitionCount":1,"status":"running","statusDetails":"","provisioningState":"succeeded","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"9a89a9d3-08d1-46f5-b6c8-dde4a2474e4f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"running","statusDetails":"","provisioningState":"succeeded","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"6815d354-4975-4ed8-a973-666e2a9d1e8f","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "139" + - "172" Etag: - - W/"datetime'2023-04-27T00%3A40%3A37.1886571Z'" + - W/"datetime'2023-06-11T23%3A38%3A33.3007369Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - 467b847a-83a0-44c2-8cee-23aa184ff434 + - f267677f-fb08-4b84-93fa-caafeefdecfe + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + Vary: + - Accept-Encoding,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-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr/listQueryKeys?api-version=2020-08-01 + method: POST + response: + body: '{"value":[{"name":null,"key":"{KEY}"}],"nextLink":null}' + headers: + Cache-Control: + - no-cache + Content-Type: + - application/json; charset=utf-8 + Elapsed-Time: + - "117" + Expires: + - "-1" + Pragma: + - no-cache + Request-Id: + - 891bbd82-121f-468b-ad68-3270e0bcc350 + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + Vary: + - Accept-Encoding,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-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr/listAdminKeys?api-version=2020-08-01 + method: POST + response: + body: '{"primaryKey":"{KEY}","secondaryKey":"{KEY}"}' + headers: + Cache-Control: + - no-cache + Content-Type: + - application/json; charset=utf-8 + Elapsed-Time: + - "174" + Expires: + - "-1" + Pragma: + - no-cache + Request-Id: + - b114625c-9e43-4722-a4b4-e2beb38e02b7 Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -609,27 +825,27 @@ interactions: Content-Type: - application/json Test-Request-Attempt: - - "1" + - "2" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr?api-version=2022-09-01 method: PUT response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr","name":"asotest-search-htqllr","type":"Microsoft.Search/searchServices","location":"West - US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"running","statusDetails":"","provisioningState":"succeeded","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"9a89a9d3-08d1-46f5-b6c8-dde4a2474e4f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"running","statusDetails":"","provisioningState":"succeeded","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"6815d354-4975-4ed8-a973-666e2a9d1e8f","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "325" + - "466" Etag: - - W/"datetime'2023-04-27T00%3A49%3A04.3301487Z'" + - W/"datetime'2023-06-11T23%3A38%3A42.73936Z'" Expires: - "-1" Pragma: - no-cache Request-Id: - - 53446d2f-f18d-4714-ba54-ce0413ba8ade + - 35ff1a28-9f42-4f76-8bcf-c66ac782089d Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -646,27 +862,95 @@ interactions: Accept: - application/json Test-Request-Attempt: - - "14" + - "17" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr?api-version=2022-09-01 method: GET response: body: '{"id":"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr","name":"asotest-search-htqllr","type":"Microsoft.Search/searchServices","location":"West - US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"running","statusDetails":"","provisioningState":"succeeded","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"9a89a9d3-08d1-46f5-b6c8-dde4a2474e4f","tenantId":"00000000-0000-0000-0000-000000000000"}}' + US 2","tags":{"foo":"bar"},"properties":{"replicaCount":1,"partitionCount":1,"status":"running","statusDetails":"","provisioningState":"succeeded","hostingMode":"default","publicNetworkAccess":"Disabled","networkRuleSet":{"ipRules":[],"bypass":"None"},"privateEndpointConnections":[],"sharedPrivateLinkResources":[],"encryptionWithCmk":{"enforcement":"Disabled","encryptionComplianceStatus":"Compliant"},"disableLocalAuth":false,"authOptions":{"apiKeyOnly":{}}},"sku":{"name":"standard"},"identity":{"type":"SystemAssigned","principalId":"6815d354-4975-4ed8-a973-666e2a9d1e8f","tenantId":"00000000-0000-0000-0000-000000000000"}}' headers: Cache-Control: - no-cache Content-Type: - application/json; charset=utf-8 Elapsed-Time: - - "191" + - "563" Etag: - - W/"datetime'2023-04-27T00%3A49%3A04.3301487Z'" + - W/"datetime'2023-06-11T23%3A38%3A42.73936Z'" + Expires: + - "-1" + Pragma: + - no-cache + Request-Id: + - b612d9bd-4259-4c97-9a4b-bc1d2f770a18 + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + Vary: + - Accept-Encoding,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-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr/listQueryKeys?api-version=2020-08-01 + method: POST + response: + body: '{"value":[{"name":null,"key":"{KEY}"}],"nextLink":null}' + headers: + Cache-Control: + - no-cache + Content-Type: + - application/json; charset=utf-8 + Elapsed-Time: + - "94" + Expires: + - "-1" + Pragma: + - no-cache + Request-Id: + - 856e8407-2c7c-470f-bc21-d27d94bf284e + Strict-Transport-Security: + - max-age=31536000; includeSubDomains + Vary: + - Accept-Encoding,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-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr/listAdminKeys?api-version=2020-08-01 + method: POST + response: + body: '{"primaryKey":"{KEY}","secondaryKey":"{KEY}"}' + headers: + Cache-Control: + - no-cache + Content-Type: + - application/json; charset=utf-8 + Elapsed-Time: + - "112" Expires: - "-1" Pragma: - no-cache Request-Id: - - 1c9d9212-158d-4a3b-8d85-af34faad6fc2 + - ec11ad59-b21b-4618-81de-0a1be21532ca Strict-Transport-Security: - max-age=31536000; includeSubDomains Vary: @@ -694,13 +978,13 @@ interactions: Content-Length: - "0" Elapsed-Time: - - "3562" + - "3220" Expires: - "-1" Pragma: - no-cache Request-Id: - - 9376a559-8a4b-4e4f-ba99-2fd0a9802c52 + - f16e27ae-2fa9-4218-843c-b8b2ab82de02 Strict-Transport-Security: - max-age=31536000; includeSubDomains X-Content-Type-Options: @@ -715,7 +999,7 @@ interactions: Accept: - application/json Test-Request-Attempt: - - "15" + - "18" url: https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/asotest-rg-zadzmw/providers/Microsoft.Search/searchServices/asotest-search-htqllr?api-version=2022-09-01 method: GET response: diff --git a/v2/internal/testcommon/test_context.go b/v2/internal/testcommon/test_context.go index 6c8d6e8b9f5..3969a04fac0 100644 --- a/v2/internal/testcommon/test_context.go +++ b/v2/internal/testcommon/test_context.go @@ -392,6 +392,10 @@ var ( // baseURLMatcher matches the base part of a URL baseURLMatcher = regexp.MustCompile(`^https://[^/]+/`) + + // customKeyMatcher is used to match 'key' or 'Key' followed by the base64 patterns without '=' padding. + customKeyMatcher = regexp.MustCompile(`"([a-z]+)?[K-k]ey":"[a-zA-Z0-9+/]+"`) + customKeyReplacer = regexp.MustCompile(`"(?:[A-Za-z0-9+/]{4}){10,}(?:[A-Za-z0-9+/]{4}|[A-Za-z0-9+/])"`) ) // hideDates replaces all ISO8601 datetimes with a fixed value @@ -422,12 +426,19 @@ func hideBaseRequestURL(s string) string { return baseURLMatcher.ReplaceAllLiteralString(s, `https://management.azure.com/`) } +func hideCustomKeys(s string) string { + return customKeyMatcher.ReplaceAllStringFunc(s, func(matched string) string { + return customKeyReplacer.ReplaceAllString(matched, `"{KEY}"`) + }) +} + func hideRecordingData(s string) string { result := hideDates(s) result = hideSSHKeys(result) result = hidePasswords(result) result = hideKubeConfigs(result) result = hideKeys(result) + result = hideCustomKeys(result) return result } diff --git a/v2/samples/search/v1api/refs/v1api20181130_userassignedidentity.yaml b/v2/samples/search/v1api/refs/v1api20181130_userassignedidentity.yaml deleted file mode 100644 index 935bf2f2160..00000000000 --- a/v2/samples/search/v1api/refs/v1api20181130_userassignedidentity.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: managedidentity.azure.com/v1api20181130 -kind: UserAssignedIdentity -metadata: - name: aso-sample-userassignedidentity - namespace: default -spec: - location: westcentralus - owner: - name: aso-sample-rg diff --git a/v2/samples/search/v1api/v1api20220901_searchservice.yaml b/v2/samples/search/v1api/v1api20220901_searchservice.yaml index 3178fe75311..adb634e6eba 100644 --- a/v2/samples/search/v1api/v1api20220901_searchservice.yaml +++ b/v2/samples/search/v1api/v1api20220901_searchservice.yaml @@ -17,3 +17,17 @@ spec: replicaCount: 1 sku: name: standard + authOptions: + aadOrApiKey: + aadAuthFailureMode: http403 + operatorSpec: + secrets: + adminPrimaryKey: + key: adminPrimaryKey + name: searchservicekeyssecret + adminSecondaryKey: + key: adminSecondaryKey + name: searchservicekeyssecret + queryKey: + key: queryKey + name: searchservicekeyssecret