From ab7564d2725922e84e21d677d5c796d946789186 Mon Sep 17 00:00:00 2001 From: Alancere <804873052@qq.com> Date: Tue, 21 Nov 2023 15:57:30 +0800 Subject: [PATCH 01/10] [Release] sdk/resourcemanager/billing/armbilling/0.7.0 generation from spec commit: 164375e67a1bffb207bcf603772c289dbe42d7b5 --- .../billing/armbilling/CHANGELOG.md | 6 + .../billing/armbilling/README.md | 7 + .../billing/armbilling/accounts_client.go | 89 +- .../accounts_client_example_test.go | 16 +- .../billing/armbilling/address_client.go | 25 +- .../billing/armbilling/agreements_client.go | 41 +- .../agreements_client_example_test.go | 22 +- .../billing/armbilling/autorest.md | 2 +- .../armbilling/availablebalances_client.go | 20 +- .../billing/armbilling/client_factory.go | 96 +- .../billing/armbilling/constants.go | 7 +- .../billing/armbilling/customers_client.go | 62 +- .../billing/armbilling/date_type.go | 3 +- .../armbilling/enrollmentaccounts_client.go | 41 +- .../armbilling/fake/accounts_server.go | 255 +++ .../billing/armbilling/fake/address_server.go | 88 + .../armbilling/fake/agreements_server.go | 172 ++ .../fake/availablebalances_server.go | 100 ++ .../armbilling/fake/customers_server.go | 245 +++ .../billing/armbilling/fake/date_type.go | 59 + .../fake/enrollmentaccounts_server.go | 134 ++ .../armbilling/fake/instructions_server.go | 203 +++ .../billing/armbilling/fake/internal.go | 83 + .../armbilling/fake/invoices_server.go | 545 ++++++ .../armbilling/fake/invoicesections_server.go | 216 +++ .../armbilling/fake/operations_server.go | 96 ++ .../billing/armbilling/fake/periods_server.go | 174 ++ .../armbilling/fake/permissions_server.go | 259 +++ .../armbilling/fake/policies_server.go | 225 +++ .../armbilling/fake/products_server.go | 471 ++++++ .../armbilling/fake/profiles_server.go | 228 +++ .../armbilling/fake/property_server.go | 126 ++ .../armbilling/fake/reservations_server.go | 217 +++ .../armbilling/fake/roleassignments_server.go | 469 ++++++ .../armbilling/fake/roledefinitions_server.go | 340 ++++ .../billing/armbilling/fake/server_factory.go | 187 +++ .../armbilling/fake/subscriptions_server.go | 425 +++++ .../billing/armbilling/fake/time_rfc3339.go | 86 + .../armbilling/fake/transactions_server.go | 112 ++ sdk/resourcemanager/billing/armbilling/go.mod | 20 +- sdk/resourcemanager/billing/armbilling/go.sum | 46 +- .../billing/armbilling/instructions_client.go | 61 +- .../billing/armbilling/invoices_client.go | 211 ++- .../invoices_client_example_test.go | 158 +- .../armbilling/invoicesections_client.go | 69 +- .../billing/armbilling/models.go | 1457 ++++++----------- .../billing/armbilling/models_serde.go | 99 +- .../billing/armbilling/operations_client.go | 26 +- .../billing/armbilling/options.go | 513 ++++++ .../billing/armbilling/periods_client.go | 41 +- .../billing/armbilling/permissions_client.go | 89 +- .../billing/armbilling/policies_client.go | 75 +- .../billing/armbilling/products_client.go | 164 +- .../products_client_example_test.go | 44 +- .../billing/armbilling/profiles_client.go | 69 +- .../billing/armbilling/property_client.go | 40 +- .../billing/armbilling/reservations_client.go | 47 +- .../billing/armbilling/response_types.go | 83 +- .../armbilling/roleassignments_client.go | 158 +- .../armbilling/roledefinitions_client.go | 113 +- .../armbilling/subscriptions_client.go | 172 +- .../billing/armbilling/time_rfc3339.go | 43 +- .../billing/armbilling/transactions_client.go | 26 +- .../transactions_client_example_test.go | 12 +- 64 files changed, 7808 insertions(+), 1980 deletions(-) create mode 100644 sdk/resourcemanager/billing/armbilling/fake/accounts_server.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/address_server.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/agreements_server.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/availablebalances_server.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/customers_server.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/date_type.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/enrollmentaccounts_server.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/instructions_server.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/internal.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/invoices_server.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/invoicesections_server.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/operations_server.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/periods_server.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/permissions_server.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/policies_server.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/products_server.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/profiles_server.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/property_server.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/reservations_server.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/roleassignments_server.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/roledefinitions_server.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/server_factory.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/subscriptions_server.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/time_rfc3339.go create mode 100644 sdk/resourcemanager/billing/armbilling/fake/transactions_server.go create mode 100644 sdk/resourcemanager/billing/armbilling/options.go diff --git a/sdk/resourcemanager/billing/armbilling/CHANGELOG.md b/sdk/resourcemanager/billing/armbilling/CHANGELOG.md index 92d136dd6aa6..81ee2fd4f63c 100644 --- a/sdk/resourcemanager/billing/armbilling/CHANGELOG.md +++ b/sdk/resourcemanager/billing/armbilling/CHANGELOG.md @@ -1,5 +1,11 @@ # Release History +## 0.7.0 (2023-11-24) +### Features Added + +- Support for test fakes and OpenTelemetry trace spans. + + ## 0.6.0 (2023-03-27) ### Features Added diff --git a/sdk/resourcemanager/billing/armbilling/README.md b/sdk/resourcemanager/billing/armbilling/README.md index 1d5759d3987d..628b4bd06c67 100644 --- a/sdk/resourcemanager/billing/armbilling/README.md +++ b/sdk/resourcemanager/billing/armbilling/README.md @@ -60,6 +60,13 @@ A client groups a set of related APIs, providing access to its functionality. C client := clientFactory.NewInvoicesClient() ``` +## Fakes + +The fake package contains types used for constructing in-memory fake servers used in unit tests. +This allows writing tests to cover various success/error conditions without the need for connecting to a live service. + +Please see https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/samples/fakes for details and examples on how to use fakes. + ## Provide Feedback If you encounter bugs or have suggestions, please diff --git a/sdk/resourcemanager/billing/armbilling/accounts_client.go b/sdk/resourcemanager/billing/armbilling/accounts_client.go index ce701bcc431d..3c26825d3cc7 100644 --- a/sdk/resourcemanager/billing/armbilling/accounts_client.go +++ b/sdk/resourcemanager/billing/armbilling/accounts_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -31,7 +30,7 @@ type AccountsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewAccountsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*AccountsClient, error) { - cl, err := arm.NewClient(moduleName+".AccountsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -48,18 +47,25 @@ func NewAccountsClient(credential azcore.TokenCredential, options *arm.ClientOpt // - billingAccountName - The ID that uniquely identifies a billing account. // - options - AccountsClientGetOptions contains the optional parameters for the AccountsClient.Get method. func (client *AccountsClient) Get(ctx context.Context, billingAccountName string, options *AccountsClientGetOptions) (AccountsClientGetResponse, error) { + var err error + const operationName = "AccountsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, billingAccountName, options) if err != nil { return AccountsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return AccountsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AccountsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return AccountsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -102,25 +108,20 @@ func (client *AccountsClient) NewListPager(options *AccountsClientListOptions) * return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *AccountsClientListResponse) (AccountsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return AccountsClientListResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "AccountsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return AccountsClientListResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AccountsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -164,25 +165,20 @@ func (client *AccountsClient) NewListInvoiceSectionsByCreateSubscriptionPermissi return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *AccountsClientListInvoiceSectionsByCreateSubscriptionPermissionResponse) (AccountsClientListInvoiceSectionsByCreateSubscriptionPermissionResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listInvoiceSectionsByCreateSubscriptionPermissionCreateRequest(ctx, billingAccountName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return AccountsClientListInvoiceSectionsByCreateSubscriptionPermissionResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "AccountsClient.NewListInvoiceSectionsByCreateSubscriptionPermissionPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listInvoiceSectionsByCreateSubscriptionPermissionCreateRequest(ctx, billingAccountName, options) + }, nil) if err != nil { return AccountsClientListInvoiceSectionsByCreateSubscriptionPermissionResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AccountsClientListInvoiceSectionsByCreateSubscriptionPermissionResponse{}, runtime.NewResponseError(resp) - } return client.listInvoiceSectionsByCreateSubscriptionPermissionHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -227,11 +223,15 @@ func (client *AccountsClient) BeginUpdate(ctx context.Context, billingAccountNam if err != nil { return nil, err } - return runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[AccountsClientUpdateResponse]{ + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[AccountsClientUpdateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[AccountsClientUpdateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[AccountsClientUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -241,18 +241,24 @@ func (client *AccountsClient) BeginUpdate(ctx context.Context, billingAccountNam // // Generated from API version 2020-05-01 func (client *AccountsClient) update(ctx context.Context, billingAccountName string, parameters AccountUpdateRequest, options *AccountsClientBeginUpdateOptions) (*http.Response, error) { + var err error + const operationName = "AccountsClient.BeginUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, billingAccountName, parameters, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusAccepted) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // updateCreateRequest creates the Update request. @@ -270,5 +276,8 @@ func (client *AccountsClient) updateCreateRequest(ctx context.Context, billingAc reqQP.Set("api-version", "2020-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } diff --git a/sdk/resourcemanager/billing/armbilling/accounts_client_example_test.go b/sdk/resourcemanager/billing/armbilling/accounts_client_example_test.go index 60d01afb7718..8afe2b5ffef1 100644 --- a/sdk/resourcemanager/billing/armbilling/accounts_client_example_test.go +++ b/sdk/resourcemanager/billing/armbilling/accounts_client_example_test.go @@ -510,8 +510,8 @@ func ExampleAccountsClient_NewListPager_billingAccountsListWithExpandForEnrollme // Properties: &armbilling.EnrollmentAccountProperties{ // AccountName: to.Ptr("AccountName0"), // CostCenter: to.Ptr("C0"), - // EndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2019-05-31T17:32:28Z"); return t}()), - // StartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T17:32:28Z"); return t}()), + // EndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2019-05-31T17:32:28.000Z"); return t}()), + // StartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T17:32:28.000Z"); return t}()), // Status: to.Ptr("Active"), // }, // }, @@ -522,8 +522,8 @@ func ExampleAccountsClient_NewListPager_billingAccountsListWithExpandForEnrollme // Properties: &armbilling.EnrollmentAccountProperties{ // AccountName: to.Ptr("AccountName1"), // CostCenter: to.Ptr("C4"), - // EndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2019-05-31T17:32:28Z"); return t}()), - // StartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T17:32:28Z"); return t}()), + // EndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2019-05-31T17:32:28.000Z"); return t}()), + // StartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T17:32:28.000Z"); return t}()), // Status: to.Ptr("Active"), // }, // }, @@ -534,8 +534,8 @@ func ExampleAccountsClient_NewListPager_billingAccountsListWithExpandForEnrollme // Properties: &armbilling.EnrollmentAccountProperties{ // AccountName: to.Ptr("AccountName2"), // CostCenter: to.Ptr("C4"), - // EndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2019-05-31T17:32:28Z"); return t}()), - // StartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T17:32:28Z"); return t}()), + // EndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2019-05-31T17:32:28.000Z"); return t}()), + // StartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T17:32:28.000Z"); return t}()), // Status: to.Ptr("Active"), // }, // }}, @@ -544,14 +544,14 @@ func ExampleAccountsClient_NewListPager_billingAccountsListWithExpandForEnrollme // Channel: to.Ptr("EaDirect"), // CountryCode: to.Ptr("US"), // Currency: to.Ptr("USD"), - // EndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2019-05-31T17:32:28Z"); return t}()), + // EndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2019-05-31T17:32:28.000Z"); return t}()), // Policies: &armbilling.EnrollmentPolicies{ // AccountOwnerViewCharges: to.Ptr(true), // DepartmentAdminViewCharges: to.Ptr(true), // MarketplaceEnabled: to.Ptr(true), // ReservedInstancesEnabled: to.Ptr(true), // }, - // StartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T17:32:28Z"); return t}()), + // StartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T17:32:28.000Z"); return t}()), // Status: to.Ptr("Active"), // Language: to.Ptr("en"), // }, diff --git a/sdk/resourcemanager/billing/armbilling/address_client.go b/sdk/resourcemanager/billing/armbilling/address_client.go index 3c9ca8895840..8e6cbacb4d3c 100644 --- a/sdk/resourcemanager/billing/armbilling/address_client.go +++ b/sdk/resourcemanager/billing/armbilling/address_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -28,7 +27,7 @@ type AddressClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewAddressClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*AddressClient, error) { - cl, err := arm.NewClient(moduleName+".AddressClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -44,18 +43,25 @@ func NewAddressClient(credential azcore.TokenCredential, options *arm.ClientOpti // Generated from API version 2020-05-01 // - options - AddressClientValidateOptions contains the optional parameters for the AddressClient.Validate method. func (client *AddressClient) Validate(ctx context.Context, address AddressDetails, options *AddressClientValidateOptions) (AddressClientValidateResponse, error) { + var err error + const operationName = "AddressClient.Validate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.validateCreateRequest(ctx, address, options) if err != nil { return AddressClientValidateResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return AddressClientValidateResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AddressClientValidateResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return AddressClientValidateResponse{}, err } - return client.validateHandleResponse(resp) + resp, err := client.validateHandleResponse(httpResp) + return resp, err } // validateCreateRequest creates the Validate request. @@ -69,7 +75,10 @@ func (client *AddressClient) validateCreateRequest(ctx context.Context, address reqQP.Set("api-version", "2020-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, address) + if err := runtime.MarshalAsJSON(req, address); err != nil { + return nil, err + } + return req, nil } // validateHandleResponse handles the Validate response. diff --git a/sdk/resourcemanager/billing/armbilling/agreements_client.go b/sdk/resourcemanager/billing/armbilling/agreements_client.go index 6f7fe9d74694..6519a2bccd20 100644 --- a/sdk/resourcemanager/billing/armbilling/agreements_client.go +++ b/sdk/resourcemanager/billing/armbilling/agreements_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -31,7 +30,7 @@ type AgreementsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewAgreementsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*AgreementsClient, error) { - cl, err := arm.NewClient(moduleName+".AgreementsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -49,18 +48,25 @@ func NewAgreementsClient(credential azcore.TokenCredential, options *arm.ClientO // - agreementName - The ID that uniquely identifies an agreement. // - options - AgreementsClientGetOptions contains the optional parameters for the AgreementsClient.Get method. func (client *AgreementsClient) Get(ctx context.Context, billingAccountName string, agreementName string, options *AgreementsClientGetOptions) (AgreementsClientGetResponse, error) { + var err error + const operationName = "AgreementsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, billingAccountName, agreementName, options) if err != nil { return AgreementsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return AgreementsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AgreementsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return AgreementsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -109,25 +115,20 @@ func (client *AgreementsClient) NewListByBillingAccountPager(billingAccountName return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *AgreementsClientListByBillingAccountResponse) (AgreementsClientListByBillingAccountResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByBillingAccountCreateRequest(ctx, billingAccountName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "AgreementsClient.NewListByBillingAccountPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByBillingAccountCreateRequest(ctx, billingAccountName, options) + }, nil) if err != nil { return AgreementsClientListByBillingAccountResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return AgreementsClientListByBillingAccountResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AgreementsClientListByBillingAccountResponse{}, runtime.NewResponseError(resp) - } return client.listByBillingAccountHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/billing/armbilling/agreements_client_example_test.go b/sdk/resourcemanager/billing/armbilling/agreements_client_example_test.go index 412c0e075a47..c1b1ac3ddab8 100644 --- a/sdk/resourcemanager/billing/armbilling/agreements_client_example_test.go +++ b/sdk/resourcemanager/billing/armbilling/agreements_client_example_test.go @@ -49,18 +49,18 @@ func ExampleAgreementsClient_NewListByBillingAccountPager() { // AcceptanceMode: to.Ptr(armbilling.AcceptanceModeClickToAccept), // AgreementLink: to.Ptr("https://agreementuri1.com"), // Category: to.Ptr(armbilling.CategoryMicrosoftCustomerAgreement), - // EffectiveDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-12-05T00:00:00Z"); return t}()), - // ExpirationDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-12-05T00:00:00Z"); return t}()), + // EffectiveDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-12-05T00:00:00.000Z"); return t}()), + // ExpirationDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-12-05T00:00:00.000Z"); return t}()), // Participants: []*armbilling.Participants{ // { // Email: to.Ptr("abc@contoso.com"), // Status: to.Ptr("Accepted"), - // StatusDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-11-01T00:00:00Z"); return t}()), + // StatusDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-11-01T00:00:00.000Z"); return t}()), // }, // { // Email: to.Ptr("xtz@contoso.com"), // Status: to.Ptr("Declined"), - // StatusDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-11-02T00:00:00Z"); return t}()), + // StatusDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-11-02T00:00:00.000Z"); return t}()), // }}, // Status: to.Ptr("Published"), // }, @@ -73,13 +73,13 @@ func ExampleAgreementsClient_NewListByBillingAccountPager() { // AcceptanceMode: to.Ptr(armbilling.AcceptanceModeESignEmbedded), // AgreementLink: to.Ptr("https://agreementuri2.com"), // Category: to.Ptr(armbilling.CategoryMicrosoftCustomerAgreement), - // EffectiveDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-12-05T00:00:00Z"); return t}()), - // ExpirationDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-12-05T00:00:00Z"); return t}()), + // EffectiveDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-12-05T00:00:00.000Z"); return t}()), + // ExpirationDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-12-05T00:00:00.000Z"); return t}()), // Participants: []*armbilling.Participants{ // { // Email: to.Ptr("abc@contoso.com"), // Status: to.Ptr("Unknown"), - // StatusDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-11-01T00:00:00Z"); return t}()), + // StatusDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-11-01T00:00:00.000Z"); return t}()), // }}, // Status: to.Ptr("PendingSignature"), // }, @@ -114,18 +114,18 @@ func ExampleAgreementsClient_Get() { // AcceptanceMode: to.Ptr(armbilling.AcceptanceModeClickToAccept), // AgreementLink: to.Ptr("https://agreementuri1.com"), // Category: to.Ptr(armbilling.CategoryMicrosoftCustomerAgreement), - // EffectiveDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-12-05T00:00:00Z"); return t}()), - // ExpirationDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-12-05T00:00:00Z"); return t}()), + // EffectiveDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-12-05T00:00:00.000Z"); return t}()), + // ExpirationDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-12-05T00:00:00.000Z"); return t}()), // Participants: []*armbilling.Participants{ // { // Email: to.Ptr("abc@contoso.com"), // Status: to.Ptr("Accepted"), - // StatusDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-11-01T00:00:00Z"); return t}()), + // StatusDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-11-01T00:00:00.000Z"); return t}()), // }, // { // Email: to.Ptr("xyz@contoso.com"), // Status: to.Ptr("Declined"), - // StatusDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-11-02T00:00:00Z"); return t}()), + // StatusDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-11-02T00:00:00.000Z"); return t}()), // }}, // Status: to.Ptr("Published"), // }, diff --git a/sdk/resourcemanager/billing/armbilling/autorest.md b/sdk/resourcemanager/billing/armbilling/autorest.md index d7b838101ef8..692d3dc7eae8 100644 --- a/sdk/resourcemanager/billing/armbilling/autorest.md +++ b/sdk/resourcemanager/billing/armbilling/autorest.md @@ -8,5 +8,5 @@ require: - https://github.com/Azure/azure-rest-api-specs/blob/7a2ac91de424f271cf91cc8009f3fe9ee8249086/specification/billing/resource-manager/readme.md - https://github.com/Azure/azure-rest-api-specs/blob/7a2ac91de424f271cf91cc8009f3fe9ee8249086/specification/billing/resource-manager/readme.go.md license-header: MICROSOFT_MIT_NO_VERSION -module-version: 0.6.0 +module-version: 0.7.0 ``` \ No newline at end of file diff --git a/sdk/resourcemanager/billing/armbilling/availablebalances_client.go b/sdk/resourcemanager/billing/armbilling/availablebalances_client.go index de823398ce12..d8670b7efe88 100644 --- a/sdk/resourcemanager/billing/armbilling/availablebalances_client.go +++ b/sdk/resourcemanager/billing/armbilling/availablebalances_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -31,7 +30,7 @@ type AvailableBalancesClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewAvailableBalancesClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*AvailableBalancesClient, error) { - cl, err := arm.NewClient(moduleName+".AvailableBalancesClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -51,18 +50,25 @@ func NewAvailableBalancesClient(credential azcore.TokenCredential, options *arm. // - billingProfileName - The ID that uniquely identifies a billing profile. // - options - AvailableBalancesClientGetOptions contains the optional parameters for the AvailableBalancesClient.Get method. func (client *AvailableBalancesClient) Get(ctx context.Context, billingAccountName string, billingProfileName string, options *AvailableBalancesClientGetOptions) (AvailableBalancesClientGetResponse, error) { + var err error + const operationName = "AvailableBalancesClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, billingAccountName, billingProfileName, options) if err != nil { return AvailableBalancesClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return AvailableBalancesClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AvailableBalancesClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return AvailableBalancesClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. diff --git a/sdk/resourcemanager/billing/armbilling/client_factory.go b/sdk/resourcemanager/billing/armbilling/client_factory.go index 7b4af687ffbf..a5f2a01cf1ed 100644 --- a/sdk/resourcemanager/billing/armbilling/client_factory.go +++ b/sdk/resourcemanager/billing/armbilling/client_factory.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -28,7 +27,7 @@ type ClientFactory struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewClientFactory(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*ClientFactory, error) { - _, err := arm.NewClient(moduleName+".ClientFactory", moduleVersion, credential, options) + _, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -38,107 +37,128 @@ func NewClientFactory(subscriptionID string, credential azcore.TokenCredential, }, nil } +// NewAccountsClient creates a new instance of AccountsClient. func (c *ClientFactory) NewAccountsClient() *AccountsClient { subClient, _ := NewAccountsClient(c.credential, c.options) return subClient } +// NewAddressClient creates a new instance of AddressClient. func (c *ClientFactory) NewAddressClient() *AddressClient { subClient, _ := NewAddressClient(c.credential, c.options) return subClient } +// NewAgreementsClient creates a new instance of AgreementsClient. +func (c *ClientFactory) NewAgreementsClient() *AgreementsClient { + subClient, _ := NewAgreementsClient(c.credential, c.options) + return subClient +} + +// NewAvailableBalancesClient creates a new instance of AvailableBalancesClient. func (c *ClientFactory) NewAvailableBalancesClient() *AvailableBalancesClient { subClient, _ := NewAvailableBalancesClient(c.credential, c.options) return subClient } -func (c *ClientFactory) NewInstructionsClient() *InstructionsClient { - subClient, _ := NewInstructionsClient(c.credential, c.options) +// NewCustomersClient creates a new instance of CustomersClient. +func (c *ClientFactory) NewCustomersClient() *CustomersClient { + subClient, _ := NewCustomersClient(c.credential, c.options) return subClient } -func (c *ClientFactory) NewProfilesClient() *ProfilesClient { - subClient, _ := NewProfilesClient(c.credential, c.options) +// NewEnrollmentAccountsClient creates a new instance of EnrollmentAccountsClient. +func (c *ClientFactory) NewEnrollmentAccountsClient() *EnrollmentAccountsClient { + subClient, _ := NewEnrollmentAccountsClient(c.credential, c.options) return subClient } -func (c *ClientFactory) NewCustomersClient() *CustomersClient { - subClient, _ := NewCustomersClient(c.credential, c.options) +// NewInstructionsClient creates a new instance of InstructionsClient. +func (c *ClientFactory) NewInstructionsClient() *InstructionsClient { + subClient, _ := NewInstructionsClient(c.credential, c.options) return subClient } +// NewInvoiceSectionsClient creates a new instance of InvoiceSectionsClient. func (c *ClientFactory) NewInvoiceSectionsClient() *InvoiceSectionsClient { subClient, _ := NewInvoiceSectionsClient(c.credential, c.options) return subClient } -func (c *ClientFactory) NewPermissionsClient() *PermissionsClient { - subClient, _ := NewPermissionsClient(c.credential, c.options) - return subClient -} - -func (c *ClientFactory) NewSubscriptionsClient() *SubscriptionsClient { - subClient, _ := NewSubscriptionsClient(c.subscriptionID, c.credential, c.options) +// NewInvoicesClient creates a new instance of InvoicesClient. +func (c *ClientFactory) NewInvoicesClient() *InvoicesClient { + subClient, _ := NewInvoicesClient(c.subscriptionID, c.credential, c.options) return subClient } -func (c *ClientFactory) NewProductsClient() *ProductsClient { - subClient, _ := NewProductsClient(c.credential, c.options) +// NewOperationsClient creates a new instance of OperationsClient. +func (c *ClientFactory) NewOperationsClient() *OperationsClient { + subClient, _ := NewOperationsClient(c.credential, c.options) return subClient } -func (c *ClientFactory) NewInvoicesClient() *InvoicesClient { - subClient, _ := NewInvoicesClient(c.subscriptionID, c.credential, c.options) +// NewPeriodsClient creates a new instance of PeriodsClient. +func (c *ClientFactory) NewPeriodsClient() *PeriodsClient { + subClient, _ := NewPeriodsClient(c.subscriptionID, c.credential, c.options) return subClient } -func (c *ClientFactory) NewTransactionsClient() *TransactionsClient { - subClient, _ := NewTransactionsClient(c.credential, c.options) +// NewPermissionsClient creates a new instance of PermissionsClient. +func (c *ClientFactory) NewPermissionsClient() *PermissionsClient { + subClient, _ := NewPermissionsClient(c.credential, c.options) return subClient } +// NewPoliciesClient creates a new instance of PoliciesClient. func (c *ClientFactory) NewPoliciesClient() *PoliciesClient { subClient, _ := NewPoliciesClient(c.credential, c.options) return subClient } -func (c *ClientFactory) NewPropertyClient() *PropertyClient { - subClient, _ := NewPropertyClient(c.subscriptionID, c.credential, c.options) +// NewProductsClient creates a new instance of ProductsClient. +func (c *ClientFactory) NewProductsClient() *ProductsClient { + subClient, _ := NewProductsClient(c.credential, c.options) return subClient } -func (c *ClientFactory) NewRoleDefinitionsClient() *RoleDefinitionsClient { - subClient, _ := NewRoleDefinitionsClient(c.credential, c.options) +// NewProfilesClient creates a new instance of ProfilesClient. +func (c *ClientFactory) NewProfilesClient() *ProfilesClient { + subClient, _ := NewProfilesClient(c.credential, c.options) return subClient } -func (c *ClientFactory) NewRoleAssignmentsClient() *RoleAssignmentsClient { - subClient, _ := NewRoleAssignmentsClient(c.credential, c.options) +// NewPropertyClient creates a new instance of PropertyClient. +func (c *ClientFactory) NewPropertyClient() *PropertyClient { + subClient, _ := NewPropertyClient(c.subscriptionID, c.credential, c.options) return subClient } -func (c *ClientFactory) NewAgreementsClient() *AgreementsClient { - subClient, _ := NewAgreementsClient(c.credential, c.options) +// NewReservationsClient creates a new instance of ReservationsClient. +func (c *ClientFactory) NewReservationsClient() *ReservationsClient { + subClient, _ := NewReservationsClient(c.credential, c.options) return subClient } -func (c *ClientFactory) NewReservationsClient() *ReservationsClient { - subClient, _ := NewReservationsClient(c.credential, c.options) +// NewRoleAssignmentsClient creates a new instance of RoleAssignmentsClient. +func (c *ClientFactory) NewRoleAssignmentsClient() *RoleAssignmentsClient { + subClient, _ := NewRoleAssignmentsClient(c.credential, c.options) return subClient } -func (c *ClientFactory) NewEnrollmentAccountsClient() *EnrollmentAccountsClient { - subClient, _ := NewEnrollmentAccountsClient(c.credential, c.options) +// NewRoleDefinitionsClient creates a new instance of RoleDefinitionsClient. +func (c *ClientFactory) NewRoleDefinitionsClient() *RoleDefinitionsClient { + subClient, _ := NewRoleDefinitionsClient(c.credential, c.options) return subClient } -func (c *ClientFactory) NewPeriodsClient() *PeriodsClient { - subClient, _ := NewPeriodsClient(c.subscriptionID, c.credential, c.options) +// NewSubscriptionsClient creates a new instance of SubscriptionsClient. +func (c *ClientFactory) NewSubscriptionsClient() *SubscriptionsClient { + subClient, _ := NewSubscriptionsClient(c.subscriptionID, c.credential, c.options) return subClient } -func (c *ClientFactory) NewOperationsClient() *OperationsClient { - subClient, _ := NewOperationsClient(c.credential, c.options) +// NewTransactionsClient creates a new instance of TransactionsClient. +func (c *ClientFactory) NewTransactionsClient() *TransactionsClient { + subClient, _ := NewTransactionsClient(c.credential, c.options) return subClient } diff --git a/sdk/resourcemanager/billing/armbilling/constants.go b/sdk/resourcemanager/billing/armbilling/constants.go index a175f1eb9460..bf4941a4b8e7 100644 --- a/sdk/resourcemanager/billing/armbilling/constants.go +++ b/sdk/resourcemanager/billing/armbilling/constants.go @@ -3,15 +3,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling const ( - moduleName = "armbilling" - moduleVersion = "v0.6.0" + moduleName = "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling" + moduleVersion = "v0.7.0" ) // AcceptanceMode - The mode of acceptance for an agreement. diff --git a/sdk/resourcemanager/billing/armbilling/customers_client.go b/sdk/resourcemanager/billing/armbilling/customers_client.go index 3d818f032381..2db25d5e96e5 100644 --- a/sdk/resourcemanager/billing/armbilling/customers_client.go +++ b/sdk/resourcemanager/billing/armbilling/customers_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -31,7 +30,7 @@ type CustomersClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewCustomersClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*CustomersClient, error) { - cl, err := arm.NewClient(moduleName+".CustomersClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -50,18 +49,25 @@ func NewCustomersClient(credential azcore.TokenCredential, options *arm.ClientOp // - customerName - The ID that uniquely identifies a customer. // - options - CustomersClientGetOptions contains the optional parameters for the CustomersClient.Get method. func (client *CustomersClient) Get(ctx context.Context, billingAccountName string, customerName string, options *CustomersClientGetOptions) (CustomersClientGetResponse, error) { + var err error + const operationName = "CustomersClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, billingAccountName, customerName, options) if err != nil { return CustomersClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return CustomersClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return CustomersClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return CustomersClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -111,25 +117,20 @@ func (client *CustomersClient) NewListByBillingAccountPager(billingAccountName s return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *CustomersClientListByBillingAccountResponse) (CustomersClientListByBillingAccountResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByBillingAccountCreateRequest(ctx, billingAccountName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "CustomersClient.NewListByBillingAccountPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByBillingAccountCreateRequest(ctx, billingAccountName, options) + }, nil) if err != nil { return CustomersClientListByBillingAccountResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return CustomersClientListByBillingAccountResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return CustomersClientListByBillingAccountResponse{}, runtime.NewResponseError(resp) - } return client.listByBillingAccountHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -180,25 +181,20 @@ func (client *CustomersClient) NewListByBillingProfilePager(billingAccountName s return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *CustomersClientListByBillingProfileResponse) (CustomersClientListByBillingProfileResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "CustomersClient.NewListByBillingProfilePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, options) + }, nil) if err != nil { return CustomersClientListByBillingProfileResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return CustomersClientListByBillingProfileResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return CustomersClientListByBillingProfileResponse{}, runtime.NewResponseError(resp) - } return client.listByBillingProfileHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/billing/armbilling/date_type.go b/sdk/resourcemanager/billing/armbilling/date_type.go index 4bf97ced401b..1cb512363a8c 100644 --- a/sdk/resourcemanager/billing/armbilling/date_type.go +++ b/sdk/resourcemanager/billing/armbilling/date_type.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling diff --git a/sdk/resourcemanager/billing/armbilling/enrollmentaccounts_client.go b/sdk/resourcemanager/billing/armbilling/enrollmentaccounts_client.go index 33b2e0d6a3f2..d406cad4c59e 100644 --- a/sdk/resourcemanager/billing/armbilling/enrollmentaccounts_client.go +++ b/sdk/resourcemanager/billing/armbilling/enrollmentaccounts_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -31,7 +30,7 @@ type EnrollmentAccountsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewEnrollmentAccountsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*EnrollmentAccountsClient, error) { - cl, err := arm.NewClient(moduleName+".EnrollmentAccountsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -48,18 +47,25 @@ func NewEnrollmentAccountsClient(credential azcore.TokenCredential, options *arm // - name - Enrollment Account name. // - options - EnrollmentAccountsClientGetOptions contains the optional parameters for the EnrollmentAccountsClient.Get method. func (client *EnrollmentAccountsClient) Get(ctx context.Context, name string, options *EnrollmentAccountsClientGetOptions) (EnrollmentAccountsClientGetResponse, error) { + var err error + const operationName = "EnrollmentAccountsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, name, options) if err != nil { return EnrollmentAccountsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return EnrollmentAccountsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return EnrollmentAccountsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return EnrollmentAccountsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -100,25 +106,20 @@ func (client *EnrollmentAccountsClient) NewListPager(options *EnrollmentAccounts return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *EnrollmentAccountsClientListResponse) (EnrollmentAccountsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "EnrollmentAccountsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return EnrollmentAccountsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return EnrollmentAccountsClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return EnrollmentAccountsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/billing/armbilling/fake/accounts_server.go b/sdk/resourcemanager/billing/armbilling/fake/accounts_server.go new file mode 100644 index 000000000000..c08be7454913 --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/accounts_server.go @@ -0,0 +1,255 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling" + "net/http" + "net/url" + "regexp" +) + +// AccountsServer is a fake server for instances of the armbilling.AccountsClient type. +type AccountsServer struct { + // Get is the fake for method AccountsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, billingAccountName string, options *armbilling.AccountsClientGetOptions) (resp azfake.Responder[armbilling.AccountsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method AccountsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armbilling.AccountsClientListOptions) (resp azfake.PagerResponder[armbilling.AccountsClientListResponse]) + + // NewListInvoiceSectionsByCreateSubscriptionPermissionPager is the fake for method AccountsClient.NewListInvoiceSectionsByCreateSubscriptionPermissionPager + // HTTP status codes to indicate success: http.StatusOK + NewListInvoiceSectionsByCreateSubscriptionPermissionPager func(billingAccountName string, options *armbilling.AccountsClientListInvoiceSectionsByCreateSubscriptionPermissionOptions) (resp azfake.PagerResponder[armbilling.AccountsClientListInvoiceSectionsByCreateSubscriptionPermissionResponse]) + + // BeginUpdate is the fake for method AccountsClient.BeginUpdate + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginUpdate func(ctx context.Context, billingAccountName string, parameters armbilling.AccountUpdateRequest, options *armbilling.AccountsClientBeginUpdateOptions) (resp azfake.PollerResponder[armbilling.AccountsClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewAccountsServerTransport creates a new instance of AccountsServerTransport with the provided implementation. +// The returned AccountsServerTransport instance is connected to an instance of armbilling.AccountsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewAccountsServerTransport(srv *AccountsServer) *AccountsServerTransport { + return &AccountsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armbilling.AccountsClientListResponse]](), + newListInvoiceSectionsByCreateSubscriptionPermissionPager: newTracker[azfake.PagerResponder[armbilling.AccountsClientListInvoiceSectionsByCreateSubscriptionPermissionResponse]](), + beginUpdate: newTracker[azfake.PollerResponder[armbilling.AccountsClientUpdateResponse]](), + } +} + +// AccountsServerTransport connects instances of armbilling.AccountsClient to instances of AccountsServer. +// Don't use this type directly, use NewAccountsServerTransport instead. +type AccountsServerTransport struct { + srv *AccountsServer + newListPager *tracker[azfake.PagerResponder[armbilling.AccountsClientListResponse]] + newListInvoiceSectionsByCreateSubscriptionPermissionPager *tracker[azfake.PagerResponder[armbilling.AccountsClientListInvoiceSectionsByCreateSubscriptionPermissionResponse]] + beginUpdate *tracker[azfake.PollerResponder[armbilling.AccountsClientUpdateResponse]] +} + +// Do implements the policy.Transporter interface for AccountsServerTransport. +func (a *AccountsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "AccountsClient.Get": + resp, err = a.dispatchGet(req) + case "AccountsClient.NewListPager": + resp, err = a.dispatchNewListPager(req) + case "AccountsClient.NewListInvoiceSectionsByCreateSubscriptionPermissionPager": + resp, err = a.dispatchNewListInvoiceSectionsByCreateSubscriptionPermissionPager(req) + case "AccountsClient.BeginUpdate": + resp, err = a.dispatchBeginUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (a *AccountsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if a.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + expandUnescaped, err := url.QueryUnescape(qp.Get("$expand")) + if err != nil { + return nil, err + } + expandParam := getOptional(expandUnescaped) + var options *armbilling.AccountsClientGetOptions + if expandParam != nil { + options = &armbilling.AccountsClientGetOptions{ + Expand: expandParam, + } + } + respr, errRespr := a.srv.Get(req.Context(), billingAccountNameParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Account, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (a *AccountsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if a.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := a.newListPager.get(req) + if newListPager == nil { + qp := req.URL.Query() + expandUnescaped, err := url.QueryUnescape(qp.Get("$expand")) + if err != nil { + return nil, err + } + expandParam := getOptional(expandUnescaped) + var options *armbilling.AccountsClientListOptions + if expandParam != nil { + options = &armbilling.AccountsClientListOptions{ + Expand: expandParam, + } + } + resp := a.srv.NewListPager(options) + newListPager = &resp + a.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armbilling.AccountsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + a.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + a.newListPager.remove(req) + } + return resp, nil +} + +func (a *AccountsServerTransport) dispatchNewListInvoiceSectionsByCreateSubscriptionPermissionPager(req *http.Request) (*http.Response, error) { + if a.srv.NewListInvoiceSectionsByCreateSubscriptionPermissionPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListInvoiceSectionsByCreateSubscriptionPermissionPager not implemented")} + } + newListInvoiceSectionsByCreateSubscriptionPermissionPager := a.newListInvoiceSectionsByCreateSubscriptionPermissionPager.get(req) + if newListInvoiceSectionsByCreateSubscriptionPermissionPager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/listInvoiceSectionsWithCreateSubscriptionPermission` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + resp := a.srv.NewListInvoiceSectionsByCreateSubscriptionPermissionPager(billingAccountNameParam, nil) + newListInvoiceSectionsByCreateSubscriptionPermissionPager = &resp + a.newListInvoiceSectionsByCreateSubscriptionPermissionPager.add(req, newListInvoiceSectionsByCreateSubscriptionPermissionPager) + server.PagerResponderInjectNextLinks(newListInvoiceSectionsByCreateSubscriptionPermissionPager, req, func(page *armbilling.AccountsClientListInvoiceSectionsByCreateSubscriptionPermissionResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListInvoiceSectionsByCreateSubscriptionPermissionPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + a.newListInvoiceSectionsByCreateSubscriptionPermissionPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListInvoiceSectionsByCreateSubscriptionPermissionPager) { + a.newListInvoiceSectionsByCreateSubscriptionPermissionPager.remove(req) + } + return resp, nil +} + +func (a *AccountsServerTransport) dispatchBeginUpdate(req *http.Request) (*http.Response, error) { + if a.srv.BeginUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginUpdate not implemented")} + } + beginUpdate := a.beginUpdate.get(req) + if beginUpdate == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbilling.AccountUpdateRequest](req) + if err != nil { + return nil, err + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.BeginUpdate(req.Context(), billingAccountNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginUpdate = &respr + a.beginUpdate.add(req, beginUpdate) + } + + resp, err := server.PollerResponderNext(beginUpdate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + a.beginUpdate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginUpdate) { + a.beginUpdate.remove(req) + } + + return resp, nil +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/address_server.go b/sdk/resourcemanager/billing/armbilling/fake/address_server.go new file mode 100644 index 000000000000..268f6abe642e --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/address_server.go @@ -0,0 +1,88 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling" + "net/http" +) + +// AddressServer is a fake server for instances of the armbilling.AddressClient type. +type AddressServer struct { + // Validate is the fake for method AddressClient.Validate + // HTTP status codes to indicate success: http.StatusOK + Validate func(ctx context.Context, address armbilling.AddressDetails, options *armbilling.AddressClientValidateOptions) (resp azfake.Responder[armbilling.AddressClientValidateResponse], errResp azfake.ErrorResponder) +} + +// NewAddressServerTransport creates a new instance of AddressServerTransport with the provided implementation. +// The returned AddressServerTransport instance is connected to an instance of armbilling.AddressClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewAddressServerTransport(srv *AddressServer) *AddressServerTransport { + return &AddressServerTransport{srv: srv} +} + +// AddressServerTransport connects instances of armbilling.AddressClient to instances of AddressServer. +// Don't use this type directly, use NewAddressServerTransport instead. +type AddressServerTransport struct { + srv *AddressServer +} + +// Do implements the policy.Transporter interface for AddressServerTransport. +func (a *AddressServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "AddressClient.Validate": + resp, err = a.dispatchValidate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (a *AddressServerTransport) dispatchValidate(req *http.Request) (*http.Response, error) { + if a.srv.Validate == nil { + return nil, &nonRetriableError{errors.New("fake for method Validate not implemented")} + } + body, err := server.UnmarshalRequestAsJSON[armbilling.AddressDetails](req) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.Validate(req.Context(), body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ValidateAddressResponse, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/agreements_server.go b/sdk/resourcemanager/billing/armbilling/fake/agreements_server.go new file mode 100644 index 000000000000..c71f1f5e92a1 --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/agreements_server.go @@ -0,0 +1,172 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling" + "net/http" + "net/url" + "regexp" +) + +// AgreementsServer is a fake server for instances of the armbilling.AgreementsClient type. +type AgreementsServer struct { + // Get is the fake for method AgreementsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, billingAccountName string, agreementName string, options *armbilling.AgreementsClientGetOptions) (resp azfake.Responder[armbilling.AgreementsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByBillingAccountPager is the fake for method AgreementsClient.NewListByBillingAccountPager + // HTTP status codes to indicate success: http.StatusOK + NewListByBillingAccountPager func(billingAccountName string, options *armbilling.AgreementsClientListByBillingAccountOptions) (resp azfake.PagerResponder[armbilling.AgreementsClientListByBillingAccountResponse]) +} + +// NewAgreementsServerTransport creates a new instance of AgreementsServerTransport with the provided implementation. +// The returned AgreementsServerTransport instance is connected to an instance of armbilling.AgreementsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewAgreementsServerTransport(srv *AgreementsServer) *AgreementsServerTransport { + return &AgreementsServerTransport{ + srv: srv, + newListByBillingAccountPager: newTracker[azfake.PagerResponder[armbilling.AgreementsClientListByBillingAccountResponse]](), + } +} + +// AgreementsServerTransport connects instances of armbilling.AgreementsClient to instances of AgreementsServer. +// Don't use this type directly, use NewAgreementsServerTransport instead. +type AgreementsServerTransport struct { + srv *AgreementsServer + newListByBillingAccountPager *tracker[azfake.PagerResponder[armbilling.AgreementsClientListByBillingAccountResponse]] +} + +// Do implements the policy.Transporter interface for AgreementsServerTransport. +func (a *AgreementsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "AgreementsClient.Get": + resp, err = a.dispatchGet(req) + case "AgreementsClient.NewListByBillingAccountPager": + resp, err = a.dispatchNewListByBillingAccountPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (a *AgreementsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if a.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/agreements/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + agreementNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("agreementName")]) + if err != nil { + return nil, err + } + expandUnescaped, err := url.QueryUnescape(qp.Get("$expand")) + if err != nil { + return nil, err + } + expandParam := getOptional(expandUnescaped) + var options *armbilling.AgreementsClientGetOptions + if expandParam != nil { + options = &armbilling.AgreementsClientGetOptions{ + Expand: expandParam, + } + } + respr, errRespr := a.srv.Get(req.Context(), billingAccountNameParam, agreementNameParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Agreement, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (a *AgreementsServerTransport) dispatchNewListByBillingAccountPager(req *http.Request) (*http.Response, error) { + if a.srv.NewListByBillingAccountPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByBillingAccountPager not implemented")} + } + newListByBillingAccountPager := a.newListByBillingAccountPager.get(req) + if newListByBillingAccountPager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/agreements` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + expandUnescaped, err := url.QueryUnescape(qp.Get("$expand")) + if err != nil { + return nil, err + } + expandParam := getOptional(expandUnescaped) + var options *armbilling.AgreementsClientListByBillingAccountOptions + if expandParam != nil { + options = &armbilling.AgreementsClientListByBillingAccountOptions{ + Expand: expandParam, + } + } + resp := a.srv.NewListByBillingAccountPager(billingAccountNameParam, options) + newListByBillingAccountPager = &resp + a.newListByBillingAccountPager.add(req, newListByBillingAccountPager) + server.PagerResponderInjectNextLinks(newListByBillingAccountPager, req, func(page *armbilling.AgreementsClientListByBillingAccountResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByBillingAccountPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + a.newListByBillingAccountPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByBillingAccountPager) { + a.newListByBillingAccountPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/availablebalances_server.go b/sdk/resourcemanager/billing/armbilling/fake/availablebalances_server.go new file mode 100644 index 000000000000..a71cd0ba437e --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/availablebalances_server.go @@ -0,0 +1,100 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling" + "net/http" + "net/url" + "regexp" +) + +// AvailableBalancesServer is a fake server for instances of the armbilling.AvailableBalancesClient type. +type AvailableBalancesServer struct { + // Get is the fake for method AvailableBalancesClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, billingAccountName string, billingProfileName string, options *armbilling.AvailableBalancesClientGetOptions) (resp azfake.Responder[armbilling.AvailableBalancesClientGetResponse], errResp azfake.ErrorResponder) +} + +// NewAvailableBalancesServerTransport creates a new instance of AvailableBalancesServerTransport with the provided implementation. +// The returned AvailableBalancesServerTransport instance is connected to an instance of armbilling.AvailableBalancesClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewAvailableBalancesServerTransport(srv *AvailableBalancesServer) *AvailableBalancesServerTransport { + return &AvailableBalancesServerTransport{srv: srv} +} + +// AvailableBalancesServerTransport connects instances of armbilling.AvailableBalancesClient to instances of AvailableBalancesServer. +// Don't use this type directly, use NewAvailableBalancesServerTransport instead. +type AvailableBalancesServerTransport struct { + srv *AvailableBalancesServer +} + +// Do implements the policy.Transporter interface for AvailableBalancesServerTransport. +func (a *AvailableBalancesServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "AvailableBalancesClient.Get": + resp, err = a.dispatchGet(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (a *AvailableBalancesServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if a.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/availableBalance/default` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.Get(req.Context(), billingAccountNameParam, billingProfileNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).AvailableBalance, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/customers_server.go b/sdk/resourcemanager/billing/armbilling/fake/customers_server.go new file mode 100644 index 000000000000..20d380672e75 --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/customers_server.go @@ -0,0 +1,245 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling" + "net/http" + "net/url" + "regexp" +) + +// CustomersServer is a fake server for instances of the armbilling.CustomersClient type. +type CustomersServer struct { + // Get is the fake for method CustomersClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, billingAccountName string, customerName string, options *armbilling.CustomersClientGetOptions) (resp azfake.Responder[armbilling.CustomersClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByBillingAccountPager is the fake for method CustomersClient.NewListByBillingAccountPager + // HTTP status codes to indicate success: http.StatusOK + NewListByBillingAccountPager func(billingAccountName string, options *armbilling.CustomersClientListByBillingAccountOptions) (resp azfake.PagerResponder[armbilling.CustomersClientListByBillingAccountResponse]) + + // NewListByBillingProfilePager is the fake for method CustomersClient.NewListByBillingProfilePager + // HTTP status codes to indicate success: http.StatusOK + NewListByBillingProfilePager func(billingAccountName string, billingProfileName string, options *armbilling.CustomersClientListByBillingProfileOptions) (resp azfake.PagerResponder[armbilling.CustomersClientListByBillingProfileResponse]) +} + +// NewCustomersServerTransport creates a new instance of CustomersServerTransport with the provided implementation. +// The returned CustomersServerTransport instance is connected to an instance of armbilling.CustomersClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewCustomersServerTransport(srv *CustomersServer) *CustomersServerTransport { + return &CustomersServerTransport{ + srv: srv, + newListByBillingAccountPager: newTracker[azfake.PagerResponder[armbilling.CustomersClientListByBillingAccountResponse]](), + newListByBillingProfilePager: newTracker[azfake.PagerResponder[armbilling.CustomersClientListByBillingProfileResponse]](), + } +} + +// CustomersServerTransport connects instances of armbilling.CustomersClient to instances of CustomersServer. +// Don't use this type directly, use NewCustomersServerTransport instead. +type CustomersServerTransport struct { + srv *CustomersServer + newListByBillingAccountPager *tracker[azfake.PagerResponder[armbilling.CustomersClientListByBillingAccountResponse]] + newListByBillingProfilePager *tracker[azfake.PagerResponder[armbilling.CustomersClientListByBillingProfileResponse]] +} + +// Do implements the policy.Transporter interface for CustomersServerTransport. +func (c *CustomersServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "CustomersClient.Get": + resp, err = c.dispatchGet(req) + case "CustomersClient.NewListByBillingAccountPager": + resp, err = c.dispatchNewListByBillingAccountPager(req) + case "CustomersClient.NewListByBillingProfilePager": + resp, err = c.dispatchNewListByBillingProfilePager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (c *CustomersServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if c.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/customers/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + customerNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("customerName")]) + if err != nil { + return nil, err + } + expandUnescaped, err := url.QueryUnescape(qp.Get("$expand")) + if err != nil { + return nil, err + } + expandParam := getOptional(expandUnescaped) + var options *armbilling.CustomersClientGetOptions + if expandParam != nil { + options = &armbilling.CustomersClientGetOptions{ + Expand: expandParam, + } + } + respr, errRespr := c.srv.Get(req.Context(), billingAccountNameParam, customerNameParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Customer, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *CustomersServerTransport) dispatchNewListByBillingAccountPager(req *http.Request) (*http.Response, error) { + if c.srv.NewListByBillingAccountPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByBillingAccountPager not implemented")} + } + newListByBillingAccountPager := c.newListByBillingAccountPager.get(req) + if newListByBillingAccountPager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/customers` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + searchUnescaped, err := url.QueryUnescape(qp.Get("$search")) + if err != nil { + return nil, err + } + searchParam := getOptional(searchUnescaped) + filterUnescaped, err := url.QueryUnescape(qp.Get("$filter")) + if err != nil { + return nil, err + } + filterParam := getOptional(filterUnescaped) + var options *armbilling.CustomersClientListByBillingAccountOptions + if searchParam != nil || filterParam != nil { + options = &armbilling.CustomersClientListByBillingAccountOptions{ + Search: searchParam, + Filter: filterParam, + } + } + resp := c.srv.NewListByBillingAccountPager(billingAccountNameParam, options) + newListByBillingAccountPager = &resp + c.newListByBillingAccountPager.add(req, newListByBillingAccountPager) + server.PagerResponderInjectNextLinks(newListByBillingAccountPager, req, func(page *armbilling.CustomersClientListByBillingAccountResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByBillingAccountPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + c.newListByBillingAccountPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByBillingAccountPager) { + c.newListByBillingAccountPager.remove(req) + } + return resp, nil +} + +func (c *CustomersServerTransport) dispatchNewListByBillingProfilePager(req *http.Request) (*http.Response, error) { + if c.srv.NewListByBillingProfilePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByBillingProfilePager not implemented")} + } + newListByBillingProfilePager := c.newListByBillingProfilePager.get(req) + if newListByBillingProfilePager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/customers` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + searchUnescaped, err := url.QueryUnescape(qp.Get("$search")) + if err != nil { + return nil, err + } + searchParam := getOptional(searchUnescaped) + filterUnescaped, err := url.QueryUnescape(qp.Get("$filter")) + if err != nil { + return nil, err + } + filterParam := getOptional(filterUnescaped) + var options *armbilling.CustomersClientListByBillingProfileOptions + if searchParam != nil || filterParam != nil { + options = &armbilling.CustomersClientListByBillingProfileOptions{ + Search: searchParam, + Filter: filterParam, + } + } + resp := c.srv.NewListByBillingProfilePager(billingAccountNameParam, billingProfileNameParam, options) + newListByBillingProfilePager = &resp + c.newListByBillingProfilePager.add(req, newListByBillingProfilePager) + server.PagerResponderInjectNextLinks(newListByBillingProfilePager, req, func(page *armbilling.CustomersClientListByBillingProfileResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByBillingProfilePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + c.newListByBillingProfilePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByBillingProfilePager) { + c.newListByBillingProfilePager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/date_type.go b/sdk/resourcemanager/billing/armbilling/fake/date_type.go new file mode 100644 index 000000000000..efb0b705ae45 --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/date_type.go @@ -0,0 +1,59 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "encoding/json" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "reflect" + "strings" + "time" +) + +const ( + fullDateJSON = `"2006-01-02"` + jsonFormat = `"%04d-%02d-%02d"` +) + +type dateType time.Time + +func (t dateType) MarshalJSON() ([]byte, error) { + return []byte(fmt.Sprintf(jsonFormat, time.Time(t).Year(), time.Time(t).Month(), time.Time(t).Day())), nil +} + +func (d *dateType) UnmarshalJSON(data []byte) (err error) { + t, err := time.Parse(fullDateJSON, string(data)) + *d = (dateType)(t) + return err +} + +func populateDateType(m map[string]any, k string, t *time.Time) { + if t == nil { + return + } else if azcore.IsNullValue(t) { + m[k] = nil + return + } else if reflect.ValueOf(t).IsNil() { + return + } + m[k] = (*dateType)(t) +} + +func unpopulateDateType(data json.RawMessage, fn string, t **time.Time) error { + if data == nil || strings.EqualFold(string(data), "null") { + return nil + } + var aux dateType + if err := json.Unmarshal(data, &aux); err != nil { + return fmt.Errorf("struct field %s: %v", fn, err) + } + *t = (*time.Time)(&aux) + return nil +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/enrollmentaccounts_server.go b/sdk/resourcemanager/billing/armbilling/fake/enrollmentaccounts_server.go new file mode 100644 index 000000000000..e7fc13474017 --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/enrollmentaccounts_server.go @@ -0,0 +1,134 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling" + "net/http" + "net/url" + "regexp" +) + +// EnrollmentAccountsServer is a fake server for instances of the armbilling.EnrollmentAccountsClient type. +type EnrollmentAccountsServer struct { + // Get is the fake for method EnrollmentAccountsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, name string, options *armbilling.EnrollmentAccountsClientGetOptions) (resp azfake.Responder[armbilling.EnrollmentAccountsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method EnrollmentAccountsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armbilling.EnrollmentAccountsClientListOptions) (resp azfake.PagerResponder[armbilling.EnrollmentAccountsClientListResponse]) +} + +// NewEnrollmentAccountsServerTransport creates a new instance of EnrollmentAccountsServerTransport with the provided implementation. +// The returned EnrollmentAccountsServerTransport instance is connected to an instance of armbilling.EnrollmentAccountsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewEnrollmentAccountsServerTransport(srv *EnrollmentAccountsServer) *EnrollmentAccountsServerTransport { + return &EnrollmentAccountsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armbilling.EnrollmentAccountsClientListResponse]](), + } +} + +// EnrollmentAccountsServerTransport connects instances of armbilling.EnrollmentAccountsClient to instances of EnrollmentAccountsServer. +// Don't use this type directly, use NewEnrollmentAccountsServerTransport instead. +type EnrollmentAccountsServerTransport struct { + srv *EnrollmentAccountsServer + newListPager *tracker[azfake.PagerResponder[armbilling.EnrollmentAccountsClientListResponse]] +} + +// Do implements the policy.Transporter interface for EnrollmentAccountsServerTransport. +func (e *EnrollmentAccountsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "EnrollmentAccountsClient.Get": + resp, err = e.dispatchGet(req) + case "EnrollmentAccountsClient.NewListPager": + resp, err = e.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (e *EnrollmentAccountsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if e.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/enrollmentAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + nameParam, err := url.PathUnescape(matches[regex.SubexpIndex("name")]) + if err != nil { + return nil, err + } + respr, errRespr := e.srv.Get(req.Context(), nameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).EnrollmentAccountSummary, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (e *EnrollmentAccountsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if e.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := e.newListPager.get(req) + if newListPager == nil { + resp := e.srv.NewListPager(nil) + newListPager = &resp + e.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armbilling.EnrollmentAccountsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + e.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + e.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/instructions_server.go b/sdk/resourcemanager/billing/armbilling/fake/instructions_server.go new file mode 100644 index 000000000000..7d6d03a9b6e7 --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/instructions_server.go @@ -0,0 +1,203 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling" + "net/http" + "net/url" + "regexp" +) + +// InstructionsServer is a fake server for instances of the armbilling.InstructionsClient type. +type InstructionsServer struct { + // Get is the fake for method InstructionsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, billingAccountName string, billingProfileName string, instructionName string, options *armbilling.InstructionsClientGetOptions) (resp azfake.Responder[armbilling.InstructionsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByBillingProfilePager is the fake for method InstructionsClient.NewListByBillingProfilePager + // HTTP status codes to indicate success: http.StatusOK + NewListByBillingProfilePager func(billingAccountName string, billingProfileName string, options *armbilling.InstructionsClientListByBillingProfileOptions) (resp azfake.PagerResponder[armbilling.InstructionsClientListByBillingProfileResponse]) + + // Put is the fake for method InstructionsClient.Put + // HTTP status codes to indicate success: http.StatusOK + Put func(ctx context.Context, billingAccountName string, billingProfileName string, instructionName string, parameters armbilling.Instruction, options *armbilling.InstructionsClientPutOptions) (resp azfake.Responder[armbilling.InstructionsClientPutResponse], errResp azfake.ErrorResponder) +} + +// NewInstructionsServerTransport creates a new instance of InstructionsServerTransport with the provided implementation. +// The returned InstructionsServerTransport instance is connected to an instance of armbilling.InstructionsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewInstructionsServerTransport(srv *InstructionsServer) *InstructionsServerTransport { + return &InstructionsServerTransport{ + srv: srv, + newListByBillingProfilePager: newTracker[azfake.PagerResponder[armbilling.InstructionsClientListByBillingProfileResponse]](), + } +} + +// InstructionsServerTransport connects instances of armbilling.InstructionsClient to instances of InstructionsServer. +// Don't use this type directly, use NewInstructionsServerTransport instead. +type InstructionsServerTransport struct { + srv *InstructionsServer + newListByBillingProfilePager *tracker[azfake.PagerResponder[armbilling.InstructionsClientListByBillingProfileResponse]] +} + +// Do implements the policy.Transporter interface for InstructionsServerTransport. +func (i *InstructionsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "InstructionsClient.Get": + resp, err = i.dispatchGet(req) + case "InstructionsClient.NewListByBillingProfilePager": + resp, err = i.dispatchNewListByBillingProfilePager(req) + case "InstructionsClient.Put": + resp, err = i.dispatchPut(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (i *InstructionsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if i.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/instructions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + instructionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("instructionName")]) + if err != nil { + return nil, err + } + respr, errRespr := i.srv.Get(req.Context(), billingAccountNameParam, billingProfileNameParam, instructionNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Instruction, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (i *InstructionsServerTransport) dispatchNewListByBillingProfilePager(req *http.Request) (*http.Response, error) { + if i.srv.NewListByBillingProfilePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByBillingProfilePager not implemented")} + } + newListByBillingProfilePager := i.newListByBillingProfilePager.get(req) + if newListByBillingProfilePager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/instructions` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + resp := i.srv.NewListByBillingProfilePager(billingAccountNameParam, billingProfileNameParam, nil) + newListByBillingProfilePager = &resp + i.newListByBillingProfilePager.add(req, newListByBillingProfilePager) + server.PagerResponderInjectNextLinks(newListByBillingProfilePager, req, func(page *armbilling.InstructionsClientListByBillingProfileResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByBillingProfilePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + i.newListByBillingProfilePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByBillingProfilePager) { + i.newListByBillingProfilePager.remove(req) + } + return resp, nil +} + +func (i *InstructionsServerTransport) dispatchPut(req *http.Request) (*http.Response, error) { + if i.srv.Put == nil { + return nil, &nonRetriableError{errors.New("fake for method Put not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/instructions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbilling.Instruction](req) + if err != nil { + return nil, err + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + instructionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("instructionName")]) + if err != nil { + return nil, err + } + respr, errRespr := i.srv.Put(req.Context(), billingAccountNameParam, billingProfileNameParam, instructionNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Instruction, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/internal.go b/sdk/resourcemanager/billing/armbilling/fake/internal.go new file mode 100644 index 000000000000..7d2f89ba4bb2 --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/internal.go @@ -0,0 +1,83 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "net/http" + "reflect" + "sync" +) + +type nonRetriableError struct { + error +} + +func (nonRetriableError) NonRetriable() { + // marker method +} + +func contains[T comparable](s []T, v T) bool { + for _, vv := range s { + if vv == v { + return true + } + } + return false +} + +func getOptional[T any](v T) *T { + if reflect.ValueOf(v).IsZero() { + return nil + } + return &v +} + +func parseOptional[T any](v string, parse func(v string) (T, error)) (*T, error) { + if v == "" { + return nil, nil + } + t, err := parse(v) + if err != nil { + return nil, err + } + return &t, err +} + +func newTracker[T any]() *tracker[T] { + return &tracker[T]{ + items: map[string]*T{}, + } +} + +type tracker[T any] struct { + items map[string]*T + mu sync.Mutex +} + +func (p *tracker[T]) get(req *http.Request) *T { + p.mu.Lock() + defer p.mu.Unlock() + if item, ok := p.items[server.SanitizePagerPollerPath(req.URL.Path)]; ok { + return item + } + return nil +} + +func (p *tracker[T]) add(req *http.Request, item *T) { + p.mu.Lock() + defer p.mu.Unlock() + p.items[server.SanitizePagerPollerPath(req.URL.Path)] = item +} + +func (p *tracker[T]) remove(req *http.Request) { + p.mu.Lock() + defer p.mu.Unlock() + delete(p.items, server.SanitizePagerPollerPath(req.URL.Path)) +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/invoices_server.go b/sdk/resourcemanager/billing/armbilling/fake/invoices_server.go new file mode 100644 index 000000000000..007adf12950c --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/invoices_server.go @@ -0,0 +1,545 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling" + "net/http" + "net/url" + "regexp" +) + +// InvoicesServer is a fake server for instances of the armbilling.InvoicesClient type. +type InvoicesServer struct { + // BeginDownloadBillingSubscriptionInvoice is the fake for method InvoicesClient.BeginDownloadBillingSubscriptionInvoice + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginDownloadBillingSubscriptionInvoice func(ctx context.Context, invoiceName string, downloadToken string, options *armbilling.InvoicesClientBeginDownloadBillingSubscriptionInvoiceOptions) (resp azfake.PollerResponder[armbilling.InvoicesClientDownloadBillingSubscriptionInvoiceResponse], errResp azfake.ErrorResponder) + + // BeginDownloadInvoice is the fake for method InvoicesClient.BeginDownloadInvoice + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginDownloadInvoice func(ctx context.Context, billingAccountName string, invoiceName string, downloadToken string, options *armbilling.InvoicesClientBeginDownloadInvoiceOptions) (resp azfake.PollerResponder[armbilling.InvoicesClientDownloadInvoiceResponse], errResp azfake.ErrorResponder) + + // BeginDownloadMultipleBillingProfileInvoices is the fake for method InvoicesClient.BeginDownloadMultipleBillingProfileInvoices + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginDownloadMultipleBillingProfileInvoices func(ctx context.Context, billingAccountName string, downloadUrls []*string, options *armbilling.InvoicesClientBeginDownloadMultipleBillingProfileInvoicesOptions) (resp azfake.PollerResponder[armbilling.InvoicesClientDownloadMultipleBillingProfileInvoicesResponse], errResp azfake.ErrorResponder) + + // BeginDownloadMultipleBillingSubscriptionInvoices is the fake for method InvoicesClient.BeginDownloadMultipleBillingSubscriptionInvoices + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginDownloadMultipleBillingSubscriptionInvoices func(ctx context.Context, downloadUrls []*string, options *armbilling.InvoicesClientBeginDownloadMultipleBillingSubscriptionInvoicesOptions) (resp azfake.PollerResponder[armbilling.InvoicesClientDownloadMultipleBillingSubscriptionInvoicesResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method InvoicesClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, billingAccountName string, invoiceName string, options *armbilling.InvoicesClientGetOptions) (resp azfake.Responder[armbilling.InvoicesClientGetResponse], errResp azfake.ErrorResponder) + + // GetByID is the fake for method InvoicesClient.GetByID + // HTTP status codes to indicate success: http.StatusOK + GetByID func(ctx context.Context, invoiceName string, options *armbilling.InvoicesClientGetByIDOptions) (resp azfake.Responder[armbilling.InvoicesClientGetByIDResponse], errResp azfake.ErrorResponder) + + // GetBySubscriptionAndInvoiceID is the fake for method InvoicesClient.GetBySubscriptionAndInvoiceID + // HTTP status codes to indicate success: http.StatusOK + GetBySubscriptionAndInvoiceID func(ctx context.Context, invoiceName string, options *armbilling.InvoicesClientGetBySubscriptionAndInvoiceIDOptions) (resp azfake.Responder[armbilling.InvoicesClientGetBySubscriptionAndInvoiceIDResponse], errResp azfake.ErrorResponder) + + // NewListByBillingAccountPager is the fake for method InvoicesClient.NewListByBillingAccountPager + // HTTP status codes to indicate success: http.StatusOK + NewListByBillingAccountPager func(billingAccountName string, periodStartDate string, periodEndDate string, options *armbilling.InvoicesClientListByBillingAccountOptions) (resp azfake.PagerResponder[armbilling.InvoicesClientListByBillingAccountResponse]) + + // NewListByBillingProfilePager is the fake for method InvoicesClient.NewListByBillingProfilePager + // HTTP status codes to indicate success: http.StatusOK + NewListByBillingProfilePager func(billingAccountName string, billingProfileName string, periodStartDate string, periodEndDate string, options *armbilling.InvoicesClientListByBillingProfileOptions) (resp azfake.PagerResponder[armbilling.InvoicesClientListByBillingProfileResponse]) + + // NewListByBillingSubscriptionPager is the fake for method InvoicesClient.NewListByBillingSubscriptionPager + // HTTP status codes to indicate success: http.StatusOK + NewListByBillingSubscriptionPager func(periodStartDate string, periodEndDate string, options *armbilling.InvoicesClientListByBillingSubscriptionOptions) (resp azfake.PagerResponder[armbilling.InvoicesClientListByBillingSubscriptionResponse]) +} + +// NewInvoicesServerTransport creates a new instance of InvoicesServerTransport with the provided implementation. +// The returned InvoicesServerTransport instance is connected to an instance of armbilling.InvoicesClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewInvoicesServerTransport(srv *InvoicesServer) *InvoicesServerTransport { + return &InvoicesServerTransport{ + srv: srv, + beginDownloadBillingSubscriptionInvoice: newTracker[azfake.PollerResponder[armbilling.InvoicesClientDownloadBillingSubscriptionInvoiceResponse]](), + beginDownloadInvoice: newTracker[azfake.PollerResponder[armbilling.InvoicesClientDownloadInvoiceResponse]](), + beginDownloadMultipleBillingProfileInvoices: newTracker[azfake.PollerResponder[armbilling.InvoicesClientDownloadMultipleBillingProfileInvoicesResponse]](), + beginDownloadMultipleBillingSubscriptionInvoices: newTracker[azfake.PollerResponder[armbilling.InvoicesClientDownloadMultipleBillingSubscriptionInvoicesResponse]](), + newListByBillingAccountPager: newTracker[azfake.PagerResponder[armbilling.InvoicesClientListByBillingAccountResponse]](), + newListByBillingProfilePager: newTracker[azfake.PagerResponder[armbilling.InvoicesClientListByBillingProfileResponse]](), + newListByBillingSubscriptionPager: newTracker[azfake.PagerResponder[armbilling.InvoicesClientListByBillingSubscriptionResponse]](), + } +} + +// InvoicesServerTransport connects instances of armbilling.InvoicesClient to instances of InvoicesServer. +// Don't use this type directly, use NewInvoicesServerTransport instead. +type InvoicesServerTransport struct { + srv *InvoicesServer + beginDownloadBillingSubscriptionInvoice *tracker[azfake.PollerResponder[armbilling.InvoicesClientDownloadBillingSubscriptionInvoiceResponse]] + beginDownloadInvoice *tracker[azfake.PollerResponder[armbilling.InvoicesClientDownloadInvoiceResponse]] + beginDownloadMultipleBillingProfileInvoices *tracker[azfake.PollerResponder[armbilling.InvoicesClientDownloadMultipleBillingProfileInvoicesResponse]] + beginDownloadMultipleBillingSubscriptionInvoices *tracker[azfake.PollerResponder[armbilling.InvoicesClientDownloadMultipleBillingSubscriptionInvoicesResponse]] + newListByBillingAccountPager *tracker[azfake.PagerResponder[armbilling.InvoicesClientListByBillingAccountResponse]] + newListByBillingProfilePager *tracker[azfake.PagerResponder[armbilling.InvoicesClientListByBillingProfileResponse]] + newListByBillingSubscriptionPager *tracker[azfake.PagerResponder[armbilling.InvoicesClientListByBillingSubscriptionResponse]] +} + +// Do implements the policy.Transporter interface for InvoicesServerTransport. +func (i *InvoicesServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "InvoicesClient.BeginDownloadBillingSubscriptionInvoice": + resp, err = i.dispatchBeginDownloadBillingSubscriptionInvoice(req) + case "InvoicesClient.BeginDownloadInvoice": + resp, err = i.dispatchBeginDownloadInvoice(req) + case "InvoicesClient.BeginDownloadMultipleBillingProfileInvoices": + resp, err = i.dispatchBeginDownloadMultipleBillingProfileInvoices(req) + case "InvoicesClient.BeginDownloadMultipleBillingSubscriptionInvoices": + resp, err = i.dispatchBeginDownloadMultipleBillingSubscriptionInvoices(req) + case "InvoicesClient.Get": + resp, err = i.dispatchGet(req) + case "InvoicesClient.GetByID": + resp, err = i.dispatchGetByID(req) + case "InvoicesClient.GetBySubscriptionAndInvoiceID": + resp, err = i.dispatchGetBySubscriptionAndInvoiceID(req) + case "InvoicesClient.NewListByBillingAccountPager": + resp, err = i.dispatchNewListByBillingAccountPager(req) + case "InvoicesClient.NewListByBillingProfilePager": + resp, err = i.dispatchNewListByBillingProfilePager(req) + case "InvoicesClient.NewListByBillingSubscriptionPager": + resp, err = i.dispatchNewListByBillingSubscriptionPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (i *InvoicesServerTransport) dispatchBeginDownloadBillingSubscriptionInvoice(req *http.Request) (*http.Response, error) { + if i.srv.BeginDownloadBillingSubscriptionInvoice == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDownloadBillingSubscriptionInvoice not implemented")} + } + beginDownloadBillingSubscriptionInvoice := i.beginDownloadBillingSubscriptionInvoice.get(req) + if beginDownloadBillingSubscriptionInvoice == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/default/billingSubscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/invoices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/download` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + invoiceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("invoiceName")]) + if err != nil { + return nil, err + } + downloadTokenParam, err := url.QueryUnescape(qp.Get("downloadToken")) + if err != nil { + return nil, err + } + respr, errRespr := i.srv.BeginDownloadBillingSubscriptionInvoice(req.Context(), invoiceNameParam, downloadTokenParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDownloadBillingSubscriptionInvoice = &respr + i.beginDownloadBillingSubscriptionInvoice.add(req, beginDownloadBillingSubscriptionInvoice) + } + + resp, err := server.PollerResponderNext(beginDownloadBillingSubscriptionInvoice, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + i.beginDownloadBillingSubscriptionInvoice.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDownloadBillingSubscriptionInvoice) { + i.beginDownloadBillingSubscriptionInvoice.remove(req) + } + + return resp, nil +} + +func (i *InvoicesServerTransport) dispatchBeginDownloadInvoice(req *http.Request) (*http.Response, error) { + if i.srv.BeginDownloadInvoice == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDownloadInvoice not implemented")} + } + beginDownloadInvoice := i.beginDownloadInvoice.get(req) + if beginDownloadInvoice == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/invoices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/download` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + invoiceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("invoiceName")]) + if err != nil { + return nil, err + } + downloadTokenParam, err := url.QueryUnescape(qp.Get("downloadToken")) + if err != nil { + return nil, err + } + respr, errRespr := i.srv.BeginDownloadInvoice(req.Context(), billingAccountNameParam, invoiceNameParam, downloadTokenParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDownloadInvoice = &respr + i.beginDownloadInvoice.add(req, beginDownloadInvoice) + } + + resp, err := server.PollerResponderNext(beginDownloadInvoice, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + i.beginDownloadInvoice.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDownloadInvoice) { + i.beginDownloadInvoice.remove(req) + } + + return resp, nil +} + +func (i *InvoicesServerTransport) dispatchBeginDownloadMultipleBillingProfileInvoices(req *http.Request) (*http.Response, error) { + if i.srv.BeginDownloadMultipleBillingProfileInvoices == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDownloadMultipleBillingProfileInvoices not implemented")} + } + beginDownloadMultipleBillingProfileInvoices := i.beginDownloadMultipleBillingProfileInvoices.get(req) + if beginDownloadMultipleBillingProfileInvoices == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/downloadDocuments` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[[]*string](req) + if err != nil { + return nil, err + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + respr, errRespr := i.srv.BeginDownloadMultipleBillingProfileInvoices(req.Context(), billingAccountNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDownloadMultipleBillingProfileInvoices = &respr + i.beginDownloadMultipleBillingProfileInvoices.add(req, beginDownloadMultipleBillingProfileInvoices) + } + + resp, err := server.PollerResponderNext(beginDownloadMultipleBillingProfileInvoices, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + i.beginDownloadMultipleBillingProfileInvoices.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDownloadMultipleBillingProfileInvoices) { + i.beginDownloadMultipleBillingProfileInvoices.remove(req) + } + + return resp, nil +} + +func (i *InvoicesServerTransport) dispatchBeginDownloadMultipleBillingSubscriptionInvoices(req *http.Request) (*http.Response, error) { + if i.srv.BeginDownloadMultipleBillingSubscriptionInvoices == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDownloadMultipleBillingSubscriptionInvoices not implemented")} + } + beginDownloadMultipleBillingSubscriptionInvoices := i.beginDownloadMultipleBillingSubscriptionInvoices.get(req) + if beginDownloadMultipleBillingSubscriptionInvoices == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/default/billingSubscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/downloadDocuments` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[[]*string](req) + if err != nil { + return nil, err + } + respr, errRespr := i.srv.BeginDownloadMultipleBillingSubscriptionInvoices(req.Context(), body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDownloadMultipleBillingSubscriptionInvoices = &respr + i.beginDownloadMultipleBillingSubscriptionInvoices.add(req, beginDownloadMultipleBillingSubscriptionInvoices) + } + + resp, err := server.PollerResponderNext(beginDownloadMultipleBillingSubscriptionInvoices, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + i.beginDownloadMultipleBillingSubscriptionInvoices.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDownloadMultipleBillingSubscriptionInvoices) { + i.beginDownloadMultipleBillingSubscriptionInvoices.remove(req) + } + + return resp, nil +} + +func (i *InvoicesServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if i.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/invoices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + invoiceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("invoiceName")]) + if err != nil { + return nil, err + } + respr, errRespr := i.srv.Get(req.Context(), billingAccountNameParam, invoiceNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Invoice, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (i *InvoicesServerTransport) dispatchGetByID(req *http.Request) (*http.Response, error) { + if i.srv.GetByID == nil { + return nil, &nonRetriableError{errors.New("fake for method GetByID not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/default/invoices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + invoiceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("invoiceName")]) + if err != nil { + return nil, err + } + respr, errRespr := i.srv.GetByID(req.Context(), invoiceNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Invoice, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (i *InvoicesServerTransport) dispatchGetBySubscriptionAndInvoiceID(req *http.Request) (*http.Response, error) { + if i.srv.GetBySubscriptionAndInvoiceID == nil { + return nil, &nonRetriableError{errors.New("fake for method GetBySubscriptionAndInvoiceID not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/default/billingSubscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/invoices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + invoiceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("invoiceName")]) + if err != nil { + return nil, err + } + respr, errRespr := i.srv.GetBySubscriptionAndInvoiceID(req.Context(), invoiceNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Invoice, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (i *InvoicesServerTransport) dispatchNewListByBillingAccountPager(req *http.Request) (*http.Response, error) { + if i.srv.NewListByBillingAccountPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByBillingAccountPager not implemented")} + } + newListByBillingAccountPager := i.newListByBillingAccountPager.get(req) + if newListByBillingAccountPager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/invoices` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + periodStartDateParam, err := url.QueryUnescape(qp.Get("periodStartDate")) + if err != nil { + return nil, err + } + periodEndDateParam, err := url.QueryUnescape(qp.Get("periodEndDate")) + if err != nil { + return nil, err + } + resp := i.srv.NewListByBillingAccountPager(billingAccountNameParam, periodStartDateParam, periodEndDateParam, nil) + newListByBillingAccountPager = &resp + i.newListByBillingAccountPager.add(req, newListByBillingAccountPager) + server.PagerResponderInjectNextLinks(newListByBillingAccountPager, req, func(page *armbilling.InvoicesClientListByBillingAccountResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByBillingAccountPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + i.newListByBillingAccountPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByBillingAccountPager) { + i.newListByBillingAccountPager.remove(req) + } + return resp, nil +} + +func (i *InvoicesServerTransport) dispatchNewListByBillingProfilePager(req *http.Request) (*http.Response, error) { + if i.srv.NewListByBillingProfilePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByBillingProfilePager not implemented")} + } + newListByBillingProfilePager := i.newListByBillingProfilePager.get(req) + if newListByBillingProfilePager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/invoices` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + periodStartDateParam, err := url.QueryUnescape(qp.Get("periodStartDate")) + if err != nil { + return nil, err + } + periodEndDateParam, err := url.QueryUnescape(qp.Get("periodEndDate")) + if err != nil { + return nil, err + } + resp := i.srv.NewListByBillingProfilePager(billingAccountNameParam, billingProfileNameParam, periodStartDateParam, periodEndDateParam, nil) + newListByBillingProfilePager = &resp + i.newListByBillingProfilePager.add(req, newListByBillingProfilePager) + server.PagerResponderInjectNextLinks(newListByBillingProfilePager, req, func(page *armbilling.InvoicesClientListByBillingProfileResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByBillingProfilePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + i.newListByBillingProfilePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByBillingProfilePager) { + i.newListByBillingProfilePager.remove(req) + } + return resp, nil +} + +func (i *InvoicesServerTransport) dispatchNewListByBillingSubscriptionPager(req *http.Request) (*http.Response, error) { + if i.srv.NewListByBillingSubscriptionPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByBillingSubscriptionPager not implemented")} + } + newListByBillingSubscriptionPager := i.newListByBillingSubscriptionPager.get(req) + if newListByBillingSubscriptionPager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/default/billingSubscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/invoices` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + periodStartDateParam, err := url.QueryUnescape(qp.Get("periodStartDate")) + if err != nil { + return nil, err + } + periodEndDateParam, err := url.QueryUnescape(qp.Get("periodEndDate")) + if err != nil { + return nil, err + } + resp := i.srv.NewListByBillingSubscriptionPager(periodStartDateParam, periodEndDateParam, nil) + newListByBillingSubscriptionPager = &resp + i.newListByBillingSubscriptionPager.add(req, newListByBillingSubscriptionPager) + server.PagerResponderInjectNextLinks(newListByBillingSubscriptionPager, req, func(page *armbilling.InvoicesClientListByBillingSubscriptionResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByBillingSubscriptionPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + i.newListByBillingSubscriptionPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByBillingSubscriptionPager) { + i.newListByBillingSubscriptionPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/invoicesections_server.go b/sdk/resourcemanager/billing/armbilling/fake/invoicesections_server.go new file mode 100644 index 000000000000..1d3dcad6bb98 --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/invoicesections_server.go @@ -0,0 +1,216 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling" + "net/http" + "net/url" + "regexp" +) + +// InvoiceSectionsServer is a fake server for instances of the armbilling.InvoiceSectionsClient type. +type InvoiceSectionsServer struct { + // BeginCreateOrUpdate is the fake for method InvoiceSectionsClient.BeginCreateOrUpdate + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginCreateOrUpdate func(ctx context.Context, billingAccountName string, billingProfileName string, invoiceSectionName string, parameters armbilling.InvoiceSection, options *armbilling.InvoiceSectionsClientBeginCreateOrUpdateOptions) (resp azfake.PollerResponder[armbilling.InvoiceSectionsClientCreateOrUpdateResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method InvoiceSectionsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, billingAccountName string, billingProfileName string, invoiceSectionName string, options *armbilling.InvoiceSectionsClientGetOptions) (resp azfake.Responder[armbilling.InvoiceSectionsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByBillingProfilePager is the fake for method InvoiceSectionsClient.NewListByBillingProfilePager + // HTTP status codes to indicate success: http.StatusOK + NewListByBillingProfilePager func(billingAccountName string, billingProfileName string, options *armbilling.InvoiceSectionsClientListByBillingProfileOptions) (resp azfake.PagerResponder[armbilling.InvoiceSectionsClientListByBillingProfileResponse]) +} + +// NewInvoiceSectionsServerTransport creates a new instance of InvoiceSectionsServerTransport with the provided implementation. +// The returned InvoiceSectionsServerTransport instance is connected to an instance of armbilling.InvoiceSectionsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewInvoiceSectionsServerTransport(srv *InvoiceSectionsServer) *InvoiceSectionsServerTransport { + return &InvoiceSectionsServerTransport{ + srv: srv, + beginCreateOrUpdate: newTracker[azfake.PollerResponder[armbilling.InvoiceSectionsClientCreateOrUpdateResponse]](), + newListByBillingProfilePager: newTracker[azfake.PagerResponder[armbilling.InvoiceSectionsClientListByBillingProfileResponse]](), + } +} + +// InvoiceSectionsServerTransport connects instances of armbilling.InvoiceSectionsClient to instances of InvoiceSectionsServer. +// Don't use this type directly, use NewInvoiceSectionsServerTransport instead. +type InvoiceSectionsServerTransport struct { + srv *InvoiceSectionsServer + beginCreateOrUpdate *tracker[azfake.PollerResponder[armbilling.InvoiceSectionsClientCreateOrUpdateResponse]] + newListByBillingProfilePager *tracker[azfake.PagerResponder[armbilling.InvoiceSectionsClientListByBillingProfileResponse]] +} + +// Do implements the policy.Transporter interface for InvoiceSectionsServerTransport. +func (i *InvoiceSectionsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "InvoiceSectionsClient.BeginCreateOrUpdate": + resp, err = i.dispatchBeginCreateOrUpdate(req) + case "InvoiceSectionsClient.Get": + resp, err = i.dispatchGet(req) + case "InvoiceSectionsClient.NewListByBillingProfilePager": + resp, err = i.dispatchNewListByBillingProfilePager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (i *InvoiceSectionsServerTransport) dispatchBeginCreateOrUpdate(req *http.Request) (*http.Response, error) { + if i.srv.BeginCreateOrUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreateOrUpdate not implemented")} + } + beginCreateOrUpdate := i.beginCreateOrUpdate.get(req) + if beginCreateOrUpdate == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/invoiceSections/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbilling.InvoiceSection](req) + if err != nil { + return nil, err + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + invoiceSectionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("invoiceSectionName")]) + if err != nil { + return nil, err + } + respr, errRespr := i.srv.BeginCreateOrUpdate(req.Context(), billingAccountNameParam, billingProfileNameParam, invoiceSectionNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreateOrUpdate = &respr + i.beginCreateOrUpdate.add(req, beginCreateOrUpdate) + } + + resp, err := server.PollerResponderNext(beginCreateOrUpdate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + i.beginCreateOrUpdate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreateOrUpdate) { + i.beginCreateOrUpdate.remove(req) + } + + return resp, nil +} + +func (i *InvoiceSectionsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if i.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/invoiceSections/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + invoiceSectionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("invoiceSectionName")]) + if err != nil { + return nil, err + } + respr, errRespr := i.srv.Get(req.Context(), billingAccountNameParam, billingProfileNameParam, invoiceSectionNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).InvoiceSection, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (i *InvoiceSectionsServerTransport) dispatchNewListByBillingProfilePager(req *http.Request) (*http.Response, error) { + if i.srv.NewListByBillingProfilePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByBillingProfilePager not implemented")} + } + newListByBillingProfilePager := i.newListByBillingProfilePager.get(req) + if newListByBillingProfilePager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/invoiceSections` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + resp := i.srv.NewListByBillingProfilePager(billingAccountNameParam, billingProfileNameParam, nil) + newListByBillingProfilePager = &resp + i.newListByBillingProfilePager.add(req, newListByBillingProfilePager) + server.PagerResponderInjectNextLinks(newListByBillingProfilePager, req, func(page *armbilling.InvoiceSectionsClientListByBillingProfileResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByBillingProfilePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + i.newListByBillingProfilePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByBillingProfilePager) { + i.newListByBillingProfilePager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/operations_server.go b/sdk/resourcemanager/billing/armbilling/fake/operations_server.go new file mode 100644 index 000000000000..ae011b83e691 --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/operations_server.go @@ -0,0 +1,96 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling" + "net/http" +) + +// OperationsServer is a fake server for instances of the armbilling.OperationsClient type. +type OperationsServer struct { + // NewListPager is the fake for method OperationsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armbilling.OperationsClientListOptions) (resp azfake.PagerResponder[armbilling.OperationsClientListResponse]) +} + +// NewOperationsServerTransport creates a new instance of OperationsServerTransport with the provided implementation. +// The returned OperationsServerTransport instance is connected to an instance of armbilling.OperationsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewOperationsServerTransport(srv *OperationsServer) *OperationsServerTransport { + return &OperationsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armbilling.OperationsClientListResponse]](), + } +} + +// OperationsServerTransport connects instances of armbilling.OperationsClient to instances of OperationsServer. +// Don't use this type directly, use NewOperationsServerTransport instead. +type OperationsServerTransport struct { + srv *OperationsServer + newListPager *tracker[azfake.PagerResponder[armbilling.OperationsClientListResponse]] +} + +// Do implements the policy.Transporter interface for OperationsServerTransport. +func (o *OperationsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "OperationsClient.NewListPager": + resp, err = o.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (o *OperationsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if o.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := o.newListPager.get(req) + if newListPager == nil { + resp := o.srv.NewListPager(nil) + newListPager = &resp + o.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armbilling.OperationsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + o.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + o.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/periods_server.go b/sdk/resourcemanager/billing/armbilling/fake/periods_server.go new file mode 100644 index 000000000000..0bb3c5c0d5d2 --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/periods_server.go @@ -0,0 +1,174 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling" + "net/http" + "net/url" + "regexp" + "strconv" +) + +// PeriodsServer is a fake server for instances of the armbilling.PeriodsClient type. +type PeriodsServer struct { + // Get is the fake for method PeriodsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, billingPeriodName string, options *armbilling.PeriodsClientGetOptions) (resp azfake.Responder[armbilling.PeriodsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method PeriodsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armbilling.PeriodsClientListOptions) (resp azfake.PagerResponder[armbilling.PeriodsClientListResponse]) +} + +// NewPeriodsServerTransport creates a new instance of PeriodsServerTransport with the provided implementation. +// The returned PeriodsServerTransport instance is connected to an instance of armbilling.PeriodsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewPeriodsServerTransport(srv *PeriodsServer) *PeriodsServerTransport { + return &PeriodsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armbilling.PeriodsClientListResponse]](), + } +} + +// PeriodsServerTransport connects instances of armbilling.PeriodsClient to instances of PeriodsServer. +// Don't use this type directly, use NewPeriodsServerTransport instead. +type PeriodsServerTransport struct { + srv *PeriodsServer + newListPager *tracker[azfake.PagerResponder[armbilling.PeriodsClientListResponse]] +} + +// Do implements the policy.Transporter interface for PeriodsServerTransport. +func (p *PeriodsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "PeriodsClient.Get": + resp, err = p.dispatchGet(req) + case "PeriodsClient.NewListPager": + resp, err = p.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (p *PeriodsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if p.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Billing/billingPeriods/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingPeriodNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingPeriodName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.Get(req.Context(), billingPeriodNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Period, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (p *PeriodsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if p.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := p.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Billing/billingPeriods` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + filterUnescaped, err := url.QueryUnescape(qp.Get("$filter")) + if err != nil { + return nil, err + } + filterParam := getOptional(filterUnescaped) + skiptokenUnescaped, err := url.QueryUnescape(qp.Get("$skiptoken")) + if err != nil { + return nil, err + } + skiptokenParam := getOptional(skiptokenUnescaped) + topUnescaped, err := url.QueryUnescape(qp.Get("$top")) + if err != nil { + return nil, err + } + topParam, err := parseOptional(topUnescaped, func(v string) (int32, error) { + p, parseErr := strconv.ParseInt(v, 10, 32) + if parseErr != nil { + return 0, parseErr + } + return int32(p), nil + }) + if err != nil { + return nil, err + } + var options *armbilling.PeriodsClientListOptions + if filterParam != nil || skiptokenParam != nil || topParam != nil { + options = &armbilling.PeriodsClientListOptions{ + Filter: filterParam, + Skiptoken: skiptokenParam, + Top: topParam, + } + } + resp := p.srv.NewListPager(options) + newListPager = &resp + p.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armbilling.PeriodsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + p.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + p.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/permissions_server.go b/sdk/resourcemanager/billing/armbilling/fake/permissions_server.go new file mode 100644 index 000000000000..0e59633800aa --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/permissions_server.go @@ -0,0 +1,259 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling" + "net/http" + "net/url" + "regexp" +) + +// PermissionsServer is a fake server for instances of the armbilling.PermissionsClient type. +type PermissionsServer struct { + // NewListByBillingAccountPager is the fake for method PermissionsClient.NewListByBillingAccountPager + // HTTP status codes to indicate success: http.StatusOK + NewListByBillingAccountPager func(billingAccountName string, options *armbilling.PermissionsClientListByBillingAccountOptions) (resp azfake.PagerResponder[armbilling.PermissionsClientListByBillingAccountResponse]) + + // NewListByBillingProfilePager is the fake for method PermissionsClient.NewListByBillingProfilePager + // HTTP status codes to indicate success: http.StatusOK + NewListByBillingProfilePager func(billingAccountName string, billingProfileName string, options *armbilling.PermissionsClientListByBillingProfileOptions) (resp azfake.PagerResponder[armbilling.PermissionsClientListByBillingProfileResponse]) + + // NewListByCustomerPager is the fake for method PermissionsClient.NewListByCustomerPager + // HTTP status codes to indicate success: http.StatusOK + NewListByCustomerPager func(billingAccountName string, customerName string, options *armbilling.PermissionsClientListByCustomerOptions) (resp azfake.PagerResponder[armbilling.PermissionsClientListByCustomerResponse]) + + // NewListByInvoiceSectionsPager is the fake for method PermissionsClient.NewListByInvoiceSectionsPager + // HTTP status codes to indicate success: http.StatusOK + NewListByInvoiceSectionsPager func(billingAccountName string, billingProfileName string, invoiceSectionName string, options *armbilling.PermissionsClientListByInvoiceSectionsOptions) (resp azfake.PagerResponder[armbilling.PermissionsClientListByInvoiceSectionsResponse]) +} + +// NewPermissionsServerTransport creates a new instance of PermissionsServerTransport with the provided implementation. +// The returned PermissionsServerTransport instance is connected to an instance of armbilling.PermissionsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewPermissionsServerTransport(srv *PermissionsServer) *PermissionsServerTransport { + return &PermissionsServerTransport{ + srv: srv, + newListByBillingAccountPager: newTracker[azfake.PagerResponder[armbilling.PermissionsClientListByBillingAccountResponse]](), + newListByBillingProfilePager: newTracker[azfake.PagerResponder[armbilling.PermissionsClientListByBillingProfileResponse]](), + newListByCustomerPager: newTracker[azfake.PagerResponder[armbilling.PermissionsClientListByCustomerResponse]](), + newListByInvoiceSectionsPager: newTracker[azfake.PagerResponder[armbilling.PermissionsClientListByInvoiceSectionsResponse]](), + } +} + +// PermissionsServerTransport connects instances of armbilling.PermissionsClient to instances of PermissionsServer. +// Don't use this type directly, use NewPermissionsServerTransport instead. +type PermissionsServerTransport struct { + srv *PermissionsServer + newListByBillingAccountPager *tracker[azfake.PagerResponder[armbilling.PermissionsClientListByBillingAccountResponse]] + newListByBillingProfilePager *tracker[azfake.PagerResponder[armbilling.PermissionsClientListByBillingProfileResponse]] + newListByCustomerPager *tracker[azfake.PagerResponder[armbilling.PermissionsClientListByCustomerResponse]] + newListByInvoiceSectionsPager *tracker[azfake.PagerResponder[armbilling.PermissionsClientListByInvoiceSectionsResponse]] +} + +// Do implements the policy.Transporter interface for PermissionsServerTransport. +func (p *PermissionsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "PermissionsClient.NewListByBillingAccountPager": + resp, err = p.dispatchNewListByBillingAccountPager(req) + case "PermissionsClient.NewListByBillingProfilePager": + resp, err = p.dispatchNewListByBillingProfilePager(req) + case "PermissionsClient.NewListByCustomerPager": + resp, err = p.dispatchNewListByCustomerPager(req) + case "PermissionsClient.NewListByInvoiceSectionsPager": + resp, err = p.dispatchNewListByInvoiceSectionsPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (p *PermissionsServerTransport) dispatchNewListByBillingAccountPager(req *http.Request) (*http.Response, error) { + if p.srv.NewListByBillingAccountPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByBillingAccountPager not implemented")} + } + newListByBillingAccountPager := p.newListByBillingAccountPager.get(req) + if newListByBillingAccountPager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingPermissions` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + resp := p.srv.NewListByBillingAccountPager(billingAccountNameParam, nil) + newListByBillingAccountPager = &resp + p.newListByBillingAccountPager.add(req, newListByBillingAccountPager) + server.PagerResponderInjectNextLinks(newListByBillingAccountPager, req, func(page *armbilling.PermissionsClientListByBillingAccountResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByBillingAccountPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + p.newListByBillingAccountPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByBillingAccountPager) { + p.newListByBillingAccountPager.remove(req) + } + return resp, nil +} + +func (p *PermissionsServerTransport) dispatchNewListByBillingProfilePager(req *http.Request) (*http.Response, error) { + if p.srv.NewListByBillingProfilePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByBillingProfilePager not implemented")} + } + newListByBillingProfilePager := p.newListByBillingProfilePager.get(req) + if newListByBillingProfilePager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingPermissions` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + resp := p.srv.NewListByBillingProfilePager(billingAccountNameParam, billingProfileNameParam, nil) + newListByBillingProfilePager = &resp + p.newListByBillingProfilePager.add(req, newListByBillingProfilePager) + server.PagerResponderInjectNextLinks(newListByBillingProfilePager, req, func(page *armbilling.PermissionsClientListByBillingProfileResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByBillingProfilePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + p.newListByBillingProfilePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByBillingProfilePager) { + p.newListByBillingProfilePager.remove(req) + } + return resp, nil +} + +func (p *PermissionsServerTransport) dispatchNewListByCustomerPager(req *http.Request) (*http.Response, error) { + if p.srv.NewListByCustomerPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByCustomerPager not implemented")} + } + newListByCustomerPager := p.newListByCustomerPager.get(req) + if newListByCustomerPager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/customers/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingPermissions` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + customerNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("customerName")]) + if err != nil { + return nil, err + } + resp := p.srv.NewListByCustomerPager(billingAccountNameParam, customerNameParam, nil) + newListByCustomerPager = &resp + p.newListByCustomerPager.add(req, newListByCustomerPager) + server.PagerResponderInjectNextLinks(newListByCustomerPager, req, func(page *armbilling.PermissionsClientListByCustomerResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByCustomerPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + p.newListByCustomerPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByCustomerPager) { + p.newListByCustomerPager.remove(req) + } + return resp, nil +} + +func (p *PermissionsServerTransport) dispatchNewListByInvoiceSectionsPager(req *http.Request) (*http.Response, error) { + if p.srv.NewListByInvoiceSectionsPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByInvoiceSectionsPager not implemented")} + } + newListByInvoiceSectionsPager := p.newListByInvoiceSectionsPager.get(req) + if newListByInvoiceSectionsPager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/invoiceSections/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingPermissions` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + invoiceSectionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("invoiceSectionName")]) + if err != nil { + return nil, err + } + resp := p.srv.NewListByInvoiceSectionsPager(billingAccountNameParam, billingProfileNameParam, invoiceSectionNameParam, nil) + newListByInvoiceSectionsPager = &resp + p.newListByInvoiceSectionsPager.add(req, newListByInvoiceSectionsPager) + server.PagerResponderInjectNextLinks(newListByInvoiceSectionsPager, req, func(page *armbilling.PermissionsClientListByInvoiceSectionsResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByInvoiceSectionsPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + p.newListByInvoiceSectionsPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByInvoiceSectionsPager) { + p.newListByInvoiceSectionsPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/policies_server.go b/sdk/resourcemanager/billing/armbilling/fake/policies_server.go new file mode 100644 index 000000000000..29c387154a4d --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/policies_server.go @@ -0,0 +1,225 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling" + "net/http" + "net/url" + "regexp" +) + +// PoliciesServer is a fake server for instances of the armbilling.PoliciesClient type. +type PoliciesServer struct { + // GetByBillingProfile is the fake for method PoliciesClient.GetByBillingProfile + // HTTP status codes to indicate success: http.StatusOK + GetByBillingProfile func(ctx context.Context, billingAccountName string, billingProfileName string, options *armbilling.PoliciesClientGetByBillingProfileOptions) (resp azfake.Responder[armbilling.PoliciesClientGetByBillingProfileResponse], errResp azfake.ErrorResponder) + + // GetByCustomer is the fake for method PoliciesClient.GetByCustomer + // HTTP status codes to indicate success: http.StatusOK + GetByCustomer func(ctx context.Context, billingAccountName string, customerName string, options *armbilling.PoliciesClientGetByCustomerOptions) (resp azfake.Responder[armbilling.PoliciesClientGetByCustomerResponse], errResp azfake.ErrorResponder) + + // Update is the fake for method PoliciesClient.Update + // HTTP status codes to indicate success: http.StatusOK + Update func(ctx context.Context, billingAccountName string, billingProfileName string, parameters armbilling.Policy, options *armbilling.PoliciesClientUpdateOptions) (resp azfake.Responder[armbilling.PoliciesClientUpdateResponse], errResp azfake.ErrorResponder) + + // UpdateCustomer is the fake for method PoliciesClient.UpdateCustomer + // HTTP status codes to indicate success: http.StatusOK + UpdateCustomer func(ctx context.Context, billingAccountName string, customerName string, parameters armbilling.CustomerPolicy, options *armbilling.PoliciesClientUpdateCustomerOptions) (resp azfake.Responder[armbilling.PoliciesClientUpdateCustomerResponse], errResp azfake.ErrorResponder) +} + +// NewPoliciesServerTransport creates a new instance of PoliciesServerTransport with the provided implementation. +// The returned PoliciesServerTransport instance is connected to an instance of armbilling.PoliciesClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewPoliciesServerTransport(srv *PoliciesServer) *PoliciesServerTransport { + return &PoliciesServerTransport{srv: srv} +} + +// PoliciesServerTransport connects instances of armbilling.PoliciesClient to instances of PoliciesServer. +// Don't use this type directly, use NewPoliciesServerTransport instead. +type PoliciesServerTransport struct { + srv *PoliciesServer +} + +// Do implements the policy.Transporter interface for PoliciesServerTransport. +func (p *PoliciesServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "PoliciesClient.GetByBillingProfile": + resp, err = p.dispatchGetByBillingProfile(req) + case "PoliciesClient.GetByCustomer": + resp, err = p.dispatchGetByCustomer(req) + case "PoliciesClient.Update": + resp, err = p.dispatchUpdate(req) + case "PoliciesClient.UpdateCustomer": + resp, err = p.dispatchUpdateCustomer(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (p *PoliciesServerTransport) dispatchGetByBillingProfile(req *http.Request) (*http.Response, error) { + if p.srv.GetByBillingProfile == nil { + return nil, &nonRetriableError{errors.New("fake for method GetByBillingProfile not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/policies/default` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.GetByBillingProfile(req.Context(), billingAccountNameParam, billingProfileNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Policy, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (p *PoliciesServerTransport) dispatchGetByCustomer(req *http.Request) (*http.Response, error) { + if p.srv.GetByCustomer == nil { + return nil, &nonRetriableError{errors.New("fake for method GetByCustomer not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/customers/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/policies/default` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + customerNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("customerName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.GetByCustomer(req.Context(), billingAccountNameParam, customerNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).CustomerPolicy, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (p *PoliciesServerTransport) dispatchUpdate(req *http.Request) (*http.Response, error) { + if p.srv.Update == nil { + return nil, &nonRetriableError{errors.New("fake for method Update not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/policies/default` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbilling.Policy](req) + if err != nil { + return nil, err + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.Update(req.Context(), billingAccountNameParam, billingProfileNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Policy, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (p *PoliciesServerTransport) dispatchUpdateCustomer(req *http.Request) (*http.Response, error) { + if p.srv.UpdateCustomer == nil { + return nil, &nonRetriableError{errors.New("fake for method UpdateCustomer not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/customers/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/policies/default` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbilling.CustomerPolicy](req) + if err != nil { + return nil, err + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + customerNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("customerName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.UpdateCustomer(req.Context(), billingAccountNameParam, customerNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).CustomerPolicy, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/products_server.go b/sdk/resourcemanager/billing/armbilling/fake/products_server.go new file mode 100644 index 000000000000..cd2537847937 --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/products_server.go @@ -0,0 +1,471 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling" + "net/http" + "net/url" + "regexp" + "strconv" +) + +// ProductsServer is a fake server for instances of the armbilling.ProductsClient type. +type ProductsServer struct { + // Get is the fake for method ProductsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, billingAccountName string, productName string, options *armbilling.ProductsClientGetOptions) (resp azfake.Responder[armbilling.ProductsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByBillingAccountPager is the fake for method ProductsClient.NewListByBillingAccountPager + // HTTP status codes to indicate success: http.StatusOK + NewListByBillingAccountPager func(billingAccountName string, options *armbilling.ProductsClientListByBillingAccountOptions) (resp azfake.PagerResponder[armbilling.ProductsClientListByBillingAccountResponse]) + + // NewListByBillingProfilePager is the fake for method ProductsClient.NewListByBillingProfilePager + // HTTP status codes to indicate success: http.StatusOK + NewListByBillingProfilePager func(billingAccountName string, billingProfileName string, options *armbilling.ProductsClientListByBillingProfileOptions) (resp azfake.PagerResponder[armbilling.ProductsClientListByBillingProfileResponse]) + + // NewListByCustomerPager is the fake for method ProductsClient.NewListByCustomerPager + // HTTP status codes to indicate success: http.StatusOK + NewListByCustomerPager func(billingAccountName string, customerName string, options *armbilling.ProductsClientListByCustomerOptions) (resp azfake.PagerResponder[armbilling.ProductsClientListByCustomerResponse]) + + // NewListByInvoiceSectionPager is the fake for method ProductsClient.NewListByInvoiceSectionPager + // HTTP status codes to indicate success: http.StatusOK + NewListByInvoiceSectionPager func(billingAccountName string, billingProfileName string, invoiceSectionName string, options *armbilling.ProductsClientListByInvoiceSectionOptions) (resp azfake.PagerResponder[armbilling.ProductsClientListByInvoiceSectionResponse]) + + // Move is the fake for method ProductsClient.Move + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + Move func(ctx context.Context, billingAccountName string, productName string, parameters armbilling.TransferProductRequestProperties, options *armbilling.ProductsClientMoveOptions) (resp azfake.Responder[armbilling.ProductsClientMoveResponse], errResp azfake.ErrorResponder) + + // Update is the fake for method ProductsClient.Update + // HTTP status codes to indicate success: http.StatusOK + Update func(ctx context.Context, billingAccountName string, productName string, parameters armbilling.Product, options *armbilling.ProductsClientUpdateOptions) (resp azfake.Responder[armbilling.ProductsClientUpdateResponse], errResp azfake.ErrorResponder) + + // ValidateMove is the fake for method ProductsClient.ValidateMove + // HTTP status codes to indicate success: http.StatusOK + ValidateMove func(ctx context.Context, billingAccountName string, productName string, parameters armbilling.TransferProductRequestProperties, options *armbilling.ProductsClientValidateMoveOptions) (resp azfake.Responder[armbilling.ProductsClientValidateMoveResponse], errResp azfake.ErrorResponder) +} + +// NewProductsServerTransport creates a new instance of ProductsServerTransport with the provided implementation. +// The returned ProductsServerTransport instance is connected to an instance of armbilling.ProductsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewProductsServerTransport(srv *ProductsServer) *ProductsServerTransport { + return &ProductsServerTransport{ + srv: srv, + newListByBillingAccountPager: newTracker[azfake.PagerResponder[armbilling.ProductsClientListByBillingAccountResponse]](), + newListByBillingProfilePager: newTracker[azfake.PagerResponder[armbilling.ProductsClientListByBillingProfileResponse]](), + newListByCustomerPager: newTracker[azfake.PagerResponder[armbilling.ProductsClientListByCustomerResponse]](), + newListByInvoiceSectionPager: newTracker[azfake.PagerResponder[armbilling.ProductsClientListByInvoiceSectionResponse]](), + } +} + +// ProductsServerTransport connects instances of armbilling.ProductsClient to instances of ProductsServer. +// Don't use this type directly, use NewProductsServerTransport instead. +type ProductsServerTransport struct { + srv *ProductsServer + newListByBillingAccountPager *tracker[azfake.PagerResponder[armbilling.ProductsClientListByBillingAccountResponse]] + newListByBillingProfilePager *tracker[azfake.PagerResponder[armbilling.ProductsClientListByBillingProfileResponse]] + newListByCustomerPager *tracker[azfake.PagerResponder[armbilling.ProductsClientListByCustomerResponse]] + newListByInvoiceSectionPager *tracker[azfake.PagerResponder[armbilling.ProductsClientListByInvoiceSectionResponse]] +} + +// Do implements the policy.Transporter interface for ProductsServerTransport. +func (p *ProductsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "ProductsClient.Get": + resp, err = p.dispatchGet(req) + case "ProductsClient.NewListByBillingAccountPager": + resp, err = p.dispatchNewListByBillingAccountPager(req) + case "ProductsClient.NewListByBillingProfilePager": + resp, err = p.dispatchNewListByBillingProfilePager(req) + case "ProductsClient.NewListByCustomerPager": + resp, err = p.dispatchNewListByCustomerPager(req) + case "ProductsClient.NewListByInvoiceSectionPager": + resp, err = p.dispatchNewListByInvoiceSectionPager(req) + case "ProductsClient.Move": + resp, err = p.dispatchMove(req) + case "ProductsClient.Update": + resp, err = p.dispatchUpdate(req) + case "ProductsClient.ValidateMove": + resp, err = p.dispatchValidateMove(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (p *ProductsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if p.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/products/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + productNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("productName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.Get(req.Context(), billingAccountNameParam, productNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Product, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (p *ProductsServerTransport) dispatchNewListByBillingAccountPager(req *http.Request) (*http.Response, error) { + if p.srv.NewListByBillingAccountPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByBillingAccountPager not implemented")} + } + newListByBillingAccountPager := p.newListByBillingAccountPager.get(req) + if newListByBillingAccountPager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/products` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + filterUnescaped, err := url.QueryUnescape(qp.Get("$filter")) + if err != nil { + return nil, err + } + filterParam := getOptional(filterUnescaped) + var options *armbilling.ProductsClientListByBillingAccountOptions + if filterParam != nil { + options = &armbilling.ProductsClientListByBillingAccountOptions{ + Filter: filterParam, + } + } + resp := p.srv.NewListByBillingAccountPager(billingAccountNameParam, options) + newListByBillingAccountPager = &resp + p.newListByBillingAccountPager.add(req, newListByBillingAccountPager) + server.PagerResponderInjectNextLinks(newListByBillingAccountPager, req, func(page *armbilling.ProductsClientListByBillingAccountResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByBillingAccountPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + p.newListByBillingAccountPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByBillingAccountPager) { + p.newListByBillingAccountPager.remove(req) + } + return resp, nil +} + +func (p *ProductsServerTransport) dispatchNewListByBillingProfilePager(req *http.Request) (*http.Response, error) { + if p.srv.NewListByBillingProfilePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByBillingProfilePager not implemented")} + } + newListByBillingProfilePager := p.newListByBillingProfilePager.get(req) + if newListByBillingProfilePager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/products` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + filterUnescaped, err := url.QueryUnescape(qp.Get("$filter")) + if err != nil { + return nil, err + } + filterParam := getOptional(filterUnescaped) + var options *armbilling.ProductsClientListByBillingProfileOptions + if filterParam != nil { + options = &armbilling.ProductsClientListByBillingProfileOptions{ + Filter: filterParam, + } + } + resp := p.srv.NewListByBillingProfilePager(billingAccountNameParam, billingProfileNameParam, options) + newListByBillingProfilePager = &resp + p.newListByBillingProfilePager.add(req, newListByBillingProfilePager) + server.PagerResponderInjectNextLinks(newListByBillingProfilePager, req, func(page *armbilling.ProductsClientListByBillingProfileResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByBillingProfilePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + p.newListByBillingProfilePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByBillingProfilePager) { + p.newListByBillingProfilePager.remove(req) + } + return resp, nil +} + +func (p *ProductsServerTransport) dispatchNewListByCustomerPager(req *http.Request) (*http.Response, error) { + if p.srv.NewListByCustomerPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByCustomerPager not implemented")} + } + newListByCustomerPager := p.newListByCustomerPager.get(req) + if newListByCustomerPager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/customers/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/products` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + customerNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("customerName")]) + if err != nil { + return nil, err + } + resp := p.srv.NewListByCustomerPager(billingAccountNameParam, customerNameParam, nil) + newListByCustomerPager = &resp + p.newListByCustomerPager.add(req, newListByCustomerPager) + server.PagerResponderInjectNextLinks(newListByCustomerPager, req, func(page *armbilling.ProductsClientListByCustomerResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByCustomerPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + p.newListByCustomerPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByCustomerPager) { + p.newListByCustomerPager.remove(req) + } + return resp, nil +} + +func (p *ProductsServerTransport) dispatchNewListByInvoiceSectionPager(req *http.Request) (*http.Response, error) { + if p.srv.NewListByInvoiceSectionPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByInvoiceSectionPager not implemented")} + } + newListByInvoiceSectionPager := p.newListByInvoiceSectionPager.get(req) + if newListByInvoiceSectionPager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/invoiceSections/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/products` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + invoiceSectionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("invoiceSectionName")]) + if err != nil { + return nil, err + } + filterUnescaped, err := url.QueryUnescape(qp.Get("$filter")) + if err != nil { + return nil, err + } + filterParam := getOptional(filterUnescaped) + var options *armbilling.ProductsClientListByInvoiceSectionOptions + if filterParam != nil { + options = &armbilling.ProductsClientListByInvoiceSectionOptions{ + Filter: filterParam, + } + } + resp := p.srv.NewListByInvoiceSectionPager(billingAccountNameParam, billingProfileNameParam, invoiceSectionNameParam, options) + newListByInvoiceSectionPager = &resp + p.newListByInvoiceSectionPager.add(req, newListByInvoiceSectionPager) + server.PagerResponderInjectNextLinks(newListByInvoiceSectionPager, req, func(page *armbilling.ProductsClientListByInvoiceSectionResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByInvoiceSectionPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + p.newListByInvoiceSectionPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByInvoiceSectionPager) { + p.newListByInvoiceSectionPager.remove(req) + } + return resp, nil +} + +func (p *ProductsServerTransport) dispatchMove(req *http.Request) (*http.Response, error) { + if p.srv.Move == nil { + return nil, &nonRetriableError{errors.New("fake for method Move not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/products/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/move` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbilling.TransferProductRequestProperties](req) + if err != nil { + return nil, err + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + productNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("productName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.Move(req.Context(), billingAccountNameParam, productNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK, http.StatusAccepted}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Product, req) + if err != nil { + return nil, err + } + if val := server.GetResponse(respr).Location; val != nil { + resp.Header.Set("Location", *val) + } + if val := server.GetResponse(respr).RetryAfter; val != nil { + resp.Header.Set("Retry-After", strconv.FormatInt(int64(*val), 10)) + } + return resp, nil +} + +func (p *ProductsServerTransport) dispatchUpdate(req *http.Request) (*http.Response, error) { + if p.srv.Update == nil { + return nil, &nonRetriableError{errors.New("fake for method Update not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/products/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbilling.Product](req) + if err != nil { + return nil, err + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + productNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("productName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.Update(req.Context(), billingAccountNameParam, productNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Product, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (p *ProductsServerTransport) dispatchValidateMove(req *http.Request) (*http.Response, error) { + if p.srv.ValidateMove == nil { + return nil, &nonRetriableError{errors.New("fake for method ValidateMove not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/products/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/validateMoveEligibility` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbilling.TransferProductRequestProperties](req) + if err != nil { + return nil, err + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + productNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("productName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.ValidateMove(req.Context(), billingAccountNameParam, productNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ValidateProductTransferEligibilityResult, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/profiles_server.go b/sdk/resourcemanager/billing/armbilling/fake/profiles_server.go new file mode 100644 index 000000000000..da4f83dba8f6 --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/profiles_server.go @@ -0,0 +1,228 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling" + "net/http" + "net/url" + "regexp" +) + +// ProfilesServer is a fake server for instances of the armbilling.ProfilesClient type. +type ProfilesServer struct { + // BeginCreateOrUpdate is the fake for method ProfilesClient.BeginCreateOrUpdate + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginCreateOrUpdate func(ctx context.Context, billingAccountName string, billingProfileName string, parameters armbilling.Profile, options *armbilling.ProfilesClientBeginCreateOrUpdateOptions) (resp azfake.PollerResponder[armbilling.ProfilesClientCreateOrUpdateResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method ProfilesClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, billingAccountName string, billingProfileName string, options *armbilling.ProfilesClientGetOptions) (resp azfake.Responder[armbilling.ProfilesClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByBillingAccountPager is the fake for method ProfilesClient.NewListByBillingAccountPager + // HTTP status codes to indicate success: http.StatusOK + NewListByBillingAccountPager func(billingAccountName string, options *armbilling.ProfilesClientListByBillingAccountOptions) (resp azfake.PagerResponder[armbilling.ProfilesClientListByBillingAccountResponse]) +} + +// NewProfilesServerTransport creates a new instance of ProfilesServerTransport with the provided implementation. +// The returned ProfilesServerTransport instance is connected to an instance of armbilling.ProfilesClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewProfilesServerTransport(srv *ProfilesServer) *ProfilesServerTransport { + return &ProfilesServerTransport{ + srv: srv, + beginCreateOrUpdate: newTracker[azfake.PollerResponder[armbilling.ProfilesClientCreateOrUpdateResponse]](), + newListByBillingAccountPager: newTracker[azfake.PagerResponder[armbilling.ProfilesClientListByBillingAccountResponse]](), + } +} + +// ProfilesServerTransport connects instances of armbilling.ProfilesClient to instances of ProfilesServer. +// Don't use this type directly, use NewProfilesServerTransport instead. +type ProfilesServerTransport struct { + srv *ProfilesServer + beginCreateOrUpdate *tracker[azfake.PollerResponder[armbilling.ProfilesClientCreateOrUpdateResponse]] + newListByBillingAccountPager *tracker[azfake.PagerResponder[armbilling.ProfilesClientListByBillingAccountResponse]] +} + +// Do implements the policy.Transporter interface for ProfilesServerTransport. +func (p *ProfilesServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "ProfilesClient.BeginCreateOrUpdate": + resp, err = p.dispatchBeginCreateOrUpdate(req) + case "ProfilesClient.Get": + resp, err = p.dispatchGet(req) + case "ProfilesClient.NewListByBillingAccountPager": + resp, err = p.dispatchNewListByBillingAccountPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (p *ProfilesServerTransport) dispatchBeginCreateOrUpdate(req *http.Request) (*http.Response, error) { + if p.srv.BeginCreateOrUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreateOrUpdate not implemented")} + } + beginCreateOrUpdate := p.beginCreateOrUpdate.get(req) + if beginCreateOrUpdate == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbilling.Profile](req) + if err != nil { + return nil, err + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.BeginCreateOrUpdate(req.Context(), billingAccountNameParam, billingProfileNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreateOrUpdate = &respr + p.beginCreateOrUpdate.add(req, beginCreateOrUpdate) + } + + resp, err := server.PollerResponderNext(beginCreateOrUpdate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + p.beginCreateOrUpdate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreateOrUpdate) { + p.beginCreateOrUpdate.remove(req) + } + + return resp, nil +} + +func (p *ProfilesServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if p.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + expandUnescaped, err := url.QueryUnescape(qp.Get("$expand")) + if err != nil { + return nil, err + } + expandParam := getOptional(expandUnescaped) + var options *armbilling.ProfilesClientGetOptions + if expandParam != nil { + options = &armbilling.ProfilesClientGetOptions{ + Expand: expandParam, + } + } + respr, errRespr := p.srv.Get(req.Context(), billingAccountNameParam, billingProfileNameParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Profile, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (p *ProfilesServerTransport) dispatchNewListByBillingAccountPager(req *http.Request) (*http.Response, error) { + if p.srv.NewListByBillingAccountPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByBillingAccountPager not implemented")} + } + newListByBillingAccountPager := p.newListByBillingAccountPager.get(req) + if newListByBillingAccountPager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + expandUnescaped, err := url.QueryUnescape(qp.Get("$expand")) + if err != nil { + return nil, err + } + expandParam := getOptional(expandUnescaped) + var options *armbilling.ProfilesClientListByBillingAccountOptions + if expandParam != nil { + options = &armbilling.ProfilesClientListByBillingAccountOptions{ + Expand: expandParam, + } + } + resp := p.srv.NewListByBillingAccountPager(billingAccountNameParam, options) + newListByBillingAccountPager = &resp + p.newListByBillingAccountPager.add(req, newListByBillingAccountPager) + server.PagerResponderInjectNextLinks(newListByBillingAccountPager, req, func(page *armbilling.ProfilesClientListByBillingAccountResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByBillingAccountPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + p.newListByBillingAccountPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByBillingAccountPager) { + p.newListByBillingAccountPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/property_server.go b/sdk/resourcemanager/billing/armbilling/fake/property_server.go new file mode 100644 index 000000000000..a8bd0dc73bfe --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/property_server.go @@ -0,0 +1,126 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling" + "net/http" + "regexp" +) + +// PropertyServer is a fake server for instances of the armbilling.PropertyClient type. +type PropertyServer struct { + // Get is the fake for method PropertyClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, options *armbilling.PropertyClientGetOptions) (resp azfake.Responder[armbilling.PropertyClientGetResponse], errResp azfake.ErrorResponder) + + // Update is the fake for method PropertyClient.Update + // HTTP status codes to indicate success: http.StatusOK + Update func(ctx context.Context, parameters armbilling.Property, options *armbilling.PropertyClientUpdateOptions) (resp azfake.Responder[armbilling.PropertyClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewPropertyServerTransport creates a new instance of PropertyServerTransport with the provided implementation. +// The returned PropertyServerTransport instance is connected to an instance of armbilling.PropertyClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewPropertyServerTransport(srv *PropertyServer) *PropertyServerTransport { + return &PropertyServerTransport{srv: srv} +} + +// PropertyServerTransport connects instances of armbilling.PropertyClient to instances of PropertyServer. +// Don't use this type directly, use NewPropertyServerTransport instead. +type PropertyServerTransport struct { + srv *PropertyServer +} + +// Do implements the policy.Transporter interface for PropertyServerTransport. +func (p *PropertyServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "PropertyClient.Get": + resp, err = p.dispatchGet(req) + case "PropertyClient.Update": + resp, err = p.dispatchUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (p *PropertyServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if p.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Billing/billingProperty/default` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + respr, errRespr := p.srv.Get(req.Context(), nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Property, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (p *PropertyServerTransport) dispatchUpdate(req *http.Request) (*http.Response, error) { + if p.srv.Update == nil { + return nil, &nonRetriableError{errors.New("fake for method Update not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Billing/billingProperty/default` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbilling.Property](req) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.Update(req.Context(), body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Property, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/reservations_server.go b/sdk/resourcemanager/billing/armbilling/fake/reservations_server.go new file mode 100644 index 000000000000..2c4ba1fdcb75 --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/reservations_server.go @@ -0,0 +1,217 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling" + "net/http" + "net/url" + "regexp" +) + +// ReservationsServer is a fake server for instances of the armbilling.ReservationsClient type. +type ReservationsServer struct { + // NewListByBillingAccountPager is the fake for method ReservationsClient.NewListByBillingAccountPager + // HTTP status codes to indicate success: http.StatusOK + NewListByBillingAccountPager func(billingAccountName string, options *armbilling.ReservationsClientListByBillingAccountOptions) (resp azfake.PagerResponder[armbilling.ReservationsClientListByBillingAccountResponse]) + + // NewListByBillingProfilePager is the fake for method ReservationsClient.NewListByBillingProfilePager + // HTTP status codes to indicate success: http.StatusOK + NewListByBillingProfilePager func(billingAccountName string, billingProfileName string, options *armbilling.ReservationsClientListByBillingProfileOptions) (resp azfake.PagerResponder[armbilling.ReservationsClientListByBillingProfileResponse]) +} + +// NewReservationsServerTransport creates a new instance of ReservationsServerTransport with the provided implementation. +// The returned ReservationsServerTransport instance is connected to an instance of armbilling.ReservationsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewReservationsServerTransport(srv *ReservationsServer) *ReservationsServerTransport { + return &ReservationsServerTransport{ + srv: srv, + newListByBillingAccountPager: newTracker[azfake.PagerResponder[armbilling.ReservationsClientListByBillingAccountResponse]](), + newListByBillingProfilePager: newTracker[azfake.PagerResponder[armbilling.ReservationsClientListByBillingProfileResponse]](), + } +} + +// ReservationsServerTransport connects instances of armbilling.ReservationsClient to instances of ReservationsServer. +// Don't use this type directly, use NewReservationsServerTransport instead. +type ReservationsServerTransport struct { + srv *ReservationsServer + newListByBillingAccountPager *tracker[azfake.PagerResponder[armbilling.ReservationsClientListByBillingAccountResponse]] + newListByBillingProfilePager *tracker[azfake.PagerResponder[armbilling.ReservationsClientListByBillingProfileResponse]] +} + +// Do implements the policy.Transporter interface for ReservationsServerTransport. +func (r *ReservationsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "ReservationsClient.NewListByBillingAccountPager": + resp, err = r.dispatchNewListByBillingAccountPager(req) + case "ReservationsClient.NewListByBillingProfilePager": + resp, err = r.dispatchNewListByBillingProfilePager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (r *ReservationsServerTransport) dispatchNewListByBillingAccountPager(req *http.Request) (*http.Response, error) { + if r.srv.NewListByBillingAccountPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByBillingAccountPager not implemented")} + } + newListByBillingAccountPager := r.newListByBillingAccountPager.get(req) + if newListByBillingAccountPager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/reservations` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + filterUnescaped, err := url.QueryUnescape(qp.Get("$filter")) + if err != nil { + return nil, err + } + filterParam := getOptional(filterUnescaped) + orderbyUnescaped, err := url.QueryUnescape(qp.Get("$orderby")) + if err != nil { + return nil, err + } + orderbyParam := getOptional(orderbyUnescaped) + refreshSummaryUnescaped, err := url.QueryUnescape(qp.Get("refreshSummary")) + if err != nil { + return nil, err + } + refreshSummaryParam := getOptional(refreshSummaryUnescaped) + selectedStateUnescaped, err := url.QueryUnescape(qp.Get("selectedState")) + if err != nil { + return nil, err + } + selectedStateParam := getOptional(selectedStateUnescaped) + var options *armbilling.ReservationsClientListByBillingAccountOptions + if filterParam != nil || orderbyParam != nil || refreshSummaryParam != nil || selectedStateParam != nil { + options = &armbilling.ReservationsClientListByBillingAccountOptions{ + Filter: filterParam, + Orderby: orderbyParam, + RefreshSummary: refreshSummaryParam, + SelectedState: selectedStateParam, + } + } + resp := r.srv.NewListByBillingAccountPager(billingAccountNameParam, options) + newListByBillingAccountPager = &resp + r.newListByBillingAccountPager.add(req, newListByBillingAccountPager) + server.PagerResponderInjectNextLinks(newListByBillingAccountPager, req, func(page *armbilling.ReservationsClientListByBillingAccountResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByBillingAccountPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + r.newListByBillingAccountPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByBillingAccountPager) { + r.newListByBillingAccountPager.remove(req) + } + return resp, nil +} + +func (r *ReservationsServerTransport) dispatchNewListByBillingProfilePager(req *http.Request) (*http.Response, error) { + if r.srv.NewListByBillingProfilePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByBillingProfilePager not implemented")} + } + newListByBillingProfilePager := r.newListByBillingProfilePager.get(req) + if newListByBillingProfilePager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/reservations` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + filterUnescaped, err := url.QueryUnescape(qp.Get("$filter")) + if err != nil { + return nil, err + } + filterParam := getOptional(filterUnescaped) + orderbyUnescaped, err := url.QueryUnescape(qp.Get("$orderby")) + if err != nil { + return nil, err + } + orderbyParam := getOptional(orderbyUnescaped) + refreshSummaryUnescaped, err := url.QueryUnescape(qp.Get("refreshSummary")) + if err != nil { + return nil, err + } + refreshSummaryParam := getOptional(refreshSummaryUnescaped) + selectedStateUnescaped, err := url.QueryUnescape(qp.Get("selectedState")) + if err != nil { + return nil, err + } + selectedStateParam := getOptional(selectedStateUnescaped) + var options *armbilling.ReservationsClientListByBillingProfileOptions + if filterParam != nil || orderbyParam != nil || refreshSummaryParam != nil || selectedStateParam != nil { + options = &armbilling.ReservationsClientListByBillingProfileOptions{ + Filter: filterParam, + Orderby: orderbyParam, + RefreshSummary: refreshSummaryParam, + SelectedState: selectedStateParam, + } + } + resp := r.srv.NewListByBillingProfilePager(billingAccountNameParam, billingProfileNameParam, options) + newListByBillingProfilePager = &resp + r.newListByBillingProfilePager.add(req, newListByBillingProfilePager) + server.PagerResponderInjectNextLinks(newListByBillingProfilePager, req, func(page *armbilling.ReservationsClientListByBillingProfileResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByBillingProfilePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + r.newListByBillingProfilePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByBillingProfilePager) { + r.newListByBillingProfilePager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/roleassignments_server.go b/sdk/resourcemanager/billing/armbilling/fake/roleassignments_server.go new file mode 100644 index 000000000000..190969679115 --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/roleassignments_server.go @@ -0,0 +1,469 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling" + "net/http" + "net/url" + "regexp" +) + +// RoleAssignmentsServer is a fake server for instances of the armbilling.RoleAssignmentsClient type. +type RoleAssignmentsServer struct { + // DeleteByBillingAccount is the fake for method RoleAssignmentsClient.DeleteByBillingAccount + // HTTP status codes to indicate success: http.StatusOK + DeleteByBillingAccount func(ctx context.Context, billingAccountName string, billingRoleAssignmentName string, options *armbilling.RoleAssignmentsClientDeleteByBillingAccountOptions) (resp azfake.Responder[armbilling.RoleAssignmentsClientDeleteByBillingAccountResponse], errResp azfake.ErrorResponder) + + // DeleteByBillingProfile is the fake for method RoleAssignmentsClient.DeleteByBillingProfile + // HTTP status codes to indicate success: http.StatusOK + DeleteByBillingProfile func(ctx context.Context, billingAccountName string, billingProfileName string, billingRoleAssignmentName string, options *armbilling.RoleAssignmentsClientDeleteByBillingProfileOptions) (resp azfake.Responder[armbilling.RoleAssignmentsClientDeleteByBillingProfileResponse], errResp azfake.ErrorResponder) + + // DeleteByInvoiceSection is the fake for method RoleAssignmentsClient.DeleteByInvoiceSection + // HTTP status codes to indicate success: http.StatusOK + DeleteByInvoiceSection func(ctx context.Context, billingAccountName string, billingProfileName string, invoiceSectionName string, billingRoleAssignmentName string, options *armbilling.RoleAssignmentsClientDeleteByInvoiceSectionOptions) (resp azfake.Responder[armbilling.RoleAssignmentsClientDeleteByInvoiceSectionResponse], errResp azfake.ErrorResponder) + + // GetByBillingAccount is the fake for method RoleAssignmentsClient.GetByBillingAccount + // HTTP status codes to indicate success: http.StatusOK + GetByBillingAccount func(ctx context.Context, billingAccountName string, billingRoleAssignmentName string, options *armbilling.RoleAssignmentsClientGetByBillingAccountOptions) (resp azfake.Responder[armbilling.RoleAssignmentsClientGetByBillingAccountResponse], errResp azfake.ErrorResponder) + + // GetByBillingProfile is the fake for method RoleAssignmentsClient.GetByBillingProfile + // HTTP status codes to indicate success: http.StatusOK + GetByBillingProfile func(ctx context.Context, billingAccountName string, billingProfileName string, billingRoleAssignmentName string, options *armbilling.RoleAssignmentsClientGetByBillingProfileOptions) (resp azfake.Responder[armbilling.RoleAssignmentsClientGetByBillingProfileResponse], errResp azfake.ErrorResponder) + + // GetByInvoiceSection is the fake for method RoleAssignmentsClient.GetByInvoiceSection + // HTTP status codes to indicate success: http.StatusOK + GetByInvoiceSection func(ctx context.Context, billingAccountName string, billingProfileName string, invoiceSectionName string, billingRoleAssignmentName string, options *armbilling.RoleAssignmentsClientGetByInvoiceSectionOptions) (resp azfake.Responder[armbilling.RoleAssignmentsClientGetByInvoiceSectionResponse], errResp azfake.ErrorResponder) + + // NewListByBillingAccountPager is the fake for method RoleAssignmentsClient.NewListByBillingAccountPager + // HTTP status codes to indicate success: http.StatusOK + NewListByBillingAccountPager func(billingAccountName string, options *armbilling.RoleAssignmentsClientListByBillingAccountOptions) (resp azfake.PagerResponder[armbilling.RoleAssignmentsClientListByBillingAccountResponse]) + + // NewListByBillingProfilePager is the fake for method RoleAssignmentsClient.NewListByBillingProfilePager + // HTTP status codes to indicate success: http.StatusOK + NewListByBillingProfilePager func(billingAccountName string, billingProfileName string, options *armbilling.RoleAssignmentsClientListByBillingProfileOptions) (resp azfake.PagerResponder[armbilling.RoleAssignmentsClientListByBillingProfileResponse]) + + // NewListByInvoiceSectionPager is the fake for method RoleAssignmentsClient.NewListByInvoiceSectionPager + // HTTP status codes to indicate success: http.StatusOK + NewListByInvoiceSectionPager func(billingAccountName string, billingProfileName string, invoiceSectionName string, options *armbilling.RoleAssignmentsClientListByInvoiceSectionOptions) (resp azfake.PagerResponder[armbilling.RoleAssignmentsClientListByInvoiceSectionResponse]) +} + +// NewRoleAssignmentsServerTransport creates a new instance of RoleAssignmentsServerTransport with the provided implementation. +// The returned RoleAssignmentsServerTransport instance is connected to an instance of armbilling.RoleAssignmentsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewRoleAssignmentsServerTransport(srv *RoleAssignmentsServer) *RoleAssignmentsServerTransport { + return &RoleAssignmentsServerTransport{ + srv: srv, + newListByBillingAccountPager: newTracker[azfake.PagerResponder[armbilling.RoleAssignmentsClientListByBillingAccountResponse]](), + newListByBillingProfilePager: newTracker[azfake.PagerResponder[armbilling.RoleAssignmentsClientListByBillingProfileResponse]](), + newListByInvoiceSectionPager: newTracker[azfake.PagerResponder[armbilling.RoleAssignmentsClientListByInvoiceSectionResponse]](), + } +} + +// RoleAssignmentsServerTransport connects instances of armbilling.RoleAssignmentsClient to instances of RoleAssignmentsServer. +// Don't use this type directly, use NewRoleAssignmentsServerTransport instead. +type RoleAssignmentsServerTransport struct { + srv *RoleAssignmentsServer + newListByBillingAccountPager *tracker[azfake.PagerResponder[armbilling.RoleAssignmentsClientListByBillingAccountResponse]] + newListByBillingProfilePager *tracker[azfake.PagerResponder[armbilling.RoleAssignmentsClientListByBillingProfileResponse]] + newListByInvoiceSectionPager *tracker[azfake.PagerResponder[armbilling.RoleAssignmentsClientListByInvoiceSectionResponse]] +} + +// Do implements the policy.Transporter interface for RoleAssignmentsServerTransport. +func (r *RoleAssignmentsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "RoleAssignmentsClient.DeleteByBillingAccount": + resp, err = r.dispatchDeleteByBillingAccount(req) + case "RoleAssignmentsClient.DeleteByBillingProfile": + resp, err = r.dispatchDeleteByBillingProfile(req) + case "RoleAssignmentsClient.DeleteByInvoiceSection": + resp, err = r.dispatchDeleteByInvoiceSection(req) + case "RoleAssignmentsClient.GetByBillingAccount": + resp, err = r.dispatchGetByBillingAccount(req) + case "RoleAssignmentsClient.GetByBillingProfile": + resp, err = r.dispatchGetByBillingProfile(req) + case "RoleAssignmentsClient.GetByInvoiceSection": + resp, err = r.dispatchGetByInvoiceSection(req) + case "RoleAssignmentsClient.NewListByBillingAccountPager": + resp, err = r.dispatchNewListByBillingAccountPager(req) + case "RoleAssignmentsClient.NewListByBillingProfilePager": + resp, err = r.dispatchNewListByBillingProfilePager(req) + case "RoleAssignmentsClient.NewListByInvoiceSectionPager": + resp, err = r.dispatchNewListByInvoiceSectionPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (r *RoleAssignmentsServerTransport) dispatchDeleteByBillingAccount(req *http.Request) (*http.Response, error) { + if r.srv.DeleteByBillingAccount == nil { + return nil, &nonRetriableError{errors.New("fake for method DeleteByBillingAccount not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingRoleAssignments/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingRoleAssignmentNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingRoleAssignmentName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.DeleteByBillingAccount(req.Context(), billingAccountNameParam, billingRoleAssignmentNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).RoleAssignment, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (r *RoleAssignmentsServerTransport) dispatchDeleteByBillingProfile(req *http.Request) (*http.Response, error) { + if r.srv.DeleteByBillingProfile == nil { + return nil, &nonRetriableError{errors.New("fake for method DeleteByBillingProfile not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingRoleAssignments/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + billingRoleAssignmentNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingRoleAssignmentName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.DeleteByBillingProfile(req.Context(), billingAccountNameParam, billingProfileNameParam, billingRoleAssignmentNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).RoleAssignment, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (r *RoleAssignmentsServerTransport) dispatchDeleteByInvoiceSection(req *http.Request) (*http.Response, error) { + if r.srv.DeleteByInvoiceSection == nil { + return nil, &nonRetriableError{errors.New("fake for method DeleteByInvoiceSection not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/invoiceSections/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingRoleAssignments/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + invoiceSectionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("invoiceSectionName")]) + if err != nil { + return nil, err + } + billingRoleAssignmentNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingRoleAssignmentName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.DeleteByInvoiceSection(req.Context(), billingAccountNameParam, billingProfileNameParam, invoiceSectionNameParam, billingRoleAssignmentNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).RoleAssignment, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (r *RoleAssignmentsServerTransport) dispatchGetByBillingAccount(req *http.Request) (*http.Response, error) { + if r.srv.GetByBillingAccount == nil { + return nil, &nonRetriableError{errors.New("fake for method GetByBillingAccount not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingRoleAssignments/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingRoleAssignmentNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingRoleAssignmentName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.GetByBillingAccount(req.Context(), billingAccountNameParam, billingRoleAssignmentNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).RoleAssignment, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (r *RoleAssignmentsServerTransport) dispatchGetByBillingProfile(req *http.Request) (*http.Response, error) { + if r.srv.GetByBillingProfile == nil { + return nil, &nonRetriableError{errors.New("fake for method GetByBillingProfile not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingRoleAssignments/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + billingRoleAssignmentNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingRoleAssignmentName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.GetByBillingProfile(req.Context(), billingAccountNameParam, billingProfileNameParam, billingRoleAssignmentNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).RoleAssignment, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (r *RoleAssignmentsServerTransport) dispatchGetByInvoiceSection(req *http.Request) (*http.Response, error) { + if r.srv.GetByInvoiceSection == nil { + return nil, &nonRetriableError{errors.New("fake for method GetByInvoiceSection not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/invoiceSections/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingRoleAssignments/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + invoiceSectionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("invoiceSectionName")]) + if err != nil { + return nil, err + } + billingRoleAssignmentNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingRoleAssignmentName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.GetByInvoiceSection(req.Context(), billingAccountNameParam, billingProfileNameParam, invoiceSectionNameParam, billingRoleAssignmentNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).RoleAssignment, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (r *RoleAssignmentsServerTransport) dispatchNewListByBillingAccountPager(req *http.Request) (*http.Response, error) { + if r.srv.NewListByBillingAccountPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByBillingAccountPager not implemented")} + } + newListByBillingAccountPager := r.newListByBillingAccountPager.get(req) + if newListByBillingAccountPager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingRoleAssignments` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + resp := r.srv.NewListByBillingAccountPager(billingAccountNameParam, nil) + newListByBillingAccountPager = &resp + r.newListByBillingAccountPager.add(req, newListByBillingAccountPager) + server.PagerResponderInjectNextLinks(newListByBillingAccountPager, req, func(page *armbilling.RoleAssignmentsClientListByBillingAccountResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByBillingAccountPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + r.newListByBillingAccountPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByBillingAccountPager) { + r.newListByBillingAccountPager.remove(req) + } + return resp, nil +} + +func (r *RoleAssignmentsServerTransport) dispatchNewListByBillingProfilePager(req *http.Request) (*http.Response, error) { + if r.srv.NewListByBillingProfilePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByBillingProfilePager not implemented")} + } + newListByBillingProfilePager := r.newListByBillingProfilePager.get(req) + if newListByBillingProfilePager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingRoleAssignments` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + resp := r.srv.NewListByBillingProfilePager(billingAccountNameParam, billingProfileNameParam, nil) + newListByBillingProfilePager = &resp + r.newListByBillingProfilePager.add(req, newListByBillingProfilePager) + server.PagerResponderInjectNextLinks(newListByBillingProfilePager, req, func(page *armbilling.RoleAssignmentsClientListByBillingProfileResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByBillingProfilePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + r.newListByBillingProfilePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByBillingProfilePager) { + r.newListByBillingProfilePager.remove(req) + } + return resp, nil +} + +func (r *RoleAssignmentsServerTransport) dispatchNewListByInvoiceSectionPager(req *http.Request) (*http.Response, error) { + if r.srv.NewListByInvoiceSectionPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByInvoiceSectionPager not implemented")} + } + newListByInvoiceSectionPager := r.newListByInvoiceSectionPager.get(req) + if newListByInvoiceSectionPager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/invoiceSections/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingRoleAssignments` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + invoiceSectionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("invoiceSectionName")]) + if err != nil { + return nil, err + } + resp := r.srv.NewListByInvoiceSectionPager(billingAccountNameParam, billingProfileNameParam, invoiceSectionNameParam, nil) + newListByInvoiceSectionPager = &resp + r.newListByInvoiceSectionPager.add(req, newListByInvoiceSectionPager) + server.PagerResponderInjectNextLinks(newListByInvoiceSectionPager, req, func(page *armbilling.RoleAssignmentsClientListByInvoiceSectionResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByInvoiceSectionPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + r.newListByInvoiceSectionPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByInvoiceSectionPager) { + r.newListByInvoiceSectionPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/roledefinitions_server.go b/sdk/resourcemanager/billing/armbilling/fake/roledefinitions_server.go new file mode 100644 index 000000000000..325656f93b67 --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/roledefinitions_server.go @@ -0,0 +1,340 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling" + "net/http" + "net/url" + "regexp" +) + +// RoleDefinitionsServer is a fake server for instances of the armbilling.RoleDefinitionsClient type. +type RoleDefinitionsServer struct { + // GetByBillingAccount is the fake for method RoleDefinitionsClient.GetByBillingAccount + // HTTP status codes to indicate success: http.StatusOK + GetByBillingAccount func(ctx context.Context, billingAccountName string, billingRoleDefinitionName string, options *armbilling.RoleDefinitionsClientGetByBillingAccountOptions) (resp azfake.Responder[armbilling.RoleDefinitionsClientGetByBillingAccountResponse], errResp azfake.ErrorResponder) + + // GetByBillingProfile is the fake for method RoleDefinitionsClient.GetByBillingProfile + // HTTP status codes to indicate success: http.StatusOK + GetByBillingProfile func(ctx context.Context, billingAccountName string, billingProfileName string, billingRoleDefinitionName string, options *armbilling.RoleDefinitionsClientGetByBillingProfileOptions) (resp azfake.Responder[armbilling.RoleDefinitionsClientGetByBillingProfileResponse], errResp azfake.ErrorResponder) + + // GetByInvoiceSection is the fake for method RoleDefinitionsClient.GetByInvoiceSection + // HTTP status codes to indicate success: http.StatusOK + GetByInvoiceSection func(ctx context.Context, billingAccountName string, billingProfileName string, invoiceSectionName string, billingRoleDefinitionName string, options *armbilling.RoleDefinitionsClientGetByInvoiceSectionOptions) (resp azfake.Responder[armbilling.RoleDefinitionsClientGetByInvoiceSectionResponse], errResp azfake.ErrorResponder) + + // NewListByBillingAccountPager is the fake for method RoleDefinitionsClient.NewListByBillingAccountPager + // HTTP status codes to indicate success: http.StatusOK + NewListByBillingAccountPager func(billingAccountName string, options *armbilling.RoleDefinitionsClientListByBillingAccountOptions) (resp azfake.PagerResponder[armbilling.RoleDefinitionsClientListByBillingAccountResponse]) + + // NewListByBillingProfilePager is the fake for method RoleDefinitionsClient.NewListByBillingProfilePager + // HTTP status codes to indicate success: http.StatusOK + NewListByBillingProfilePager func(billingAccountName string, billingProfileName string, options *armbilling.RoleDefinitionsClientListByBillingProfileOptions) (resp azfake.PagerResponder[armbilling.RoleDefinitionsClientListByBillingProfileResponse]) + + // NewListByInvoiceSectionPager is the fake for method RoleDefinitionsClient.NewListByInvoiceSectionPager + // HTTP status codes to indicate success: http.StatusOK + NewListByInvoiceSectionPager func(billingAccountName string, billingProfileName string, invoiceSectionName string, options *armbilling.RoleDefinitionsClientListByInvoiceSectionOptions) (resp azfake.PagerResponder[armbilling.RoleDefinitionsClientListByInvoiceSectionResponse]) +} + +// NewRoleDefinitionsServerTransport creates a new instance of RoleDefinitionsServerTransport with the provided implementation. +// The returned RoleDefinitionsServerTransport instance is connected to an instance of armbilling.RoleDefinitionsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewRoleDefinitionsServerTransport(srv *RoleDefinitionsServer) *RoleDefinitionsServerTransport { + return &RoleDefinitionsServerTransport{ + srv: srv, + newListByBillingAccountPager: newTracker[azfake.PagerResponder[armbilling.RoleDefinitionsClientListByBillingAccountResponse]](), + newListByBillingProfilePager: newTracker[azfake.PagerResponder[armbilling.RoleDefinitionsClientListByBillingProfileResponse]](), + newListByInvoiceSectionPager: newTracker[azfake.PagerResponder[armbilling.RoleDefinitionsClientListByInvoiceSectionResponse]](), + } +} + +// RoleDefinitionsServerTransport connects instances of armbilling.RoleDefinitionsClient to instances of RoleDefinitionsServer. +// Don't use this type directly, use NewRoleDefinitionsServerTransport instead. +type RoleDefinitionsServerTransport struct { + srv *RoleDefinitionsServer + newListByBillingAccountPager *tracker[azfake.PagerResponder[armbilling.RoleDefinitionsClientListByBillingAccountResponse]] + newListByBillingProfilePager *tracker[azfake.PagerResponder[armbilling.RoleDefinitionsClientListByBillingProfileResponse]] + newListByInvoiceSectionPager *tracker[azfake.PagerResponder[armbilling.RoleDefinitionsClientListByInvoiceSectionResponse]] +} + +// Do implements the policy.Transporter interface for RoleDefinitionsServerTransport. +func (r *RoleDefinitionsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "RoleDefinitionsClient.GetByBillingAccount": + resp, err = r.dispatchGetByBillingAccount(req) + case "RoleDefinitionsClient.GetByBillingProfile": + resp, err = r.dispatchGetByBillingProfile(req) + case "RoleDefinitionsClient.GetByInvoiceSection": + resp, err = r.dispatchGetByInvoiceSection(req) + case "RoleDefinitionsClient.NewListByBillingAccountPager": + resp, err = r.dispatchNewListByBillingAccountPager(req) + case "RoleDefinitionsClient.NewListByBillingProfilePager": + resp, err = r.dispatchNewListByBillingProfilePager(req) + case "RoleDefinitionsClient.NewListByInvoiceSectionPager": + resp, err = r.dispatchNewListByInvoiceSectionPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (r *RoleDefinitionsServerTransport) dispatchGetByBillingAccount(req *http.Request) (*http.Response, error) { + if r.srv.GetByBillingAccount == nil { + return nil, &nonRetriableError{errors.New("fake for method GetByBillingAccount not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingRoleDefinitions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingRoleDefinitionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingRoleDefinitionName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.GetByBillingAccount(req.Context(), billingAccountNameParam, billingRoleDefinitionNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).RoleDefinition, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (r *RoleDefinitionsServerTransport) dispatchGetByBillingProfile(req *http.Request) (*http.Response, error) { + if r.srv.GetByBillingProfile == nil { + return nil, &nonRetriableError{errors.New("fake for method GetByBillingProfile not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingRoleDefinitions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + billingRoleDefinitionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingRoleDefinitionName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.GetByBillingProfile(req.Context(), billingAccountNameParam, billingProfileNameParam, billingRoleDefinitionNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).RoleDefinition, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (r *RoleDefinitionsServerTransport) dispatchGetByInvoiceSection(req *http.Request) (*http.Response, error) { + if r.srv.GetByInvoiceSection == nil { + return nil, &nonRetriableError{errors.New("fake for method GetByInvoiceSection not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/invoiceSections/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingRoleDefinitions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + invoiceSectionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("invoiceSectionName")]) + if err != nil { + return nil, err + } + billingRoleDefinitionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingRoleDefinitionName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.GetByInvoiceSection(req.Context(), billingAccountNameParam, billingProfileNameParam, invoiceSectionNameParam, billingRoleDefinitionNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).RoleDefinition, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (r *RoleDefinitionsServerTransport) dispatchNewListByBillingAccountPager(req *http.Request) (*http.Response, error) { + if r.srv.NewListByBillingAccountPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByBillingAccountPager not implemented")} + } + newListByBillingAccountPager := r.newListByBillingAccountPager.get(req) + if newListByBillingAccountPager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingRoleDefinitions` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + resp := r.srv.NewListByBillingAccountPager(billingAccountNameParam, nil) + newListByBillingAccountPager = &resp + r.newListByBillingAccountPager.add(req, newListByBillingAccountPager) + server.PagerResponderInjectNextLinks(newListByBillingAccountPager, req, func(page *armbilling.RoleDefinitionsClientListByBillingAccountResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByBillingAccountPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + r.newListByBillingAccountPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByBillingAccountPager) { + r.newListByBillingAccountPager.remove(req) + } + return resp, nil +} + +func (r *RoleDefinitionsServerTransport) dispatchNewListByBillingProfilePager(req *http.Request) (*http.Response, error) { + if r.srv.NewListByBillingProfilePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByBillingProfilePager not implemented")} + } + newListByBillingProfilePager := r.newListByBillingProfilePager.get(req) + if newListByBillingProfilePager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingRoleDefinitions` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + resp := r.srv.NewListByBillingProfilePager(billingAccountNameParam, billingProfileNameParam, nil) + newListByBillingProfilePager = &resp + r.newListByBillingProfilePager.add(req, newListByBillingProfilePager) + server.PagerResponderInjectNextLinks(newListByBillingProfilePager, req, func(page *armbilling.RoleDefinitionsClientListByBillingProfileResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByBillingProfilePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + r.newListByBillingProfilePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByBillingProfilePager) { + r.newListByBillingProfilePager.remove(req) + } + return resp, nil +} + +func (r *RoleDefinitionsServerTransport) dispatchNewListByInvoiceSectionPager(req *http.Request) (*http.Response, error) { + if r.srv.NewListByInvoiceSectionPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByInvoiceSectionPager not implemented")} + } + newListByInvoiceSectionPager := r.newListByInvoiceSectionPager.get(req) + if newListByInvoiceSectionPager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/invoiceSections/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingRoleDefinitions` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + invoiceSectionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("invoiceSectionName")]) + if err != nil { + return nil, err + } + resp := r.srv.NewListByInvoiceSectionPager(billingAccountNameParam, billingProfileNameParam, invoiceSectionNameParam, nil) + newListByInvoiceSectionPager = &resp + r.newListByInvoiceSectionPager.add(req, newListByInvoiceSectionPager) + server.PagerResponderInjectNextLinks(newListByInvoiceSectionPager, req, func(page *armbilling.RoleDefinitionsClientListByInvoiceSectionResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByInvoiceSectionPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + r.newListByInvoiceSectionPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByInvoiceSectionPager) { + r.newListByInvoiceSectionPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/server_factory.go b/sdk/resourcemanager/billing/armbilling/fake/server_factory.go new file mode 100644 index 000000000000..e9f984ff3850 --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/server_factory.go @@ -0,0 +1,187 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "net/http" + "strings" + "sync" +) + +// ServerFactory is a fake server for instances of the armbilling.ClientFactory type. +type ServerFactory struct { + AccountsServer AccountsServer + AddressServer AddressServer + AgreementsServer AgreementsServer + AvailableBalancesServer AvailableBalancesServer + CustomersServer CustomersServer + EnrollmentAccountsServer EnrollmentAccountsServer + InstructionsServer InstructionsServer + InvoiceSectionsServer InvoiceSectionsServer + InvoicesServer InvoicesServer + OperationsServer OperationsServer + PeriodsServer PeriodsServer + PermissionsServer PermissionsServer + PoliciesServer PoliciesServer + ProductsServer ProductsServer + ProfilesServer ProfilesServer + PropertyServer PropertyServer + ReservationsServer ReservationsServer + RoleAssignmentsServer RoleAssignmentsServer + RoleDefinitionsServer RoleDefinitionsServer + SubscriptionsServer SubscriptionsServer + TransactionsServer TransactionsServer +} + +// NewServerFactoryTransport creates a new instance of ServerFactoryTransport with the provided implementation. +// The returned ServerFactoryTransport instance is connected to an instance of armbilling.ClientFactory via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewServerFactoryTransport(srv *ServerFactory) *ServerFactoryTransport { + return &ServerFactoryTransport{ + srv: srv, + } +} + +// ServerFactoryTransport connects instances of armbilling.ClientFactory to instances of ServerFactory. +// Don't use this type directly, use NewServerFactoryTransport instead. +type ServerFactoryTransport struct { + srv *ServerFactory + trMu sync.Mutex + trAccountsServer *AccountsServerTransport + trAddressServer *AddressServerTransport + trAgreementsServer *AgreementsServerTransport + trAvailableBalancesServer *AvailableBalancesServerTransport + trCustomersServer *CustomersServerTransport + trEnrollmentAccountsServer *EnrollmentAccountsServerTransport + trInstructionsServer *InstructionsServerTransport + trInvoiceSectionsServer *InvoiceSectionsServerTransport + trInvoicesServer *InvoicesServerTransport + trOperationsServer *OperationsServerTransport + trPeriodsServer *PeriodsServerTransport + trPermissionsServer *PermissionsServerTransport + trPoliciesServer *PoliciesServerTransport + trProductsServer *ProductsServerTransport + trProfilesServer *ProfilesServerTransport + trPropertyServer *PropertyServerTransport + trReservationsServer *ReservationsServerTransport + trRoleAssignmentsServer *RoleAssignmentsServerTransport + trRoleDefinitionsServer *RoleDefinitionsServerTransport + trSubscriptionsServer *SubscriptionsServerTransport + trTransactionsServer *TransactionsServerTransport +} + +// Do implements the policy.Transporter interface for ServerFactoryTransport. +func (s *ServerFactoryTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + client := method[:strings.Index(method, ".")] + var resp *http.Response + var err error + + switch client { + case "AccountsClient": + initServer(s, &s.trAccountsServer, func() *AccountsServerTransport { return NewAccountsServerTransport(&s.srv.AccountsServer) }) + resp, err = s.trAccountsServer.Do(req) + case "AddressClient": + initServer(s, &s.trAddressServer, func() *AddressServerTransport { return NewAddressServerTransport(&s.srv.AddressServer) }) + resp, err = s.trAddressServer.Do(req) + case "AgreementsClient": + initServer(s, &s.trAgreementsServer, func() *AgreementsServerTransport { return NewAgreementsServerTransport(&s.srv.AgreementsServer) }) + resp, err = s.trAgreementsServer.Do(req) + case "AvailableBalancesClient": + initServer(s, &s.trAvailableBalancesServer, func() *AvailableBalancesServerTransport { + return NewAvailableBalancesServerTransport(&s.srv.AvailableBalancesServer) + }) + resp, err = s.trAvailableBalancesServer.Do(req) + case "CustomersClient": + initServer(s, &s.trCustomersServer, func() *CustomersServerTransport { return NewCustomersServerTransport(&s.srv.CustomersServer) }) + resp, err = s.trCustomersServer.Do(req) + case "EnrollmentAccountsClient": + initServer(s, &s.trEnrollmentAccountsServer, func() *EnrollmentAccountsServerTransport { + return NewEnrollmentAccountsServerTransport(&s.srv.EnrollmentAccountsServer) + }) + resp, err = s.trEnrollmentAccountsServer.Do(req) + case "InstructionsClient": + initServer(s, &s.trInstructionsServer, func() *InstructionsServerTransport { return NewInstructionsServerTransport(&s.srv.InstructionsServer) }) + resp, err = s.trInstructionsServer.Do(req) + case "InvoiceSectionsClient": + initServer(s, &s.trInvoiceSectionsServer, func() *InvoiceSectionsServerTransport { + return NewInvoiceSectionsServerTransport(&s.srv.InvoiceSectionsServer) + }) + resp, err = s.trInvoiceSectionsServer.Do(req) + case "InvoicesClient": + initServer(s, &s.trInvoicesServer, func() *InvoicesServerTransport { return NewInvoicesServerTransport(&s.srv.InvoicesServer) }) + resp, err = s.trInvoicesServer.Do(req) + case "OperationsClient": + initServer(s, &s.trOperationsServer, func() *OperationsServerTransport { return NewOperationsServerTransport(&s.srv.OperationsServer) }) + resp, err = s.trOperationsServer.Do(req) + case "PeriodsClient": + initServer(s, &s.trPeriodsServer, func() *PeriodsServerTransport { return NewPeriodsServerTransport(&s.srv.PeriodsServer) }) + resp, err = s.trPeriodsServer.Do(req) + case "PermissionsClient": + initServer(s, &s.trPermissionsServer, func() *PermissionsServerTransport { return NewPermissionsServerTransport(&s.srv.PermissionsServer) }) + resp, err = s.trPermissionsServer.Do(req) + case "PoliciesClient": + initServer(s, &s.trPoliciesServer, func() *PoliciesServerTransport { return NewPoliciesServerTransport(&s.srv.PoliciesServer) }) + resp, err = s.trPoliciesServer.Do(req) + case "ProductsClient": + initServer(s, &s.trProductsServer, func() *ProductsServerTransport { return NewProductsServerTransport(&s.srv.ProductsServer) }) + resp, err = s.trProductsServer.Do(req) + case "ProfilesClient": + initServer(s, &s.trProfilesServer, func() *ProfilesServerTransport { return NewProfilesServerTransport(&s.srv.ProfilesServer) }) + resp, err = s.trProfilesServer.Do(req) + case "PropertyClient": + initServer(s, &s.trPropertyServer, func() *PropertyServerTransport { return NewPropertyServerTransport(&s.srv.PropertyServer) }) + resp, err = s.trPropertyServer.Do(req) + case "ReservationsClient": + initServer(s, &s.trReservationsServer, func() *ReservationsServerTransport { return NewReservationsServerTransport(&s.srv.ReservationsServer) }) + resp, err = s.trReservationsServer.Do(req) + case "RoleAssignmentsClient": + initServer(s, &s.trRoleAssignmentsServer, func() *RoleAssignmentsServerTransport { + return NewRoleAssignmentsServerTransport(&s.srv.RoleAssignmentsServer) + }) + resp, err = s.trRoleAssignmentsServer.Do(req) + case "RoleDefinitionsClient": + initServer(s, &s.trRoleDefinitionsServer, func() *RoleDefinitionsServerTransport { + return NewRoleDefinitionsServerTransport(&s.srv.RoleDefinitionsServer) + }) + resp, err = s.trRoleDefinitionsServer.Do(req) + case "SubscriptionsClient": + initServer(s, &s.trSubscriptionsServer, func() *SubscriptionsServerTransport { + return NewSubscriptionsServerTransport(&s.srv.SubscriptionsServer) + }) + resp, err = s.trSubscriptionsServer.Do(req) + case "TransactionsClient": + initServer(s, &s.trTransactionsServer, func() *TransactionsServerTransport { return NewTransactionsServerTransport(&s.srv.TransactionsServer) }) + resp, err = s.trTransactionsServer.Do(req) + default: + err = fmt.Errorf("unhandled client %s", client) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func initServer[T any](s *ServerFactoryTransport, dst **T, src func() *T) { + s.trMu.Lock() + if *dst == nil { + *dst = src() + } + s.trMu.Unlock() +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/subscriptions_server.go b/sdk/resourcemanager/billing/armbilling/fake/subscriptions_server.go new file mode 100644 index 000000000000..47855f9a49da --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/subscriptions_server.go @@ -0,0 +1,425 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling" + "net/http" + "net/url" + "regexp" +) + +// SubscriptionsServer is a fake server for instances of the armbilling.SubscriptionsClient type. +type SubscriptionsServer struct { + // Get is the fake for method SubscriptionsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, billingAccountName string, options *armbilling.SubscriptionsClientGetOptions) (resp azfake.Responder[armbilling.SubscriptionsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByBillingAccountPager is the fake for method SubscriptionsClient.NewListByBillingAccountPager + // HTTP status codes to indicate success: http.StatusOK + NewListByBillingAccountPager func(billingAccountName string, options *armbilling.SubscriptionsClientListByBillingAccountOptions) (resp azfake.PagerResponder[armbilling.SubscriptionsClientListByBillingAccountResponse]) + + // NewListByBillingProfilePager is the fake for method SubscriptionsClient.NewListByBillingProfilePager + // HTTP status codes to indicate success: http.StatusOK + NewListByBillingProfilePager func(billingAccountName string, billingProfileName string, options *armbilling.SubscriptionsClientListByBillingProfileOptions) (resp azfake.PagerResponder[armbilling.SubscriptionsClientListByBillingProfileResponse]) + + // NewListByCustomerPager is the fake for method SubscriptionsClient.NewListByCustomerPager + // HTTP status codes to indicate success: http.StatusOK + NewListByCustomerPager func(billingAccountName string, customerName string, options *armbilling.SubscriptionsClientListByCustomerOptions) (resp azfake.PagerResponder[armbilling.SubscriptionsClientListByCustomerResponse]) + + // NewListByInvoiceSectionPager is the fake for method SubscriptionsClient.NewListByInvoiceSectionPager + // HTTP status codes to indicate success: http.StatusOK + NewListByInvoiceSectionPager func(billingAccountName string, billingProfileName string, invoiceSectionName string, options *armbilling.SubscriptionsClientListByInvoiceSectionOptions) (resp azfake.PagerResponder[armbilling.SubscriptionsClientListByInvoiceSectionResponse]) + + // BeginMove is the fake for method SubscriptionsClient.BeginMove + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginMove func(ctx context.Context, billingAccountName string, parameters armbilling.TransferBillingSubscriptionRequestProperties, options *armbilling.SubscriptionsClientBeginMoveOptions) (resp azfake.PollerResponder[armbilling.SubscriptionsClientMoveResponse], errResp azfake.ErrorResponder) + + // Update is the fake for method SubscriptionsClient.Update + // HTTP status codes to indicate success: http.StatusOK + Update func(ctx context.Context, billingAccountName string, parameters armbilling.Subscription, options *armbilling.SubscriptionsClientUpdateOptions) (resp azfake.Responder[armbilling.SubscriptionsClientUpdateResponse], errResp azfake.ErrorResponder) + + // ValidateMove is the fake for method SubscriptionsClient.ValidateMove + // HTTP status codes to indicate success: http.StatusOK + ValidateMove func(ctx context.Context, billingAccountName string, parameters armbilling.TransferBillingSubscriptionRequestProperties, options *armbilling.SubscriptionsClientValidateMoveOptions) (resp azfake.Responder[armbilling.SubscriptionsClientValidateMoveResponse], errResp azfake.ErrorResponder) +} + +// NewSubscriptionsServerTransport creates a new instance of SubscriptionsServerTransport with the provided implementation. +// The returned SubscriptionsServerTransport instance is connected to an instance of armbilling.SubscriptionsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewSubscriptionsServerTransport(srv *SubscriptionsServer) *SubscriptionsServerTransport { + return &SubscriptionsServerTransport{ + srv: srv, + newListByBillingAccountPager: newTracker[azfake.PagerResponder[armbilling.SubscriptionsClientListByBillingAccountResponse]](), + newListByBillingProfilePager: newTracker[azfake.PagerResponder[armbilling.SubscriptionsClientListByBillingProfileResponse]](), + newListByCustomerPager: newTracker[azfake.PagerResponder[armbilling.SubscriptionsClientListByCustomerResponse]](), + newListByInvoiceSectionPager: newTracker[azfake.PagerResponder[armbilling.SubscriptionsClientListByInvoiceSectionResponse]](), + beginMove: newTracker[azfake.PollerResponder[armbilling.SubscriptionsClientMoveResponse]](), + } +} + +// SubscriptionsServerTransport connects instances of armbilling.SubscriptionsClient to instances of SubscriptionsServer. +// Don't use this type directly, use NewSubscriptionsServerTransport instead. +type SubscriptionsServerTransport struct { + srv *SubscriptionsServer + newListByBillingAccountPager *tracker[azfake.PagerResponder[armbilling.SubscriptionsClientListByBillingAccountResponse]] + newListByBillingProfilePager *tracker[azfake.PagerResponder[armbilling.SubscriptionsClientListByBillingProfileResponse]] + newListByCustomerPager *tracker[azfake.PagerResponder[armbilling.SubscriptionsClientListByCustomerResponse]] + newListByInvoiceSectionPager *tracker[azfake.PagerResponder[armbilling.SubscriptionsClientListByInvoiceSectionResponse]] + beginMove *tracker[azfake.PollerResponder[armbilling.SubscriptionsClientMoveResponse]] +} + +// Do implements the policy.Transporter interface for SubscriptionsServerTransport. +func (s *SubscriptionsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "SubscriptionsClient.Get": + resp, err = s.dispatchGet(req) + case "SubscriptionsClient.NewListByBillingAccountPager": + resp, err = s.dispatchNewListByBillingAccountPager(req) + case "SubscriptionsClient.NewListByBillingProfilePager": + resp, err = s.dispatchNewListByBillingProfilePager(req) + case "SubscriptionsClient.NewListByCustomerPager": + resp, err = s.dispatchNewListByCustomerPager(req) + case "SubscriptionsClient.NewListByInvoiceSectionPager": + resp, err = s.dispatchNewListByInvoiceSectionPager(req) + case "SubscriptionsClient.BeginMove": + resp, err = s.dispatchBeginMove(req) + case "SubscriptionsClient.Update": + resp, err = s.dispatchUpdate(req) + case "SubscriptionsClient.ValidateMove": + resp, err = s.dispatchValidateMove(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (s *SubscriptionsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if s.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingSubscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + respr, errRespr := s.srv.Get(req.Context(), billingAccountNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Subscription, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (s *SubscriptionsServerTransport) dispatchNewListByBillingAccountPager(req *http.Request) (*http.Response, error) { + if s.srv.NewListByBillingAccountPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByBillingAccountPager not implemented")} + } + newListByBillingAccountPager := s.newListByBillingAccountPager.get(req) + if newListByBillingAccountPager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingSubscriptions` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + resp := s.srv.NewListByBillingAccountPager(billingAccountNameParam, nil) + newListByBillingAccountPager = &resp + s.newListByBillingAccountPager.add(req, newListByBillingAccountPager) + server.PagerResponderInjectNextLinks(newListByBillingAccountPager, req, func(page *armbilling.SubscriptionsClientListByBillingAccountResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByBillingAccountPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + s.newListByBillingAccountPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByBillingAccountPager) { + s.newListByBillingAccountPager.remove(req) + } + return resp, nil +} + +func (s *SubscriptionsServerTransport) dispatchNewListByBillingProfilePager(req *http.Request) (*http.Response, error) { + if s.srv.NewListByBillingProfilePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByBillingProfilePager not implemented")} + } + newListByBillingProfilePager := s.newListByBillingProfilePager.get(req) + if newListByBillingProfilePager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingSubscriptions` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + resp := s.srv.NewListByBillingProfilePager(billingAccountNameParam, billingProfileNameParam, nil) + newListByBillingProfilePager = &resp + s.newListByBillingProfilePager.add(req, newListByBillingProfilePager) + server.PagerResponderInjectNextLinks(newListByBillingProfilePager, req, func(page *armbilling.SubscriptionsClientListByBillingProfileResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByBillingProfilePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + s.newListByBillingProfilePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByBillingProfilePager) { + s.newListByBillingProfilePager.remove(req) + } + return resp, nil +} + +func (s *SubscriptionsServerTransport) dispatchNewListByCustomerPager(req *http.Request) (*http.Response, error) { + if s.srv.NewListByCustomerPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByCustomerPager not implemented")} + } + newListByCustomerPager := s.newListByCustomerPager.get(req) + if newListByCustomerPager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/customers/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingSubscriptions` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + customerNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("customerName")]) + if err != nil { + return nil, err + } + resp := s.srv.NewListByCustomerPager(billingAccountNameParam, customerNameParam, nil) + newListByCustomerPager = &resp + s.newListByCustomerPager.add(req, newListByCustomerPager) + server.PagerResponderInjectNextLinks(newListByCustomerPager, req, func(page *armbilling.SubscriptionsClientListByCustomerResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByCustomerPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + s.newListByCustomerPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByCustomerPager) { + s.newListByCustomerPager.remove(req) + } + return resp, nil +} + +func (s *SubscriptionsServerTransport) dispatchNewListByInvoiceSectionPager(req *http.Request) (*http.Response, error) { + if s.srv.NewListByInvoiceSectionPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByInvoiceSectionPager not implemented")} + } + newListByInvoiceSectionPager := s.newListByInvoiceSectionPager.get(req) + if newListByInvoiceSectionPager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingProfiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/invoiceSections/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingSubscriptions` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + billingProfileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingProfileName")]) + if err != nil { + return nil, err + } + invoiceSectionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("invoiceSectionName")]) + if err != nil { + return nil, err + } + resp := s.srv.NewListByInvoiceSectionPager(billingAccountNameParam, billingProfileNameParam, invoiceSectionNameParam, nil) + newListByInvoiceSectionPager = &resp + s.newListByInvoiceSectionPager.add(req, newListByInvoiceSectionPager) + server.PagerResponderInjectNextLinks(newListByInvoiceSectionPager, req, func(page *armbilling.SubscriptionsClientListByInvoiceSectionResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByInvoiceSectionPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + s.newListByInvoiceSectionPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByInvoiceSectionPager) { + s.newListByInvoiceSectionPager.remove(req) + } + return resp, nil +} + +func (s *SubscriptionsServerTransport) dispatchBeginMove(req *http.Request) (*http.Response, error) { + if s.srv.BeginMove == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginMove not implemented")} + } + beginMove := s.beginMove.get(req) + if beginMove == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingSubscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/move` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbilling.TransferBillingSubscriptionRequestProperties](req) + if err != nil { + return nil, err + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + respr, errRespr := s.srv.BeginMove(req.Context(), billingAccountNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginMove = &respr + s.beginMove.add(req, beginMove) + } + + resp, err := server.PollerResponderNext(beginMove, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + s.beginMove.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginMove) { + s.beginMove.remove(req) + } + + return resp, nil +} + +func (s *SubscriptionsServerTransport) dispatchUpdate(req *http.Request) (*http.Response, error) { + if s.srv.Update == nil { + return nil, &nonRetriableError{errors.New("fake for method Update not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingSubscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbilling.Subscription](req) + if err != nil { + return nil, err + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + respr, errRespr := s.srv.Update(req.Context(), billingAccountNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Subscription, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (s *SubscriptionsServerTransport) dispatchValidateMove(req *http.Request) (*http.Response, error) { + if s.srv.ValidateMove == nil { + return nil, &nonRetriableError{errors.New("fake for method ValidateMove not implemented")} + } + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/billingSubscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/validateMoveEligibility` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbilling.TransferBillingSubscriptionRequestProperties](req) + if err != nil { + return nil, err + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + respr, errRespr := s.srv.ValidateMove(req.Context(), billingAccountNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ValidateSubscriptionTransferEligibilityResult, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/time_rfc3339.go b/sdk/resourcemanager/billing/armbilling/fake/time_rfc3339.go new file mode 100644 index 000000000000..b0535a7b63e6 --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/time_rfc3339.go @@ -0,0 +1,86 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "encoding/json" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "reflect" + "regexp" + "strings" + "time" +) + +// Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases. +var tzOffsetRegex = regexp.MustCompile(`(Z|z|\+|-)(\d+:\d+)*"*$`) + +const ( + utcDateTimeJSON = `"2006-01-02T15:04:05.999999999"` + utcDateTime = "2006-01-02T15:04:05.999999999" + dateTimeJSON = `"` + time.RFC3339Nano + `"` +) + +type dateTimeRFC3339 time.Time + +func (t dateTimeRFC3339) MarshalJSON() ([]byte, error) { + tt := time.Time(t) + return tt.MarshalJSON() +} + +func (t dateTimeRFC3339) MarshalText() ([]byte, error) { + tt := time.Time(t) + return tt.MarshalText() +} + +func (t *dateTimeRFC3339) UnmarshalJSON(data []byte) error { + layout := utcDateTimeJSON + if tzOffsetRegex.Match(data) { + layout = dateTimeJSON + } + return t.Parse(layout, string(data)) +} + +func (t *dateTimeRFC3339) UnmarshalText(data []byte) error { + layout := utcDateTime + if tzOffsetRegex.Match(data) { + layout = time.RFC3339Nano + } + return t.Parse(layout, string(data)) +} + +func (t *dateTimeRFC3339) Parse(layout, value string) error { + p, err := time.Parse(layout, strings.ToUpper(value)) + *t = dateTimeRFC3339(p) + return err +} + +func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) { + if t == nil { + return + } else if azcore.IsNullValue(t) { + m[k] = nil + return + } else if reflect.ValueOf(t).IsNil() { + return + } + m[k] = (*dateTimeRFC3339)(t) +} + +func unpopulateDateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { + if data == nil || strings.EqualFold(string(data), "null") { + return nil + } + var aux dateTimeRFC3339 + if err := json.Unmarshal(data, &aux); err != nil { + return fmt.Errorf("struct field %s: %v", fn, err) + } + *t = (*time.Time)(&aux) + return nil +} diff --git a/sdk/resourcemanager/billing/armbilling/fake/transactions_server.go b/sdk/resourcemanager/billing/armbilling/fake/transactions_server.go new file mode 100644 index 000000000000..f5833b1c0f7c --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/fake/transactions_server.go @@ -0,0 +1,112 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling" + "net/http" + "net/url" + "regexp" +) + +// TransactionsServer is a fake server for instances of the armbilling.TransactionsClient type. +type TransactionsServer struct { + // NewListByInvoicePager is the fake for method TransactionsClient.NewListByInvoicePager + // HTTP status codes to indicate success: http.StatusOK + NewListByInvoicePager func(billingAccountName string, invoiceName string, options *armbilling.TransactionsClientListByInvoiceOptions) (resp azfake.PagerResponder[armbilling.TransactionsClientListByInvoiceResponse]) +} + +// NewTransactionsServerTransport creates a new instance of TransactionsServerTransport with the provided implementation. +// The returned TransactionsServerTransport instance is connected to an instance of armbilling.TransactionsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewTransactionsServerTransport(srv *TransactionsServer) *TransactionsServerTransport { + return &TransactionsServerTransport{ + srv: srv, + newListByInvoicePager: newTracker[azfake.PagerResponder[armbilling.TransactionsClientListByInvoiceResponse]](), + } +} + +// TransactionsServerTransport connects instances of armbilling.TransactionsClient to instances of TransactionsServer. +// Don't use this type directly, use NewTransactionsServerTransport instead. +type TransactionsServerTransport struct { + srv *TransactionsServer + newListByInvoicePager *tracker[azfake.PagerResponder[armbilling.TransactionsClientListByInvoiceResponse]] +} + +// Do implements the policy.Transporter interface for TransactionsServerTransport. +func (t *TransactionsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "TransactionsClient.NewListByInvoicePager": + resp, err = t.dispatchNewListByInvoicePager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (t *TransactionsServerTransport) dispatchNewListByInvoicePager(req *http.Request) (*http.Response, error) { + if t.srv.NewListByInvoicePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByInvoicePager not implemented")} + } + newListByInvoicePager := t.newListByInvoicePager.get(req) + if newListByInvoicePager == nil { + const regexStr = `/providers/Microsoft\.Billing/billingAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/invoices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/transactions` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + billingAccountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("billingAccountName")]) + if err != nil { + return nil, err + } + invoiceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("invoiceName")]) + if err != nil { + return nil, err + } + resp := t.srv.NewListByInvoicePager(billingAccountNameParam, invoiceNameParam, nil) + newListByInvoicePager = &resp + t.newListByInvoicePager.add(req, newListByInvoicePager) + server.PagerResponderInjectNextLinks(newListByInvoicePager, req, func(page *armbilling.TransactionsClientListByInvoiceResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByInvoicePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + t.newListByInvoicePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByInvoicePager) { + t.newListByInvoicePager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/billing/armbilling/go.mod b/sdk/resourcemanager/billing/armbilling/go.mod index 7c42b196a5eb..17a99f96ee3a 100644 --- a/sdk/resourcemanager/billing/armbilling/go.mod +++ b/sdk/resourcemanager/billing/armbilling/go.mod @@ -3,19 +3,19 @@ module github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billing/armbilling go 1.18 require ( - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0 - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2 + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 ) require ( - github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0 // indirect - github.com/golang-jwt/jwt/v4 v4.5.0 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect + github.com/golang-jwt/jwt/v5 v5.0.0 // indirect + github.com/google/uuid v1.3.1 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect - golang.org/x/crypto v0.6.0 // indirect - golang.org/x/net v0.7.0 // indirect - golang.org/x/sys v0.5.0 // indirect - golang.org/x/text v0.7.0 // indirect + golang.org/x/crypto v0.14.0 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect ) diff --git a/sdk/resourcemanager/billing/armbilling/go.sum b/sdk/resourcemanager/billing/armbilling/go.sum index 8ba445a8c4da..7985f1da436f 100644 --- a/sdk/resourcemanager/billing/armbilling/go.sum +++ b/sdk/resourcemanager/billing/armbilling/go.sum @@ -1,31 +1,31 @@ -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0 h1:rTnT/Jrcm+figWlYz4Ixzt0SJVR2cMC8lvZcimipiEY= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0/go.mod h1:ON4tFdPTwRcgWEaVDrN3584Ef+b7GgSJaXxe5fW9t4M= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2 h1:uqM+VoHjVH6zdlkLF2b6O0ZANcHoj3rO0PoQ3jglUJA= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2/go.mod h1:twTKAa1E6hLmSDjLhaCkbTMQKc7p/rNLU40rLxGEOCI= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0 h1:leh5DwKv6Ihwi+h60uHtn6UWAxBbZ0q8DwQVMzf61zw= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= -github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0 h1:UE9n9rkJF62ArLb1F3DEjRt8O3jLwMWdSoypKV4f3MU= -github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 h1:fb8kj/Dh4CSwgsOzHeZY4Xh68cFVbzXx+ONXGMY//4w= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0/go.mod h1:uReU2sSxZExRPBAg3qKzmAucSi51+SP1OhohieR821Q= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 h1:BMAjVKJM0U/CYF27gA0ZMmXGkOcvfFtD0oHVZ1TIPRI= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0/go.mod h1:1fXstnBMas5kzG+S3q8UoJcmyU6nUeunJcMDHcRYHhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 h1:d81/ng9rET2YqdVkVwkb6EXeRrLJIwyGnJcAlAWKwhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0/go.mod h1:s4kgfzA0covAXNicZHDMN58jExvcng2mC/DepXiF1EI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 h1:WpB/QDNLpMw72xHJc34BNNykqSOeEJDAWkhf0u12/Jk= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/dnaeon/go-vcr v1.1.0 h1:ReYa/UBrRyQdant9B4fNHGoCNKw6qh6P0fsdGmZpR7c= -github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= -github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= +github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= +github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= -golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/sdk/resourcemanager/billing/armbilling/instructions_client.go b/sdk/resourcemanager/billing/armbilling/instructions_client.go index f4fff60a4ec5..a5014b07376e 100644 --- a/sdk/resourcemanager/billing/armbilling/instructions_client.go +++ b/sdk/resourcemanager/billing/armbilling/instructions_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -31,7 +30,7 @@ type InstructionsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewInstructionsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*InstructionsClient, error) { - cl, err := arm.NewClient(moduleName+".InstructionsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -50,18 +49,25 @@ func NewInstructionsClient(credential azcore.TokenCredential, options *arm.Clien // - instructionName - Instruction Name. // - options - InstructionsClientGetOptions contains the optional parameters for the InstructionsClient.Get method. func (client *InstructionsClient) Get(ctx context.Context, billingAccountName string, billingProfileName string, instructionName string, options *InstructionsClientGetOptions) (InstructionsClientGetResponse, error) { + var err error + const operationName = "InstructionsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, billingAccountName, billingProfileName, instructionName, options) if err != nil { return InstructionsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return InstructionsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return InstructionsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return InstructionsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -112,25 +118,20 @@ func (client *InstructionsClient) NewListByBillingProfilePager(billingAccountNam return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *InstructionsClientListByBillingProfileResponse) (InstructionsClientListByBillingProfileResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "InstructionsClient.NewListByBillingProfilePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, options) + }, nil) if err != nil { return InstructionsClientListByBillingProfileResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return InstructionsClientListByBillingProfileResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return InstructionsClientListByBillingProfileResponse{}, runtime.NewResponseError(resp) - } return client.listByBillingProfileHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -175,18 +176,25 @@ func (client *InstructionsClient) listByBillingProfileHandleResponse(resp *http. // - parameters - The new instruction. // - options - InstructionsClientPutOptions contains the optional parameters for the InstructionsClient.Put method. func (client *InstructionsClient) Put(ctx context.Context, billingAccountName string, billingProfileName string, instructionName string, parameters Instruction, options *InstructionsClientPutOptions) (InstructionsClientPutResponse, error) { + var err error + const operationName = "InstructionsClient.Put" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.putCreateRequest(ctx, billingAccountName, billingProfileName, instructionName, parameters, options) if err != nil { return InstructionsClientPutResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return InstructionsClientPutResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return InstructionsClientPutResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return InstructionsClientPutResponse{}, err } - return client.putHandleResponse(resp) + resp, err := client.putHandleResponse(httpResp) + return resp, err } // putCreateRequest creates the Put request. @@ -212,7 +220,10 @@ func (client *InstructionsClient) putCreateRequest(ctx context.Context, billingA reqQP.Set("api-version", "2020-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // putHandleResponse handles the Put response. diff --git a/sdk/resourcemanager/billing/armbilling/invoices_client.go b/sdk/resourcemanager/billing/armbilling/invoices_client.go index cdd462e69227..48d68a2e89aa 100644 --- a/sdk/resourcemanager/billing/armbilling/invoices_client.go +++ b/sdk/resourcemanager/billing/armbilling/invoices_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -33,7 +32,7 @@ type InvoicesClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewInvoicesClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*InvoicesClient, error) { - cl, err := arm.NewClient(moduleName+".InvoicesClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -58,11 +57,15 @@ func (client *InvoicesClient) BeginDownloadBillingSubscriptionInvoice(ctx contex if err != nil { return nil, err } - return runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[InvoicesClientDownloadBillingSubscriptionInvoiceResponse]{ + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[InvoicesClientDownloadBillingSubscriptionInvoiceResponse]{ FinalStateVia: runtime.FinalStateViaLocation, + Tracer: client.internal.Tracer(), }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[InvoicesClientDownloadBillingSubscriptionInvoiceResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[InvoicesClientDownloadBillingSubscriptionInvoiceResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -71,18 +74,24 @@ func (client *InvoicesClient) BeginDownloadBillingSubscriptionInvoice(ctx contex // // Generated from API version 2020-05-01 func (client *InvoicesClient) downloadBillingSubscriptionInvoice(ctx context.Context, invoiceName string, downloadToken string, options *InvoicesClientBeginDownloadBillingSubscriptionInvoiceOptions) (*http.Response, error) { + var err error + const operationName = "InvoicesClient.BeginDownloadBillingSubscriptionInvoice" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.downloadBillingSubscriptionInvoiceCreateRequest(ctx, invoiceName, downloadToken, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusAccepted) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // downloadBillingSubscriptionInvoiceCreateRequest creates the DownloadBillingSubscriptionInvoice request. @@ -124,11 +133,15 @@ func (client *InvoicesClient) BeginDownloadInvoice(ctx context.Context, billingA if err != nil { return nil, err } - return runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[InvoicesClientDownloadInvoiceResponse]{ + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[InvoicesClientDownloadInvoiceResponse]{ FinalStateVia: runtime.FinalStateViaLocation, + Tracer: client.internal.Tracer(), }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[InvoicesClientDownloadInvoiceResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[InvoicesClientDownloadInvoiceResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -138,18 +151,24 @@ func (client *InvoicesClient) BeginDownloadInvoice(ctx context.Context, billingA // // Generated from API version 2020-05-01 func (client *InvoicesClient) downloadInvoice(ctx context.Context, billingAccountName string, invoiceName string, downloadToken string, options *InvoicesClientBeginDownloadInvoiceOptions) (*http.Response, error) { + var err error + const operationName = "InvoicesClient.BeginDownloadInvoice" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.downloadInvoiceCreateRequest(ctx, billingAccountName, invoiceName, downloadToken, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusAccepted) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // downloadInvoiceCreateRequest creates the DownloadInvoice request. @@ -191,11 +210,15 @@ func (client *InvoicesClient) BeginDownloadMultipleBillingProfileInvoices(ctx co if err != nil { return nil, err } - return runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[InvoicesClientDownloadMultipleBillingProfileInvoicesResponse]{ + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[InvoicesClientDownloadMultipleBillingProfileInvoicesResponse]{ FinalStateVia: runtime.FinalStateViaLocation, + Tracer: client.internal.Tracer(), }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[InvoicesClientDownloadMultipleBillingProfileInvoicesResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[InvoicesClientDownloadMultipleBillingProfileInvoicesResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -206,18 +229,24 @@ func (client *InvoicesClient) BeginDownloadMultipleBillingProfileInvoices(ctx co // // Generated from API version 2020-05-01 func (client *InvoicesClient) downloadMultipleBillingProfileInvoices(ctx context.Context, billingAccountName string, downloadUrls []*string, options *InvoicesClientBeginDownloadMultipleBillingProfileInvoicesOptions) (*http.Response, error) { + var err error + const operationName = "InvoicesClient.BeginDownloadMultipleBillingProfileInvoices" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.downloadMultipleBillingProfileInvoicesCreateRequest(ctx, billingAccountName, downloadUrls, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusAccepted) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // downloadMultipleBillingProfileInvoicesCreateRequest creates the DownloadMultipleBillingProfileInvoices request. @@ -235,7 +264,10 @@ func (client *InvoicesClient) downloadMultipleBillingProfileInvoicesCreateReques reqQP.Set("api-version", "2020-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, downloadUrls) + if err := runtime.MarshalAsJSON(req, downloadUrls); err != nil { + return nil, err + } + return req, nil } // BeginDownloadMultipleBillingSubscriptionInvoices - Gets a URL to download multiple invoice documents (invoice pdf, tax @@ -252,11 +284,15 @@ func (client *InvoicesClient) BeginDownloadMultipleBillingSubscriptionInvoices(c if err != nil { return nil, err } - return runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[InvoicesClientDownloadMultipleBillingSubscriptionInvoicesResponse]{ + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[InvoicesClientDownloadMultipleBillingSubscriptionInvoicesResponse]{ FinalStateVia: runtime.FinalStateViaLocation, + Tracer: client.internal.Tracer(), }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[InvoicesClientDownloadMultipleBillingSubscriptionInvoicesResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[InvoicesClientDownloadMultipleBillingSubscriptionInvoicesResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -266,18 +302,24 @@ func (client *InvoicesClient) BeginDownloadMultipleBillingSubscriptionInvoices(c // // Generated from API version 2020-05-01 func (client *InvoicesClient) downloadMultipleBillingSubscriptionInvoices(ctx context.Context, downloadUrls []*string, options *InvoicesClientBeginDownloadMultipleBillingSubscriptionInvoicesOptions) (*http.Response, error) { + var err error + const operationName = "InvoicesClient.BeginDownloadMultipleBillingSubscriptionInvoices" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.downloadMultipleBillingSubscriptionInvoicesCreateRequest(ctx, downloadUrls, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusAccepted) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // downloadMultipleBillingSubscriptionInvoicesCreateRequest creates the DownloadMultipleBillingSubscriptionInvoices request. @@ -295,7 +337,10 @@ func (client *InvoicesClient) downloadMultipleBillingSubscriptionInvoicesCreateR reqQP.Set("api-version", "2020-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, downloadUrls) + if err := runtime.MarshalAsJSON(req, downloadUrls); err != nil { + return nil, err + } + return req, nil } // Get - Gets an invoice by billing account name and ID. The operation is supported for billing accounts with agreement type @@ -307,18 +352,25 @@ func (client *InvoicesClient) downloadMultipleBillingSubscriptionInvoicesCreateR // - invoiceName - The ID that uniquely identifies an invoice. // - options - InvoicesClientGetOptions contains the optional parameters for the InvoicesClient.Get method. func (client *InvoicesClient) Get(ctx context.Context, billingAccountName string, invoiceName string, options *InvoicesClientGetOptions) (InvoicesClientGetResponse, error) { + var err error + const operationName = "InvoicesClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, billingAccountName, invoiceName, options) if err != nil { return InvoicesClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return InvoicesClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return InvoicesClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return InvoicesClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -360,18 +412,25 @@ func (client *InvoicesClient) getHandleResponse(resp *http.Response) (InvoicesCl // - invoiceName - The ID that uniquely identifies an invoice. // - options - InvoicesClientGetByIDOptions contains the optional parameters for the InvoicesClient.GetByID method. func (client *InvoicesClient) GetByID(ctx context.Context, invoiceName string, options *InvoicesClientGetByIDOptions) (InvoicesClientGetByIDResponse, error) { + var err error + const operationName = "InvoicesClient.GetByID" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getByIDCreateRequest(ctx, invoiceName, options) if err != nil { return InvoicesClientGetByIDResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return InvoicesClientGetByIDResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return InvoicesClientGetByIDResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return InvoicesClientGetByIDResponse{}, err } - return client.getByIDHandleResponse(resp) + resp, err := client.getByIDHandleResponse(httpResp) + return resp, err } // getByIDCreateRequest creates the GetByID request. @@ -409,18 +468,25 @@ func (client *InvoicesClient) getByIDHandleResponse(resp *http.Response) (Invoic // - options - InvoicesClientGetBySubscriptionAndInvoiceIDOptions contains the optional parameters for the InvoicesClient.GetBySubscriptionAndInvoiceID // method. func (client *InvoicesClient) GetBySubscriptionAndInvoiceID(ctx context.Context, invoiceName string, options *InvoicesClientGetBySubscriptionAndInvoiceIDOptions) (InvoicesClientGetBySubscriptionAndInvoiceIDResponse, error) { + var err error + const operationName = "InvoicesClient.GetBySubscriptionAndInvoiceID" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getBySubscriptionAndInvoiceIDCreateRequest(ctx, invoiceName, options) if err != nil { return InvoicesClientGetBySubscriptionAndInvoiceIDResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return InvoicesClientGetBySubscriptionAndInvoiceIDResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return InvoicesClientGetBySubscriptionAndInvoiceIDResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return InvoicesClientGetBySubscriptionAndInvoiceIDResponse{}, err } - return client.getBySubscriptionAndInvoiceIDHandleResponse(resp) + resp, err := client.getBySubscriptionAndInvoiceIDHandleResponse(httpResp) + return resp, err } // getBySubscriptionAndInvoiceIDCreateRequest creates the GetBySubscriptionAndInvoiceID request. @@ -470,25 +536,20 @@ func (client *InvoicesClient) NewListByBillingAccountPager(billingAccountName st return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *InvoicesClientListByBillingAccountResponse) (InvoicesClientListByBillingAccountResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByBillingAccountCreateRequest(ctx, billingAccountName, periodStartDate, periodEndDate, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "InvoicesClient.NewListByBillingAccountPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByBillingAccountCreateRequest(ctx, billingAccountName, periodStartDate, periodEndDate, options) + }, nil) if err != nil { return InvoicesClientListByBillingAccountResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return InvoicesClientListByBillingAccountResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return InvoicesClientListByBillingAccountResponse{}, runtime.NewResponseError(resp) - } return client.listByBillingAccountHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -538,25 +599,20 @@ func (client *InvoicesClient) NewListByBillingProfilePager(billingAccountName st return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *InvoicesClientListByBillingProfileResponse) (InvoicesClientListByBillingProfileResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, periodStartDate, periodEndDate, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return InvoicesClientListByBillingProfileResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "InvoicesClient.NewListByBillingProfilePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, periodStartDate, periodEndDate, options) + }, nil) if err != nil { return InvoicesClientListByBillingProfileResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return InvoicesClientListByBillingProfileResponse{}, runtime.NewResponseError(resp) - } return client.listByBillingProfileHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -606,25 +662,20 @@ func (client *InvoicesClient) NewListByBillingSubscriptionPager(periodStartDate return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *InvoicesClientListByBillingSubscriptionResponse) (InvoicesClientListByBillingSubscriptionResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByBillingSubscriptionCreateRequest(ctx, periodStartDate, periodEndDate, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "InvoicesClient.NewListByBillingSubscriptionPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByBillingSubscriptionCreateRequest(ctx, periodStartDate, periodEndDate, options) + }, nil) if err != nil { return InvoicesClientListByBillingSubscriptionResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return InvoicesClientListByBillingSubscriptionResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return InvoicesClientListByBillingSubscriptionResponse{}, runtime.NewResponseError(resp) - } return client.listByBillingSubscriptionHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/billing/armbilling/invoices_client_example_test.go b/sdk/resourcemanager/billing/armbilling/invoices_client_example_test.go index 438ccf4719fd..582026a17798 100644 --- a/sdk/resourcemanager/billing/armbilling/invoices_client_example_test.go +++ b/sdk/resourcemanager/billing/armbilling/invoices_client_example_test.go @@ -72,14 +72,14 @@ func ExampleInvoicesClient_NewListByBillingAccountPager_billingAccountInvoicesLi // Source: to.Ptr(armbilling.DocumentSourceDRS), // URL: to.Ptr("https://microsoft.com/invoice.pdf"), // }}, - // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-16T17:32:28Z"); return t}()), + // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-16T17:32:28.000Z"); return t}()), // FreeAzureCreditApplied: &armbilling.Amount{ // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](0), // }, - // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28Z"); return t}()), - // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-15T17:32:28Z"); return t}()), - // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28Z"); return t}()), + // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28.000Z"); return t}()), + // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-15T17:32:28.000Z"); return t}()), + // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28.000Z"); return t}()), // IsMonthlyInvoice: to.Ptr(false), // Payments: []*armbilling.PaymentProperties{ // { @@ -87,7 +87,7 @@ func ExampleInvoicesClient_NewListByBillingAccountPager_billingAccountInvoicesLi // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](1), // }, - // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28Z"); return t}()), + // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28.000Z"); return t}()), // PaymentMethodFamily: to.Ptr(armbilling.PaymentMethodFamilyCreditCard), // PaymentMethodType: to.Ptr("visa"), // PaymentType: to.Ptr("credited"), @@ -138,14 +138,14 @@ func ExampleInvoicesClient_NewListByBillingAccountPager_billingAccountInvoicesLi // Source: to.Ptr(armbilling.DocumentSourceDRS), // URL: to.Ptr("https://microsoft.com/taxreceipt.pdf"), // }}, - // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-03-01T17:32:28Z"); return t}()), + // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-03-01T17:32:28.000Z"); return t}()), // FreeAzureCreditApplied: &armbilling.Amount{ // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](0), // }, - // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-01T17:32:28Z"); return t}()), - // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-28T17:32:28Z"); return t}()), - // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-01T17:32:28Z"); return t}()), + // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-01T17:32:28.000Z"); return t}()), + // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-28T17:32:28.000Z"); return t}()), + // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-01T17:32:28.000Z"); return t}()), // IsMonthlyInvoice: to.Ptr(true), // Payments: []*armbilling.PaymentProperties{ // { @@ -153,7 +153,7 @@ func ExampleInvoicesClient_NewListByBillingAccountPager_billingAccountInvoicesLi // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](2), // }, - // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28Z"); return t}()), + // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28.000Z"); return t}()), // PaymentMethodFamily: to.Ptr(armbilling.PaymentMethodFamilyCreditCard), // PaymentMethodType: to.Ptr("visa"), // PaymentType: to.Ptr("credited"), @@ -232,14 +232,14 @@ func ExampleInvoicesClient_NewListByBillingAccountPager_billingAccountInvoicesLi // Source: to.Ptr(armbilling.DocumentSourceDRS), // URL: to.Ptr("https://microsoft.com/invoice.pdf"), // }}, - // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-16T17:32:28Z"); return t}()), + // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-16T17:32:28.000Z"); return t}()), // FreeAzureCreditApplied: &armbilling.Amount{ // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](0), // }, - // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28Z"); return t}()), - // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-15T17:32:28Z"); return t}()), - // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28Z"); return t}()), + // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28.000Z"); return t}()), + // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-15T17:32:28.000Z"); return t}()), + // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28.000Z"); return t}()), // IsMonthlyInvoice: to.Ptr(false), // Payments: []*armbilling.PaymentProperties{ // { @@ -247,7 +247,7 @@ func ExampleInvoicesClient_NewListByBillingAccountPager_billingAccountInvoicesLi // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](1), // }, - // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28Z"); return t}()), + // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28.000Z"); return t}()), // PaymentMethodFamily: to.Ptr(armbilling.PaymentMethodFamilyCreditCard), // PaymentMethodType: to.Ptr("visa"), // PaymentType: to.Ptr("credited"), @@ -306,14 +306,14 @@ func ExampleInvoicesClient_NewListByBillingAccountPager_billingAccountInvoicesLi // Source: to.Ptr(armbilling.DocumentSourceDRS), // URL: to.Ptr("https://microsoft.com/taxreceipt.pdf"), // }}, - // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-03-01T17:32:28Z"); return t}()), + // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-03-01T17:32:28.000Z"); return t}()), // FreeAzureCreditApplied: &armbilling.Amount{ // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](0), // }, - // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-01T17:32:28Z"); return t}()), - // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-28T17:32:28Z"); return t}()), - // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-01T17:32:28Z"); return t}()), + // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-01T17:32:28.000Z"); return t}()), + // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-28T17:32:28.000Z"); return t}()), + // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-01T17:32:28.000Z"); return t}()), // IsMonthlyInvoice: to.Ptr(true), // Payments: []*armbilling.PaymentProperties{ // { @@ -321,7 +321,7 @@ func ExampleInvoicesClient_NewListByBillingAccountPager_billingAccountInvoicesLi // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](2), // }, - // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28Z"); return t}()), + // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28.000Z"); return t}()), // PaymentMethodFamily: to.Ptr(armbilling.PaymentMethodFamilyCreditCard), // PaymentMethodType: to.Ptr("visa"), // PaymentType: to.Ptr("credited"), @@ -405,14 +405,14 @@ func ExampleInvoicesClient_NewListByBillingProfilePager_invoicesListByBillingPro // Source: to.Ptr(armbilling.DocumentSourceDRS), // URL: to.Ptr("https://microsoft.com/taxDoc.pdf"), // }}, - // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-16T17:32:28Z"); return t}()), + // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-16T17:32:28.000Z"); return t}()), // FreeAzureCreditApplied: &armbilling.Amount{ // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](0), // }, - // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28Z"); return t}()), - // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-15T17:32:28Z"); return t}()), - // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28Z"); return t}()), + // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28.000Z"); return t}()), + // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-15T17:32:28.000Z"); return t}()), + // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28.000Z"); return t}()), // IsMonthlyInvoice: to.Ptr(false), // Payments: []*armbilling.PaymentProperties{ // { @@ -420,7 +420,7 @@ func ExampleInvoicesClient_NewListByBillingProfilePager_invoicesListByBillingPro // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](1), // }, - // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28Z"); return t}()), + // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28.000Z"); return t}()), // PaymentMethodFamily: to.Ptr(armbilling.PaymentMethodFamilyCreditCard), // PaymentMethodType: to.Ptr("visa"), // PaymentType: to.Ptr("credited"), @@ -476,14 +476,14 @@ func ExampleInvoicesClient_NewListByBillingProfilePager_invoicesListByBillingPro // Source: to.Ptr(armbilling.DocumentSourceDRS), // URL: to.Ptr("https://microsoft.com/taxDoc.pdf"), // }}, - // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-03-01T17:32:28Z"); return t}()), + // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-03-01T17:32:28.000Z"); return t}()), // FreeAzureCreditApplied: &armbilling.Amount{ // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](0), // }, - // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28Z"); return t}()), - // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-28T17:32:28Z"); return t}()), - // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-01T17:32:28Z"); return t}()), + // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28.000Z"); return t}()), + // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-28T17:32:28.000Z"); return t}()), + // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-01T17:32:28.000Z"); return t}()), // IsMonthlyInvoice: to.Ptr(true), // Payments: []*armbilling.PaymentProperties{ // { @@ -491,7 +491,7 @@ func ExampleInvoicesClient_NewListByBillingProfilePager_invoicesListByBillingPro // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](2), // }, - // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28Z"); return t}()), + // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28.000Z"); return t}()), // PaymentMethodFamily: to.Ptr(armbilling.PaymentMethodFamilyCreditCard), // PaymentMethodType: to.Ptr("visa"), // PaymentType: to.Ptr("credited"), @@ -575,14 +575,14 @@ func ExampleInvoicesClient_NewListByBillingProfilePager_invoicesListByBillingPro // Source: to.Ptr(armbilling.DocumentSourceDRS), // URL: to.Ptr("https://microsoft.com/taxDoc.pdf"), // }}, - // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-16T17:32:28Z"); return t}()), + // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-16T17:32:28.000Z"); return t}()), // FreeAzureCreditApplied: &armbilling.Amount{ // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](0), // }, - // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28Z"); return t}()), - // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-15T17:32:28Z"); return t}()), - // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28Z"); return t}()), + // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28.000Z"); return t}()), + // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-15T17:32:28.000Z"); return t}()), + // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28.000Z"); return t}()), // IsMonthlyInvoice: to.Ptr(false), // Payments: []*armbilling.PaymentProperties{ // { @@ -590,7 +590,7 @@ func ExampleInvoicesClient_NewListByBillingProfilePager_invoicesListByBillingPro // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](1), // }, - // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28Z"); return t}()), + // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28.000Z"); return t}()), // PaymentMethodFamily: to.Ptr(armbilling.PaymentMethodFamilyCreditCard), // PaymentMethodType: to.Ptr("visa"), // PaymentType: to.Ptr("credited"), @@ -654,14 +654,14 @@ func ExampleInvoicesClient_NewListByBillingProfilePager_invoicesListByBillingPro // Source: to.Ptr(armbilling.DocumentSourceDRS), // URL: to.Ptr("https://microsoft.com/taxDoc.pdf"), // }}, - // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-03-01T17:32:28Z"); return t}()), + // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-03-01T17:32:28.000Z"); return t}()), // FreeAzureCreditApplied: &armbilling.Amount{ // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](0), // }, - // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28Z"); return t}()), - // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-28T17:32:28Z"); return t}()), - // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-01T17:32:28Z"); return t}()), + // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28.000Z"); return t}()), + // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-28T17:32:28.000Z"); return t}()), + // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-01T17:32:28.000Z"); return t}()), // IsMonthlyInvoice: to.Ptr(true), // Payments: []*armbilling.PaymentProperties{ // { @@ -669,7 +669,7 @@ func ExampleInvoicesClient_NewListByBillingProfilePager_invoicesListByBillingPro // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](2), // }, - // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28Z"); return t}()), + // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28.000Z"); return t}()), // PaymentMethodFamily: to.Ptr(armbilling.PaymentMethodFamilyCreditCard), // PaymentMethodType: to.Ptr("visa"), // PaymentType: to.Ptr("credited"), @@ -748,14 +748,14 @@ func ExampleInvoicesClient_Get_creditNote() { // Source: to.Ptr(armbilling.DocumentSourceDRS), // URL: to.Ptr("https://microsoft.com/taxDoc.pdf"), // }}, - // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-16T17:32:28Z"); return t}()), + // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-16T17:32:28.000Z"); return t}()), // FreeAzureCreditApplied: &armbilling.Amount{ // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](0), // }, - // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28Z"); return t}()), - // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-15T17:32:28Z"); return t}()), - // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28Z"); return t}()), + // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28.000Z"); return t}()), + // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-15T17:32:28.000Z"); return t}()), + // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28.000Z"); return t}()), // IsMonthlyInvoice: to.Ptr(false), // Payments: []*armbilling.PaymentProperties{ // { @@ -763,7 +763,7 @@ func ExampleInvoicesClient_Get_creditNote() { // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](2), // }, - // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28Z"); return t}()), + // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28.000Z"); return t}()), // PaymentMethodFamily: to.Ptr(armbilling.PaymentMethodFamilyCreditCard), // PaymentMethodType: to.Ptr("visa"), // PaymentType: to.Ptr("credited"), @@ -839,14 +839,14 @@ func ExampleInvoicesClient_Get_invoice() { // Source: to.Ptr(armbilling.DocumentSourceDRS), // URL: to.Ptr("https://microsoft.com/taxDoc.pdf"), // }}, - // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-16T17:32:28Z"); return t}()), + // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-16T17:32:28.000Z"); return t}()), // FreeAzureCreditApplied: &armbilling.Amount{ // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](0), // }, - // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28Z"); return t}()), - // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-15T17:32:28Z"); return t}()), - // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28Z"); return t}()), + // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28.000Z"); return t}()), + // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-15T17:32:28.000Z"); return t}()), + // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28.000Z"); return t}()), // IsMonthlyInvoice: to.Ptr(false), // Payments: []*armbilling.PaymentProperties{ // { @@ -854,7 +854,7 @@ func ExampleInvoicesClient_Get_invoice() { // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](2), // }, - // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28Z"); return t}()), + // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28.000Z"); return t}()), // PaymentMethodFamily: to.Ptr(armbilling.PaymentMethodFamilyCreditCard), // PaymentMethodType: to.Ptr("visa"), // PaymentType: to.Ptr("credited"), @@ -930,14 +930,14 @@ func ExampleInvoicesClient_Get_invoiceWithRebillDetails() { // Source: to.Ptr(armbilling.DocumentSourceDRS), // URL: to.Ptr("https://microsoft.com/taxDoc.pdf"), // }}, - // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-16T17:32:28Z"); return t}()), + // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-16T17:32:28.000Z"); return t}()), // FreeAzureCreditApplied: &armbilling.Amount{ // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](0), // }, - // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28Z"); return t}()), - // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-15T17:32:28Z"); return t}()), - // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28Z"); return t}()), + // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28.000Z"); return t}()), + // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-15T17:32:28.000Z"); return t}()), + // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28.000Z"); return t}()), // IsMonthlyInvoice: to.Ptr(false), // Payments: []*armbilling.PaymentProperties{ // { @@ -945,7 +945,7 @@ func ExampleInvoicesClient_Get_invoiceWithRebillDetails() { // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](2), // }, - // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28Z"); return t}()), + // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28.000Z"); return t}()), // PaymentMethodFamily: to.Ptr(armbilling.PaymentMethodFamilyCreditCard), // PaymentMethodType: to.Ptr("visa"), // PaymentType: to.Ptr("credited"), @@ -1030,14 +1030,14 @@ func ExampleInvoicesClient_Get_voidInvoice() { // Source: to.Ptr(armbilling.DocumentSourceDRS), // URL: to.Ptr("https://microsoft.com/taxDoc.pdf"), // }}, - // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-16T17:32:28Z"); return t}()), + // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-16T17:32:28.000Z"); return t}()), // FreeAzureCreditApplied: &armbilling.Amount{ // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](0), // }, - // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28Z"); return t}()), - // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-15T17:32:28Z"); return t}()), - // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28Z"); return t}()), + // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28.000Z"); return t}()), + // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-15T17:32:28.000Z"); return t}()), + // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28.000Z"); return t}()), // IsMonthlyInvoice: to.Ptr(false), // Payments: []*armbilling.PaymentProperties{ // { @@ -1045,7 +1045,7 @@ func ExampleInvoicesClient_Get_voidInvoice() { // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](2), // }, - // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28Z"); return t}()), + // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28.000Z"); return t}()), // PaymentMethodFamily: to.Ptr(armbilling.PaymentMethodFamilyCreditCard), // PaymentMethodType: to.Ptr("visa"), // PaymentType: to.Ptr("credited"), @@ -1120,14 +1120,14 @@ func ExampleInvoicesClient_GetByID() { // Source: to.Ptr(armbilling.DocumentSourceDRS), // URL: to.Ptr("https://microsoft.com/taxDoc.pdf"), // }}, - // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-16T17:32:28Z"); return t}()), + // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-16T17:32:28.000Z"); return t}()), // FreeAzureCreditApplied: &armbilling.Amount{ // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](0), // }, - // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28Z"); return t}()), - // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-15T17:32:28Z"); return t}()), - // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28Z"); return t}()), + // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28.000Z"); return t}()), + // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-15T17:32:28.000Z"); return t}()), + // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28.000Z"); return t}()), // IsMonthlyInvoice: to.Ptr(false), // Payments: []*armbilling.PaymentProperties{ // { @@ -1135,7 +1135,7 @@ func ExampleInvoicesClient_GetByID() { // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](2), // }, - // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28Z"); return t}()), + // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28.000Z"); return t}()), // PaymentMethodFamily: to.Ptr(armbilling.PaymentMethodFamilyCreditCard), // PaymentMethodType: to.Ptr("visa"), // PaymentType: to.Ptr("credited"), @@ -1248,10 +1248,10 @@ func ExampleInvoicesClient_NewListByBillingSubscriptionPager() { // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](2000), // }, - // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-16T17:32:28Z"); return t}()), - // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28Z"); return t}()), - // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-15T17:32:28Z"); return t}()), - // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28Z"); return t}()), + // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-16T17:32:28.000Z"); return t}()), + // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28.000Z"); return t}()), + // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-15T17:32:28.000Z"); return t}()), + // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-01T17:32:28.000Z"); return t}()), // InvoiceType: to.Ptr(armbilling.InvoiceType("AzureServices")), // PurchaseOrderNumber: to.Ptr("123456"), // Status: to.Ptr(armbilling.InvoiceStatusDue), @@ -1279,10 +1279,10 @@ func ExampleInvoicesClient_NewListByBillingSubscriptionPager() { // Source: to.Ptr(armbilling.DocumentSourceDRS), // URL: to.Ptr("https://management.azure.com/providers/Microsoft.Billing/billingAccounts/{billingAccountName}/billingSubscriptions/11000000-0000-0000-0000-000000000000/invoices/1383724/download"), // }}, - // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-03-01T17:32:28Z"); return t}()), - // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-01T17:32:28Z"); return t}()), - // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-30T17:32:28Z"); return t}()), - // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-01T17:32:28Z"); return t}()), + // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-03-01T17:32:28.000Z"); return t}()), + // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-01T17:32:28.000Z"); return t}()), + // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-03-02T17:32:28.000Z"); return t}()), + // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-01T17:32:28.000Z"); return t}()), // InvoiceType: to.Ptr(armbilling.InvoiceTypeAzureMarketplace), // Payments: []*armbilling.PaymentProperties{ // { @@ -1290,7 +1290,7 @@ func ExampleInvoicesClient_NewListByBillingSubscriptionPager() { // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](2000), // }, - // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28Z"); return t}()), + // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28.000Z"); return t}()), // PaymentMethodFamily: to.Ptr(armbilling.PaymentMethodFamilyCreditCard), // PaymentMethodType: to.Ptr("visa"), // PaymentType: to.Ptr("credited"), @@ -1343,10 +1343,10 @@ func ExampleInvoicesClient_GetBySubscriptionAndInvoiceID() { // Source: to.Ptr(armbilling.DocumentSourceDRS), // URL: to.Ptr("https://management.azure.com/providers/Microsoft.Billing/billingAccounts/{billingAccountName}/billingSubscriptions/11000000-0000-0000-0000-000000000000/invoices/1383724/download"), // }}, - // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-03-01T17:32:28Z"); return t}()), - // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-01T17:32:28Z"); return t}()), - // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-30T17:32:28Z"); return t}()), - // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-01T17:32:28Z"); return t}()), + // DueDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-03-01T17:32:28.000Z"); return t}()), + // InvoiceDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-01T17:32:28.000Z"); return t}()), + // InvoicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-03-02T17:32:28.000Z"); return t}()), + // InvoicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-02-01T17:32:28.000Z"); return t}()), // InvoiceType: to.Ptr(armbilling.InvoiceTypeAzureMarketplace), // Payments: []*armbilling.PaymentProperties{ // { @@ -1354,7 +1354,7 @@ func ExampleInvoicesClient_GetBySubscriptionAndInvoiceID() { // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](2000), // }, - // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28Z"); return t}()), + // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-01-14T17:32:28.000Z"); return t}()), // PaymentMethodFamily: to.Ptr(armbilling.PaymentMethodFamilyCreditCard), // PaymentMethodType: to.Ptr("visa"), // PaymentType: to.Ptr("credited"), diff --git a/sdk/resourcemanager/billing/armbilling/invoicesections_client.go b/sdk/resourcemanager/billing/armbilling/invoicesections_client.go index 483af2a6dd0b..459638d060de 100644 --- a/sdk/resourcemanager/billing/armbilling/invoicesections_client.go +++ b/sdk/resourcemanager/billing/armbilling/invoicesections_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -31,7 +30,7 @@ type InvoiceSectionsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewInvoiceSectionsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*InvoiceSectionsClient, error) { - cl, err := arm.NewClient(moduleName+".InvoiceSectionsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -58,9 +57,14 @@ func (client *InvoiceSectionsClient) BeginCreateOrUpdate(ctx context.Context, bi if err != nil { return nil, err } - return runtime.NewPoller[InvoiceSectionsClientCreateOrUpdateResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[InvoiceSectionsClientCreateOrUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[InvoiceSectionsClientCreateOrUpdateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[InvoiceSectionsClientCreateOrUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -70,18 +74,24 @@ func (client *InvoiceSectionsClient) BeginCreateOrUpdate(ctx context.Context, bi // // Generated from API version 2020-05-01 func (client *InvoiceSectionsClient) createOrUpdate(ctx context.Context, billingAccountName string, billingProfileName string, invoiceSectionName string, parameters InvoiceSection, options *InvoiceSectionsClientBeginCreateOrUpdateOptions) (*http.Response, error) { + var err error + const operationName = "InvoiceSectionsClient.BeginCreateOrUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createOrUpdateCreateRequest(ctx, billingAccountName, billingProfileName, invoiceSectionName, parameters, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusAccepted) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // createOrUpdateCreateRequest creates the CreateOrUpdate request. @@ -107,7 +117,10 @@ func (client *InvoiceSectionsClient) createOrUpdateCreateRequest(ctx context.Con reqQP.Set("api-version", "2020-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // Get - Gets an invoice section by its ID. The operation is supported only for billing accounts with agreement type Microsoft @@ -120,18 +133,25 @@ func (client *InvoiceSectionsClient) createOrUpdateCreateRequest(ctx context.Con // - invoiceSectionName - The ID that uniquely identifies an invoice section. // - options - InvoiceSectionsClientGetOptions contains the optional parameters for the InvoiceSectionsClient.Get method. func (client *InvoiceSectionsClient) Get(ctx context.Context, billingAccountName string, billingProfileName string, invoiceSectionName string, options *InvoiceSectionsClientGetOptions) (InvoiceSectionsClientGetResponse, error) { + var err error + const operationName = "InvoiceSectionsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, billingAccountName, billingProfileName, invoiceSectionName, options) if err != nil { return InvoiceSectionsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return InvoiceSectionsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return InvoiceSectionsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return InvoiceSectionsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -183,25 +203,20 @@ func (client *InvoiceSectionsClient) NewListByBillingProfilePager(billingAccount return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *InvoiceSectionsClientListByBillingProfileResponse) (InvoiceSectionsClientListByBillingProfileResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "InvoiceSectionsClient.NewListByBillingProfilePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, options) + }, nil) if err != nil { return InvoiceSectionsClientListByBillingProfileResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return InvoiceSectionsClientListByBillingProfileResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return InvoiceSectionsClientListByBillingProfileResponse{}, runtime.NewResponseError(resp) - } return client.listByBillingProfileHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/billing/armbilling/models.go b/sdk/resourcemanager/billing/armbilling/models.go index 33b09af4f2ef..d4990596fdf2 100644 --- a/sdk/resourcemanager/billing/armbilling/models.go +++ b/sdk/resourcemanager/billing/armbilling/models.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -14,2267 +13,1773 @@ import "time" // Account - A billing account. type Account struct { // The properties of the billing account. - Properties *AccountProperties `json:"properties,omitempty"` + Properties *AccountProperties // READ-ONLY; Resource Id. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; Resource name. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Resource type. - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // AccountListResult - The list of billing accounts. type AccountListResult struct { // READ-ONLY; The link (url) to the next page of results. - NextLink *string `json:"nextLink,omitempty" azure:"ro"` + NextLink *string // READ-ONLY; The list of billing accounts. - Value []*Account `json:"value,omitempty" azure:"ro"` + Value []*Account } // AccountProperties - The properties of the billing account. type AccountProperties struct { // The billing profiles associated with the billing account. By default this is not populated, unless it's specified in $expand. - BillingProfiles *ProfilesOnExpand `json:"billingProfiles,omitempty"` + BillingProfiles *ProfilesOnExpand // The departments associated to the enrollment. - Departments []*Department `json:"departments,omitempty"` + Departments []*Department // The billing account name. - DisplayName *string `json:"displayName,omitempty"` + DisplayName *string // The accounts associated to the enrollment. - EnrollmentAccounts []*EnrollmentAccount `json:"enrollmentAccounts,omitempty"` + EnrollmentAccounts []*EnrollmentAccount // Notification email address, only for legacy accounts - NotificationEmailAddress *string `json:"notificationEmailAddress,omitempty"` + NotificationEmailAddress *string // The address of the individual or organization that is responsible for the billing account. - SoldTo *AddressDetails `json:"soldTo,omitempty"` + SoldTo *AddressDetails // READ-ONLY; The current status of the billing account. - AccountStatus *AccountStatus `json:"accountStatus,omitempty" azure:"ro"` + AccountStatus *AccountStatus // READ-ONLY; The type of customer. - AccountType *AccountType `json:"accountType,omitempty" azure:"ro"` + AccountType *AccountType // READ-ONLY; The type of agreement. - AgreementType *AgreementType `json:"agreementType,omitempty" azure:"ro"` + AgreementType *AgreementType // READ-ONLY; The details about the associated legacy enrollment. By default this is not populated, unless it's specified // in $expand. - EnrollmentDetails *Enrollment `json:"enrollmentDetails,omitempty" azure:"ro"` + EnrollmentDetails *Enrollment // READ-ONLY; Indicates whether user has read access to the billing account. - HasReadAccess *bool `json:"hasReadAccess,omitempty" azure:"ro"` + HasReadAccess *bool } // AccountUpdateRequest - The request properties of the billing account that can be updated. type AccountUpdateRequest struct { // A billing property. - Properties *AccountProperties `json:"properties,omitempty"` -} - -// AccountsClientBeginUpdateOptions contains the optional parameters for the AccountsClient.BeginUpdate method. -type AccountsClientBeginUpdateOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// AccountsClientGetOptions contains the optional parameters for the AccountsClient.Get method. -type AccountsClientGetOptions struct { - // May be used to expand the soldTo, invoice sections and billing profiles. - Expand *string -} - -// AccountsClientListInvoiceSectionsByCreateSubscriptionPermissionOptions contains the optional parameters for the AccountsClient.NewListInvoiceSectionsByCreateSubscriptionPermissionPager -// method. -type AccountsClientListInvoiceSectionsByCreateSubscriptionPermissionOptions struct { - // placeholder for future optional parameters -} - -// AccountsClientListOptions contains the optional parameters for the AccountsClient.NewListPager method. -type AccountsClientListOptions struct { - // May be used to expand the soldTo, invoice sections and billing profiles. - Expand *string -} - -// AddressClientValidateOptions contains the optional parameters for the AddressClient.Validate method. -type AddressClientValidateOptions struct { - // placeholder for future optional parameters + Properties *AccountProperties } // AddressDetails - Address details. type AddressDetails struct { // REQUIRED; Address line 1. - AddressLine1 *string `json:"addressLine1,omitempty"` + AddressLine1 *string // REQUIRED; Country code uses ISO2, 2-digit format. - Country *string `json:"country,omitempty"` + Country *string // Address line 2. - AddressLine2 *string `json:"addressLine2,omitempty"` + AddressLine2 *string // Address line 3. - AddressLine3 *string `json:"addressLine3,omitempty"` + AddressLine3 *string // Address city. - City *string `json:"city,omitempty"` + City *string // Company name. - CompanyName *string `json:"companyName,omitempty"` + CompanyName *string // Address district. - District *string `json:"district,omitempty"` + District *string // Email address. - Email *string `json:"email,omitempty"` + Email *string // First name. - FirstName *string `json:"firstName,omitempty"` + FirstName *string // Last name. - LastName *string `json:"lastName,omitempty"` + LastName *string // Middle name. - MiddleName *string `json:"middleName,omitempty"` + MiddleName *string // Phone number. - PhoneNumber *string `json:"phoneNumber,omitempty"` + PhoneNumber *string // Postal code. - PostalCode *string `json:"postalCode,omitempty"` + PostalCode *string // Address region. - Region *string `json:"region,omitempty"` + Region *string } // Agreement - An agreement. type Agreement struct { // The properties of an agreement. - Properties *AgreementProperties `json:"properties,omitempty"` + Properties *AgreementProperties // READ-ONLY; Resource Id. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; Resource name. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Resource type. - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // AgreementListResult - Result of listing agreements. type AgreementListResult struct { // READ-ONLY; The link (url) to the next page of results. - NextLink *string `json:"nextLink,omitempty" azure:"ro"` + NextLink *string // READ-ONLY; The list of agreements. - Value []*Agreement `json:"value,omitempty" azure:"ro"` + Value []*Agreement } // AgreementProperties - The properties of an agreement. type AgreementProperties struct { // The list of participants that participates in acceptance of an agreement. - Participants []*Participants `json:"participants,omitempty"` + Participants []*Participants // READ-ONLY; The mode of acceptance for an agreement. - AcceptanceMode *AcceptanceMode `json:"acceptanceMode,omitempty" azure:"ro"` + AcceptanceMode *AcceptanceMode // READ-ONLY; The URL to download the agreement. - AgreementLink *string `json:"agreementLink,omitempty" azure:"ro"` + AgreementLink *string // READ-ONLY; The list of billing profiles associated with agreement and present only for specific agreements. - BillingProfileInfo *ProfileInfo `json:"billingProfileInfo,omitempty" azure:"ro"` + BillingProfileInfo *ProfileInfo // READ-ONLY; The category of the agreement signed by a customer. - Category *Category `json:"category,omitempty" azure:"ro"` + Category *Category // READ-ONLY; The date from which the agreement is effective. - EffectiveDate *time.Time `json:"effectiveDate,omitempty" azure:"ro"` + EffectiveDate *time.Time // READ-ONLY; The date when the agreement expires. - ExpirationDate *time.Time `json:"expirationDate,omitempty" azure:"ro"` + ExpirationDate *time.Time // READ-ONLY; The current status of the agreement. - Status *string `json:"status,omitempty" azure:"ro"` -} - -// AgreementsClientGetOptions contains the optional parameters for the AgreementsClient.Get method. -type AgreementsClientGetOptions struct { - // May be used to expand the participants. - Expand *string -} - -// AgreementsClientListByBillingAccountOptions contains the optional parameters for the AgreementsClient.NewListByBillingAccountPager -// method. -type AgreementsClientListByBillingAccountOptions struct { - // May be used to expand the participants. - Expand *string + Status *string } // Amount - The amount. type Amount struct { // Amount value. - Value *float32 `json:"value,omitempty"` + Value *float32 // READ-ONLY; The currency for the amount value. - Currency *string `json:"currency,omitempty" azure:"ro"` + Currency *string } // AvailableBalance - The latest Azure credit balance. This is the balance available for pay now. type AvailableBalance struct { // The properties of available balance. - Properties *AvailableBalanceProperties `json:"properties,omitempty"` + Properties *AvailableBalanceProperties // READ-ONLY; Resource Id. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; Resource name. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Resource type. - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // AvailableBalanceProperties - The properties of available balance. type AvailableBalanceProperties struct { // READ-ONLY; Balance amount. - Amount *Amount `json:"amount,omitempty" azure:"ro"` -} - -// AvailableBalancesClientGetOptions contains the optional parameters for the AvailableBalancesClient.Get method. -type AvailableBalancesClientGetOptions struct { - // placeholder for future optional parameters + Amount *Amount } // AzurePlan - Details of the Azure plan. type AzurePlan struct { // The sku id. - SKUID *string `json:"skuId,omitempty"` + SKUID *string // READ-ONLY; The sku description. - SKUDescription *string `json:"skuDescription,omitempty" azure:"ro"` + SKUDescription *string } // Customer - A partner's customer. type Customer struct { // The customer. - Properties *CustomerProperties `json:"properties,omitempty"` + Properties *CustomerProperties // READ-ONLY; Resource Id. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; Resource name. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Resource type. - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // CustomerListResult - The list of customers. type CustomerListResult struct { // READ-ONLY; The link (url) to the next page of results. - NextLink *string `json:"nextLink,omitempty" azure:"ro"` + NextLink *string // READ-ONLY; Total number of records. - TotalCount *int32 `json:"totalCount,omitempty" azure:"ro"` + TotalCount *int32 // READ-ONLY; The list of customers. - Value []*Customer `json:"value,omitempty" azure:"ro"` + Value []*Customer } // CustomerPolicy - The customer's Policy. type CustomerPolicy struct { // The properties of a customer's policy. - Properties *CustomerPolicyProperties `json:"properties,omitempty"` + Properties *CustomerPolicyProperties // READ-ONLY; Resource Id. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; Resource name. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Resource type. - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // CustomerPolicyProperties - The properties of a customer's policy. type CustomerPolicyProperties struct { // The policy that controls whether the users in customer's organization can view charges at pay-as-you-go prices. - ViewCharges *ViewCharges `json:"viewCharges,omitempty"` + ViewCharges *ViewCharges } // CustomerProperties - The properties of a customer. type CustomerProperties struct { // The name of the customer. - DisplayName *string `json:"displayName,omitempty"` + DisplayName *string // Azure plans enabled for the customer. - EnabledAzurePlans []*AzurePlan `json:"enabledAzurePlans,omitempty"` + EnabledAzurePlans []*AzurePlan // The list of resellers for which an Azure plan is enabled for the customer. - Resellers []*Reseller `json:"resellers,omitempty"` + Resellers []*Reseller // READ-ONLY; The name of the billing profile for the invoice section. - BillingProfileDisplayName *string `json:"billingProfileDisplayName,omitempty" azure:"ro"` + BillingProfileDisplayName *string // READ-ONLY; The ID of the billing profile for the invoice section. - BillingProfileID *string `json:"billingProfileId,omitempty" azure:"ro"` -} - -// CustomersClientGetOptions contains the optional parameters for the CustomersClient.Get method. -type CustomersClientGetOptions struct { - // May be used to expand enabledAzurePlans and resellers - Expand *string -} - -// CustomersClientListByBillingAccountOptions contains the optional parameters for the CustomersClient.NewListByBillingAccountPager -// method. -type CustomersClientListByBillingAccountOptions struct { - // May be used to filter the list of customers. - Filter *string - // Used for searching customers by their name. Any customer with name containing the search text will be included in the response - Search *string -} - -// CustomersClientListByBillingProfileOptions contains the optional parameters for the CustomersClient.NewListByBillingProfilePager -// method. -type CustomersClientListByBillingProfileOptions struct { - // May be used to filter the list of customers. - Filter *string - // Used for searching customers by their name. Any customer with name containing the search text will be included in the response - Search *string + BillingProfileID *string } // Department - A department. type Department struct { // A department. - Properties *DepartmentProperties `json:"properties,omitempty"` + Properties *DepartmentProperties // READ-ONLY; Resource Id. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; Resource name. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Resource type. - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // DepartmentProperties - The properties of a department. type DepartmentProperties struct { // The cost center associated with the department. - CostCenter *string `json:"costCenter,omitempty"` + CostCenter *string // The name of the department. - DepartmentName *string `json:"departmentName,omitempty"` + DepartmentName *string // Associated enrollment accounts. By default this is not populated, unless it's specified in $expand. - EnrollmentAccounts []*EnrollmentAccount `json:"enrollmentAccounts,omitempty"` + EnrollmentAccounts []*EnrollmentAccount // The status of the department. - Status *string `json:"status,omitempty"` + Status *string } // Document - The properties of a document. type Document struct { // READ-ONLY; The type of the document. - Kind *DocumentType `json:"kind,omitempty" azure:"ro"` + Kind *DocumentType // READ-ONLY; The source of the document. ENF for Brazil and DRS for rest of the world. - Source *DocumentSource `json:"source,omitempty" azure:"ro"` + Source *DocumentSource // READ-ONLY; Document URL. - URL *string `json:"url,omitempty" azure:"ro"` + URL *string } // DownloadURL - A secure URL that can be used to download a an entity until the URL expires. type DownloadURL struct { // READ-ONLY; The time in UTC when the download URL will expire. - ExpiryTime *time.Time `json:"expiryTime,omitempty" azure:"ro"` + ExpiryTime *time.Time // READ-ONLY; The URL to the PDF file. - URL *string `json:"url,omitempty" azure:"ro"` + URL *string } // Enrollment - The properties of an enrollment. type Enrollment struct { // The end date of the enrollment. - EndDate *time.Time `json:"endDate,omitempty"` + EndDate *time.Time // The start date of the enrollment. - StartDate *time.Time `json:"startDate,omitempty"` + StartDate *time.Time // READ-ONLY; The billing cycle for the enrollment. - BillingCycle *string `json:"billingCycle,omitempty" azure:"ro"` + BillingCycle *string // READ-ONLY; The channel type of the enrollment. - Channel *string `json:"channel,omitempty" azure:"ro"` + Channel *string // READ-ONLY; The country code of the enrollment. - CountryCode *string `json:"countryCode,omitempty" azure:"ro"` + CountryCode *string // READ-ONLY; The billing currency for the enrollment. - Currency *string `json:"currency,omitempty" azure:"ro"` + Currency *string // READ-ONLY; The language for the enrollment. - Language *string `json:"language,omitempty" azure:"ro"` + Language *string // READ-ONLY; The policies for Enterprise Agreement enrollments. - Policies *EnrollmentPolicies `json:"policies,omitempty" azure:"ro"` + Policies *EnrollmentPolicies // READ-ONLY; The current status of the enrollment. - Status *string `json:"status,omitempty" azure:"ro"` + Status *string } // EnrollmentAccount - An enrollment account. type EnrollmentAccount struct { // The properties of an enrollment account. - Properties *EnrollmentAccountProperties `json:"properties,omitempty"` + Properties *EnrollmentAccountProperties // READ-ONLY; Resource Id. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; Resource name. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Resource type. - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // EnrollmentAccountContext - The enrollment account context type EnrollmentAccountContext struct { // The cost center associated with the enrollment account. - CostCenter *string `json:"costCenter,omitempty"` + CostCenter *string // The end date of the enrollment account. - EndDate *time.Time `json:"endDate,omitempty"` + EndDate *time.Time // The ID of the enrollment account. - EnrollmentAccountName *string `json:"enrollmentAccountName,omitempty"` + EnrollmentAccountName *string // The start date of the enrollment account. - StartDate *time.Time `json:"startDate,omitempty"` + StartDate *time.Time } // EnrollmentAccountListResult - Result of listing enrollment accounts. type EnrollmentAccountListResult struct { // READ-ONLY; The link (url) to the next page of results. - NextLink *string `json:"nextLink,omitempty" azure:"ro"` + NextLink *string // READ-ONLY; The list of enrollment accounts. - Value []*EnrollmentAccountSummary `json:"value,omitempty" azure:"ro"` + Value []*EnrollmentAccountSummary } // EnrollmentAccountProperties - The properties of an enrollment account. type EnrollmentAccountProperties struct { // The name of the enrollment account. - AccountName *string `json:"accountName,omitempty"` + AccountName *string // The owner of the enrollment account. - AccountOwner *string `json:"accountOwner,omitempty"` + AccountOwner *string // The enrollment account owner email address. - AccountOwnerEmail *string `json:"accountOwnerEmail,omitempty"` + AccountOwnerEmail *string // The cost center associated with the enrollment account. - CostCenter *string `json:"costCenter,omitempty"` + CostCenter *string // Associated department. By default this is not populated, unless it's specified in $expand. - Department *Department `json:"department,omitempty"` + Department *Department // The end date of the enrollment account. - EndDate *time.Time `json:"endDate,omitempty"` + EndDate *time.Time // The start date of the enrollment account. - StartDate *time.Time `json:"startDate,omitempty"` + StartDate *time.Time // The status of the enrollment account. - Status *string `json:"status,omitempty"` + Status *string } // EnrollmentAccountSummary - An enrollment account resource. type EnrollmentAccountSummary struct { // An enrollment account. - Properties *EnrollmentAccountSummaryProperties `json:"properties,omitempty"` + Properties *EnrollmentAccountSummaryProperties // READ-ONLY; Resource Id. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; Resource name. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Resource type. - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // EnrollmentAccountSummaryProperties - The properties of the enrollment account. type EnrollmentAccountSummaryProperties struct { // READ-ONLY; The account owner's principal name. - PrincipalName *string `json:"principalName,omitempty" azure:"ro"` -} - -// EnrollmentAccountsClientGetOptions contains the optional parameters for the EnrollmentAccountsClient.Get method. -type EnrollmentAccountsClientGetOptions struct { - // placeholder for future optional parameters -} - -// EnrollmentAccountsClientListOptions contains the optional parameters for the EnrollmentAccountsClient.NewListPager method. -type EnrollmentAccountsClientListOptions struct { - // placeholder for future optional parameters + PrincipalName *string } // EnrollmentPolicies - The policies for Enterprise Agreement enrollments. type EnrollmentPolicies struct { // READ-ONLY; The policy that controls whether Account Owners can view charges. - AccountOwnerViewCharges *bool `json:"accountOwnerViewCharges,omitempty" azure:"ro"` + AccountOwnerViewCharges *bool // READ-ONLY; The policy that controls whether Department Administrators can view charges. - DepartmentAdminViewCharges *bool `json:"departmentAdminViewCharges,omitempty" azure:"ro"` + DepartmentAdminViewCharges *bool // READ-ONLY; The policy that controls whether Azure marketplace purchases are allowed in the enrollment. - MarketplaceEnabled *bool `json:"marketplaceEnabled,omitempty" azure:"ro"` + MarketplaceEnabled *bool // READ-ONLY; The policy that controls whether Azure reservation purchases are allowed in the enrollment. - ReservedInstancesEnabled *bool `json:"reservedInstancesEnabled,omitempty" azure:"ro"` + ReservedInstancesEnabled *bool } // ErrorDetails - The details of the error. type ErrorDetails struct { // READ-ONLY; Error code. - Code *string `json:"code,omitempty" azure:"ro"` + Code *string // READ-ONLY; The sub details of the error. - Details []*ErrorSubDetailsItem `json:"details,omitempty" azure:"ro"` + Details []*ErrorSubDetailsItem // READ-ONLY; Error message indicating why the operation failed. - Message *string `json:"message,omitempty" azure:"ro"` + Message *string // READ-ONLY; The target of the particular error. - Target *string `json:"target,omitempty" azure:"ro"` + Target *string } // ErrorResponse - Error response indicates that the service is not able to process the incoming request. The reason is provided // in the error message. type ErrorResponse struct { // The details of the error. - Error *ErrorDetails `json:"error,omitempty"` + Error *ErrorDetails } type ErrorSubDetailsItem struct { // READ-ONLY; Error code. - Code *string `json:"code,omitempty" azure:"ro"` + Code *string // READ-ONLY; Error message indicating why the operation failed. - Message *string `json:"message,omitempty" azure:"ro"` + Message *string // READ-ONLY; The target of the particular error. - Target *string `json:"target,omitempty" azure:"ro"` + Target *string } // IndirectRelationshipInfo - The billing profile details of the partner of the customer for an indirect motion. type IndirectRelationshipInfo struct { // The billing account name of the partner or the customer for an indirect motion. - BillingAccountName *string `json:"billingAccountName,omitempty"` + BillingAccountName *string // The billing profile name of the partner or the customer for an indirect motion. - BillingProfileName *string `json:"billingProfileName,omitempty"` + BillingProfileName *string // The display name of the partner or customer for an indirect motion. - DisplayName *string `json:"displayName,omitempty"` + DisplayName *string } // Instruction - An instruction. type Instruction struct { // A billing instruction used during invoice generation. - Properties *InstructionProperties `json:"properties,omitempty"` + Properties *InstructionProperties // READ-ONLY; Resource Id. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; Resource name. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Resource type. - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // InstructionListResult - The list of billing instructions used during invoice generation. type InstructionListResult struct { // READ-ONLY; The link (url) to the next page of results. - NextLink *string `json:"nextLink,omitempty" azure:"ro"` + NextLink *string // READ-ONLY; The list of billing instructions used during invoice generation. - Value []*Instruction `json:"value,omitempty" azure:"ro"` + Value []*Instruction } // InstructionProperties - A billing instruction used during invoice generation. type InstructionProperties struct { // REQUIRED; The amount budgeted for this billing instruction. - Amount *float32 `json:"amount,omitempty"` + Amount *float32 // REQUIRED; The date this billing instruction is no longer in effect. - EndDate *time.Time `json:"endDate,omitempty"` + EndDate *time.Time // REQUIRED; The date this billing instruction goes into effect. - StartDate *time.Time `json:"startDate,omitempty"` + StartDate *time.Time // The date this billing instruction was created. - CreationDate *time.Time `json:"creationDate,omitempty"` -} - -// InstructionsClientGetOptions contains the optional parameters for the InstructionsClient.Get method. -type InstructionsClientGetOptions struct { - // placeholder for future optional parameters -} - -// InstructionsClientListByBillingProfileOptions contains the optional parameters for the InstructionsClient.NewListByBillingProfilePager -// method. -type InstructionsClientListByBillingProfileOptions struct { - // placeholder for future optional parameters -} - -// InstructionsClientPutOptions contains the optional parameters for the InstructionsClient.Put method. -type InstructionsClientPutOptions struct { - // placeholder for future optional parameters + CreationDate *time.Time } // Invoice - An invoice. type Invoice struct { // An invoice. - Properties *InvoiceProperties `json:"properties,omitempty"` + Properties *InvoiceProperties // READ-ONLY; Resource Id. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; Resource name. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Resource type. - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // InvoiceListResult - The list of invoices. type InvoiceListResult struct { // READ-ONLY; The link (url) to the next page of results. - NextLink *string `json:"nextLink,omitempty" azure:"ro"` + NextLink *string // READ-ONLY; Total number of records. - TotalCount *int32 `json:"totalCount,omitempty" azure:"ro"` + TotalCount *int32 // READ-ONLY; The list of invoices. - Value []*Invoice `json:"value,omitempty" azure:"ro"` + Value []*Invoice } // InvoiceProperties - The properties of the invoice. type InvoiceProperties struct { // READ-ONLY; The amount due as of now. - AmountDue *Amount `json:"amountDue,omitempty" azure:"ro"` + AmountDue *Amount // READ-ONLY; The amount of Azure prepayment applied to the charges. This field is applicable to billing accounts with agreement // type Microsoft Customer Agreement. - AzurePrepaymentApplied *Amount `json:"azurePrepaymentApplied,omitempty" azure:"ro"` + AzurePrepaymentApplied *Amount // READ-ONLY; The total charges for the invoice billing period. - BilledAmount *Amount `json:"billedAmount,omitempty" azure:"ro"` + BilledAmount *Amount // READ-ONLY; The Id of the active invoice which is originally billed after this invoice was voided. This field is applicable // to the void invoices only. - BilledDocumentID *string `json:"billedDocumentId,omitempty" azure:"ro"` + BilledDocumentID *string // READ-ONLY; The name of the billing profile for which the invoice is generated. - BillingProfileDisplayName *string `json:"billingProfileDisplayName,omitempty" azure:"ro"` + BillingProfileDisplayName *string // READ-ONLY; The ID of the billing profile for which the invoice is generated. - BillingProfileID *string `json:"billingProfileId,omitempty" azure:"ro"` + BillingProfileID *string // READ-ONLY; The total refund for returns and cancellations during the invoice billing period. This field is applicable to // billing accounts with agreement type Microsoft Customer Agreement. - CreditAmount *Amount `json:"creditAmount,omitempty" azure:"ro"` + CreditAmount *Amount // READ-ONLY; The Id of the invoice which got voided and this credit note was issued as a result. This field is applicable // to the credit notes only. - CreditForDocumentID *string `json:"creditForDocumentId,omitempty" azure:"ro"` + CreditForDocumentID *string // READ-ONLY; The type of the document. - DocumentType *InvoiceDocumentType `json:"documentType,omitempty" azure:"ro"` + DocumentType *InvoiceDocumentType // READ-ONLY; List of documents available to download such as invoice and tax receipt. - Documents []*Document `json:"documents,omitempty" azure:"ro"` + Documents []*Document // READ-ONLY; The due date for the invoice. - DueDate *time.Time `json:"dueDate,omitempty" azure:"ro"` + DueDate *time.Time // READ-ONLY; The amount of free Azure credits applied to the charges. This field is applicable to billing accounts with agreement // type Microsoft Customer Agreement. - FreeAzureCreditApplied *Amount `json:"freeAzureCreditApplied,omitempty" azure:"ro"` + FreeAzureCreditApplied *Amount // READ-ONLY; The date when the invoice was generated. - InvoiceDate *time.Time `json:"invoiceDate,omitempty" azure:"ro"` + InvoiceDate *time.Time // READ-ONLY; The end date of the billing period for which the invoice is generated. - InvoicePeriodEndDate *time.Time `json:"invoicePeriodEndDate,omitempty" azure:"ro"` + InvoicePeriodEndDate *time.Time // READ-ONLY; The start date of the billing period for which the invoice is generated. - InvoicePeriodStartDate *time.Time `json:"invoicePeriodStartDate,omitempty" azure:"ro"` + InvoicePeriodStartDate *time.Time // READ-ONLY; Invoice type. - InvoiceType *InvoiceType `json:"invoiceType,omitempty" azure:"ro"` + InvoiceType *InvoiceType // READ-ONLY; Specifies if the invoice is generated as part of monthly invoicing cycle or not. This field is applicable to // billing accounts with agreement type Microsoft Customer Agreement. - IsMonthlyInvoice *bool `json:"isMonthlyInvoice,omitempty" azure:"ro"` + IsMonthlyInvoice *bool // READ-ONLY; List of payments. - Payments []*PaymentProperties `json:"payments,omitempty" azure:"ro"` + Payments []*PaymentProperties // READ-ONLY; An optional purchase order number for the invoice. - PurchaseOrderNumber *string `json:"purchaseOrderNumber,omitempty" azure:"ro"` + PurchaseOrderNumber *string // READ-ONLY; Rebill details for an invoice. - RebillDetails map[string]*RebillDetails `json:"rebillDetails,omitempty" azure:"ro"` + RebillDetails map[string]*RebillDetails // READ-ONLY; The current status of the invoice. - Status *InvoiceStatus `json:"status,omitempty" azure:"ro"` + Status *InvoiceStatus // READ-ONLY; The pre-tax amount due. This field is applicable to billing accounts with agreement type Microsoft Customer // Agreement. - SubTotal *Amount `json:"subTotal,omitempty" azure:"ro"` + SubTotal *Amount // READ-ONLY; The ID of the subscription for which the invoice is generated. - SubscriptionID *string `json:"subscriptionId,omitempty" azure:"ro"` + SubscriptionID *string // READ-ONLY; The amount of tax charged for the billing period. This field is applicable to billing accounts with agreement // type Microsoft Customer Agreement. - TaxAmount *Amount `json:"taxAmount,omitempty" azure:"ro"` + TaxAmount *Amount // READ-ONLY; The amount due when the invoice was generated. This field is applicable to billing accounts with agreement type // Microsoft Customer Agreement. - TotalAmount *Amount `json:"totalAmount,omitempty" azure:"ro"` + TotalAmount *Amount } // InvoiceSection - An invoice section. type InvoiceSection struct { // The properties of an invoice section. - Properties *InvoiceSectionProperties `json:"properties,omitempty"` + Properties *InvoiceSectionProperties // READ-ONLY; Resource Id. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; Resource name. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Resource type. - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // InvoiceSectionCreationRequest - The properties of the invoice section. type InvoiceSectionCreationRequest struct { // The name of the invoice section. - DisplayName *string `json:"displayName,omitempty"` + DisplayName *string } // InvoiceSectionListResult - The list of invoice sections. type InvoiceSectionListResult struct { // READ-ONLY; The link (url) to the next page of results. - NextLink *string `json:"nextLink,omitempty" azure:"ro"` + NextLink *string // READ-ONLY; Total number of records. - TotalCount *int32 `json:"totalCount,omitempty" azure:"ro"` + TotalCount *int32 // READ-ONLY; The list of invoice sections. - Value []*InvoiceSection `json:"value,omitempty" azure:"ro"` + Value []*InvoiceSection } // InvoiceSectionListWithCreateSubPermissionResult - The list of invoice section properties with create subscription permission. type InvoiceSectionListWithCreateSubPermissionResult struct { // The list of invoice section properties with create subscription permission. - Value []*InvoiceSectionWithCreateSubPermission `json:"value,omitempty"` + Value []*InvoiceSectionWithCreateSubPermission // READ-ONLY; The link (url) to the next page of results. - NextLink *string `json:"nextLink,omitempty" azure:"ro"` + NextLink *string } // InvoiceSectionProperties - The properties of an invoice section. type InvoiceSectionProperties struct { // The name of the invoice section. - DisplayName *string `json:"displayName,omitempty"` + DisplayName *string // Dictionary of metadata associated with the invoice section. - Labels map[string]*string `json:"labels,omitempty"` + Labels map[string]*string // Dictionary of metadata associated with the invoice section. Maximum key/value length supported of 256 characters. Keys/value // should not empty value nor null. Keys can not contain < > % & \ ? / - Tags map[string]*string `json:"tags,omitempty"` + Tags map[string]*string // READ-ONLY; Identifies the state of an invoice section. - State *InvoiceSectionState `json:"state,omitempty" azure:"ro"` + State *InvoiceSectionState // READ-ONLY; The system generated unique identifier for an invoice section. - SystemID *string `json:"systemId,omitempty" azure:"ro"` + SystemID *string // READ-ONLY; Identifies the cloud environments that are associated with an invoice section. This is a system managed optional // field and gets updated as the invoice section gets associated with accounts in various // clouds. - TargetCloud *TargetCloud `json:"targetCloud,omitempty" azure:"ro"` + TargetCloud *TargetCloud } // InvoiceSectionWithCreateSubPermission - Invoice section properties with create subscription permission. type InvoiceSectionWithCreateSubPermission struct { // Enabled azure plans for the associated billing profile. - EnabledAzurePlans []*AzurePlan `json:"enabledAzurePlans,omitempty"` + EnabledAzurePlans []*AzurePlan // READ-ONLY; The name of the billing profile for the invoice section. - BillingProfileDisplayName *string `json:"billingProfileDisplayName,omitempty" azure:"ro"` + BillingProfileDisplayName *string // READ-ONLY; The ID of the billing profile for the invoice section. - BillingProfileID *string `json:"billingProfileId,omitempty" azure:"ro"` + BillingProfileID *string // READ-ONLY; The billing profile spending limit. - BillingProfileSpendingLimit *SpendingLimitForBillingProfile `json:"billingProfileSpendingLimit,omitempty" azure:"ro"` + BillingProfileSpendingLimit *SpendingLimitForBillingProfile // READ-ONLY; The status of the billing profile. - BillingProfileStatus *BillingProfileStatus `json:"billingProfileStatus,omitempty" azure:"ro"` + BillingProfileStatus *BillingProfileStatus // READ-ONLY; Reason for the specified billing profile status. - BillingProfileStatusReasonCode *StatusReasonCodeForBillingProfile `json:"billingProfileStatusReasonCode,omitempty" azure:"ro"` + BillingProfileStatusReasonCode *StatusReasonCodeForBillingProfile // READ-ONLY; The system generated unique identifier for a billing profile. - BillingProfileSystemID *string `json:"billingProfileSystemId,omitempty" azure:"ro"` + BillingProfileSystemID *string // READ-ONLY; The name of the invoice section. - InvoiceSectionDisplayName *string `json:"invoiceSectionDisplayName,omitempty" azure:"ro"` + InvoiceSectionDisplayName *string // READ-ONLY; The ID of the invoice section. - InvoiceSectionID *string `json:"invoiceSectionId,omitempty" azure:"ro"` + InvoiceSectionID *string // READ-ONLY; The system generated unique identifier for an invoice section. - InvoiceSectionSystemID *string `json:"invoiceSectionSystemId,omitempty" azure:"ro"` -} - -// InvoiceSectionsClientBeginCreateOrUpdateOptions contains the optional parameters for the InvoiceSectionsClient.BeginCreateOrUpdate -// method. -type InvoiceSectionsClientBeginCreateOrUpdateOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// InvoiceSectionsClientGetOptions contains the optional parameters for the InvoiceSectionsClient.Get method. -type InvoiceSectionsClientGetOptions struct { - // placeholder for future optional parameters -} - -// InvoiceSectionsClientListByBillingProfileOptions contains the optional parameters for the InvoiceSectionsClient.NewListByBillingProfilePager -// method. -type InvoiceSectionsClientListByBillingProfileOptions struct { - // placeholder for future optional parameters + InvoiceSectionSystemID *string } // InvoiceSectionsOnExpand - The invoice sections associated to the billing profile. By default this is not populated, unless // it's specified in $expand. type InvoiceSectionsOnExpand struct { // The invoice sections associated to the billing profile. - Value []*InvoiceSection `json:"value,omitempty"` + Value []*InvoiceSection // READ-ONLY; Indicates whether there are more invoice sections than the ones listed in this collection. The collection lists // a maximum of 50 invoice sections. To get all invoice sections, use the list invoice // sections API. - HasMoreResults *bool `json:"hasMoreResults,omitempty" azure:"ro"` -} - -// InvoicesClientBeginDownloadBillingSubscriptionInvoiceOptions contains the optional parameters for the InvoicesClient.BeginDownloadBillingSubscriptionInvoice -// method. -type InvoicesClientBeginDownloadBillingSubscriptionInvoiceOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// InvoicesClientBeginDownloadInvoiceOptions contains the optional parameters for the InvoicesClient.BeginDownloadInvoice -// method. -type InvoicesClientBeginDownloadInvoiceOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// InvoicesClientBeginDownloadMultipleBillingProfileInvoicesOptions contains the optional parameters for the InvoicesClient.BeginDownloadMultipleBillingProfileInvoices -// method. -type InvoicesClientBeginDownloadMultipleBillingProfileInvoicesOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// InvoicesClientBeginDownloadMultipleBillingSubscriptionInvoicesOptions contains the optional parameters for the InvoicesClient.BeginDownloadMultipleBillingSubscriptionInvoices -// method. -type InvoicesClientBeginDownloadMultipleBillingSubscriptionInvoicesOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// InvoicesClientGetByIDOptions contains the optional parameters for the InvoicesClient.GetByID method. -type InvoicesClientGetByIDOptions struct { - // placeholder for future optional parameters -} - -// InvoicesClientGetBySubscriptionAndInvoiceIDOptions contains the optional parameters for the InvoicesClient.GetBySubscriptionAndInvoiceID -// method. -type InvoicesClientGetBySubscriptionAndInvoiceIDOptions struct { - // placeholder for future optional parameters -} - -// InvoicesClientGetOptions contains the optional parameters for the InvoicesClient.Get method. -type InvoicesClientGetOptions struct { - // placeholder for future optional parameters -} - -// InvoicesClientListByBillingAccountOptions contains the optional parameters for the InvoicesClient.NewListByBillingAccountPager -// method. -type InvoicesClientListByBillingAccountOptions struct { - // placeholder for future optional parameters -} - -// InvoicesClientListByBillingProfileOptions contains the optional parameters for the InvoicesClient.NewListByBillingProfilePager -// method. -type InvoicesClientListByBillingProfileOptions struct { - // placeholder for future optional parameters -} - -// InvoicesClientListByBillingSubscriptionOptions contains the optional parameters for the InvoicesClient.NewListByBillingSubscriptionPager -// method. -type InvoicesClientListByBillingSubscriptionOptions struct { - // placeholder for future optional parameters + HasMoreResults *bool } // Operation - A Billing REST API operation. type Operation struct { // The object that represents the operation. - Display *OperationDisplay `json:"display,omitempty"` + Display *OperationDisplay // READ-ONLY; Identifies if the operation is a data operation. - IsDataAction *bool `json:"isDataAction,omitempty" azure:"ro"` + IsDataAction *bool // READ-ONLY; Operation name: {provider}/{resource}/{operation}. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string } // OperationDisplay - The object that represents the operation. type OperationDisplay struct { // READ-ONLY; Description of operation. - Description *string `json:"description,omitempty" azure:"ro"` + Description *string // READ-ONLY; Operation type such as read, write and delete. - Operation *string `json:"operation,omitempty" azure:"ro"` + Operation *string // READ-ONLY; Service provider: Microsoft.Billing. - Provider *string `json:"provider,omitempty" azure:"ro"` + Provider *string // READ-ONLY; Resource on which the operation is performed such as invoice and billing subscription. - Resource *string `json:"resource,omitempty" azure:"ro"` + Resource *string } // OperationListResult - The list of billing operations and a URL link to get the next set of results. type OperationListResult struct { // READ-ONLY; URL to get the next set of operation list results if there are any. - NextLink *string `json:"nextLink,omitempty" azure:"ro"` + NextLink *string // READ-ONLY; The list of billing operations supported by the Microsoft.Billing resource provider. - Value []*Operation `json:"value,omitempty" azure:"ro"` -} - -// OperationsClientListOptions contains the optional parameters for the OperationsClient.NewListPager method. -type OperationsClientListOptions struct { - // placeholder for future optional parameters + Value []*Operation } // OperationsErrorDetails - The details of the error. type OperationsErrorDetails struct { // READ-ONLY; Error code. - Code *string `json:"code,omitempty" azure:"ro"` + Code *string // READ-ONLY; Error message indicating why the operation failed. - Message *string `json:"message,omitempty" azure:"ro"` + Message *string // READ-ONLY; The target of the particular error. - Target *string `json:"target,omitempty" azure:"ro"` + Target *string } // OperationsErrorResponse - Error response indicates that the service is not able to process the incoming request. The reason // is provided in the error message. type OperationsErrorResponse struct { // The details of the error. - Error *OperationsErrorDetails `json:"error,omitempty"` + Error *OperationsErrorDetails } // Participants - The details about a participant. type Participants struct { // READ-ONLY; The email address of the participant. - Email *string `json:"email,omitempty" azure:"ro"` + Email *string // READ-ONLY; The acceptance status of the participant. - Status *string `json:"status,omitempty" azure:"ro"` + Status *string // READ-ONLY; The date when the status got changed. - StatusDate *time.Time `json:"statusDate,omitempty" azure:"ro"` + StatusDate *time.Time } // PaymentProperties - The properties of a payment. type PaymentProperties struct { // The family of payment method. - PaymentMethodFamily *PaymentMethodFamily `json:"paymentMethodFamily,omitempty"` + PaymentMethodFamily *PaymentMethodFamily // READ-ONLY; The paid amount. - Amount *Amount `json:"amount,omitempty" azure:"ro"` + Amount *Amount // READ-ONLY; The date when the payment was made. - Date *time.Time `json:"date,omitempty" azure:"ro"` + Date *time.Time // READ-ONLY; The type of payment method. - PaymentMethodType *string `json:"paymentMethodType,omitempty" azure:"ro"` + PaymentMethodType *string // READ-ONLY; The type of payment. - PaymentType *string `json:"paymentType,omitempty" azure:"ro"` + PaymentType *string } // Period - A billing period resource. type Period struct { // A billing period. - Properties *PeriodProperties `json:"properties,omitempty"` + Properties *PeriodProperties // READ-ONLY; Resource Id. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; Resource name. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Resource type. - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // PeriodProperties - The properties of the billing period. type PeriodProperties struct { // READ-ONLY; The end of the date range covered by the billing period. - BillingPeriodEndDate *time.Time `json:"billingPeriodEndDate,omitempty" azure:"ro"` + BillingPeriodEndDate *time.Time // READ-ONLY; The start of the date range covered by the billing period. - BillingPeriodStartDate *time.Time `json:"billingPeriodStartDate,omitempty" azure:"ro"` + BillingPeriodStartDate *time.Time // READ-ONLY; Array of invoice ids that associated with. - InvoiceIDs []*string `json:"invoiceIds,omitempty" azure:"ro"` -} - -// PeriodsClientGetOptions contains the optional parameters for the PeriodsClient.Get method. -type PeriodsClientGetOptions struct { - // placeholder for future optional parameters -} - -// PeriodsClientListOptions contains the optional parameters for the PeriodsClient.NewListPager method. -type PeriodsClientListOptions struct { - // May be used to filter billing periods by billingPeriodEndDate. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. - // It does not currently support 'ne', 'or', or 'not'. - Filter *string - // Skiptoken is only used if a previous operation returned a partial result. If a previous response contains a nextLink element, - // the value of the nextLink element will include a skiptoken parameter that - // specifies a starting point to use for subsequent calls. - Skiptoken *string - // May be used to limit the number of results to the most recent N billing periods. - Top *int32 + InvoiceIDs []*string } // PeriodsListResult - Result of listing billing periods. It contains a list of available billing periods in reverse chronological // order. type PeriodsListResult struct { // READ-ONLY; The link (url) to the next page of results. - NextLink *string `json:"nextLink,omitempty" azure:"ro"` + NextLink *string // READ-ONLY; The list of billing periods. - Value []*Period `json:"value,omitempty" azure:"ro"` -} - -// PermissionsClientListByBillingAccountOptions contains the optional parameters for the PermissionsClient.NewListByBillingAccountPager -// method. -type PermissionsClientListByBillingAccountOptions struct { - // placeholder for future optional parameters -} - -// PermissionsClientListByBillingProfileOptions contains the optional parameters for the PermissionsClient.NewListByBillingProfilePager -// method. -type PermissionsClientListByBillingProfileOptions struct { - // placeholder for future optional parameters -} - -// PermissionsClientListByCustomerOptions contains the optional parameters for the PermissionsClient.NewListByCustomerPager -// method. -type PermissionsClientListByCustomerOptions struct { - // placeholder for future optional parameters -} - -// PermissionsClientListByInvoiceSectionsOptions contains the optional parameters for the PermissionsClient.NewListByInvoiceSectionsPager -// method. -type PermissionsClientListByInvoiceSectionsOptions struct { - // placeholder for future optional parameters + Value []*Period } // PermissionsListResult - Result of list billingPermissions a caller has on a billing account. type PermissionsListResult struct { // READ-ONLY; The link (url) to the next page of results. - NextLink *string `json:"nextLink,omitempty" azure:"ro"` + NextLink *string // READ-ONLY; The list of billingPermissions a caller has on a billing account. - Value []*PermissionsProperties `json:"value,omitempty" azure:"ro"` + Value []*PermissionsProperties } // PermissionsProperties - The set of allowed action and not allowed actions a caller has on a billing account type PermissionsProperties struct { // READ-ONLY; The set of actions that the caller is allowed to perform. - Actions []*string `json:"actions,omitempty" azure:"ro"` + Actions []*string // READ-ONLY; The set of actions that the caller is not allowed to perform. - NotActions []*string `json:"notActions,omitempty" azure:"ro"` -} - -// PoliciesClientGetByBillingProfileOptions contains the optional parameters for the PoliciesClient.GetByBillingProfile method. -type PoliciesClientGetByBillingProfileOptions struct { - // placeholder for future optional parameters -} - -// PoliciesClientGetByCustomerOptions contains the optional parameters for the PoliciesClient.GetByCustomer method. -type PoliciesClientGetByCustomerOptions struct { - // placeholder for future optional parameters -} - -// PoliciesClientUpdateCustomerOptions contains the optional parameters for the PoliciesClient.UpdateCustomer method. -type PoliciesClientUpdateCustomerOptions struct { - // placeholder for future optional parameters -} - -// PoliciesClientUpdateOptions contains the optional parameters for the PoliciesClient.Update method. -type PoliciesClientUpdateOptions struct { - // placeholder for future optional parameters + NotActions []*string } // Policy - A policy. type Policy struct { // The properties of a policy. - Properties *PolicyProperties `json:"properties,omitempty"` + Properties *PolicyProperties // READ-ONLY; Resource Id. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; Resource name. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Resource type. - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // PolicyProperties - The properties of a policy. type PolicyProperties struct { // The policy that controls whether Azure marketplace purchases are allowed for a billing profile. - MarketplacePurchases *MarketplacePurchasesPolicy `json:"marketplacePurchases,omitempty"` + MarketplacePurchases *MarketplacePurchasesPolicy // The policy that controls whether Azure reservation purchases are allowed for a billing profile. - ReservationPurchases *ReservationPurchasesPolicy `json:"reservationPurchases,omitempty"` + ReservationPurchases *ReservationPurchasesPolicy // The policy that controls whether users with Azure RBAC access to a subscription can view its charges. - ViewCharges *ViewChargesPolicy `json:"viewCharges,omitempty"` + ViewCharges *ViewChargesPolicy } // Product - A product. type Product struct { // The properties of a product. - Properties *ProductProperties `json:"properties,omitempty"` + Properties *ProductProperties // READ-ONLY; Resource Id. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; Resource name. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Resource type. - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // ProductProperties - The properties of a product. type ProductProperties struct { // Indicates whether auto renewal is turned on or off for a product. - AutoRenew *AutoRenew `json:"autoRenew,omitempty"` + AutoRenew *AutoRenew // The frequency at which the product will be billed. - BillingFrequency *BillingFrequency `json:"billingFrequency,omitempty"` + BillingFrequency *BillingFrequency // The current status of the product. - Status *ProductStatusType `json:"status,omitempty"` + Status *ProductStatusType // READ-ONLY; The availability of the product. - AvailabilityID *string `json:"availabilityId,omitempty" azure:"ro"` + AvailabilityID *string // READ-ONLY; The name of the billing profile to which the product is billed. - BillingProfileDisplayName *string `json:"billingProfileDisplayName,omitempty" azure:"ro"` + BillingProfileDisplayName *string // READ-ONLY; The ID of the billing profile to which the product is billed. - BillingProfileID *string `json:"billingProfileId,omitempty" azure:"ro"` + BillingProfileID *string // READ-ONLY; The name of the customer for whom the product was purchased. The field is applicable only for Microsoft Partner // Agreement billing account. - CustomerDisplayName *string `json:"customerDisplayName,omitempty" azure:"ro"` + CustomerDisplayName *string // READ-ONLY; The ID of the customer for whom the product was purchased. The field is applicable only for Microsoft Partner // Agreement billing account. - CustomerID *string `json:"customerId,omitempty" azure:"ro"` + CustomerID *string // READ-ONLY; The display name of the product. - DisplayName *string `json:"displayName,omitempty" azure:"ro"` + DisplayName *string // READ-ONLY; The date when the product will be renewed or canceled. - EndDate *time.Time `json:"endDate,omitempty" azure:"ro"` + EndDate *time.Time // READ-ONLY; The name of the invoice section to which the product is billed. - InvoiceSectionDisplayName *string `json:"invoiceSectionDisplayName,omitempty" azure:"ro"` + InvoiceSectionDisplayName *string // READ-ONLY; The ID of the invoice section to which the product is billed. - InvoiceSectionID *string `json:"invoiceSectionId,omitempty" azure:"ro"` + InvoiceSectionID *string // READ-ONLY; The last month charges. - LastCharge *Amount `json:"lastCharge,omitempty" azure:"ro"` + LastCharge *Amount // READ-ONLY; The date of the last charge. - LastChargeDate *time.Time `json:"lastChargeDate,omitempty" azure:"ro"` + LastChargeDate *time.Time // READ-ONLY; The description of the type of product. - ProductType *string `json:"productType,omitempty" azure:"ro"` + ProductType *string // READ-ONLY; The ID of the type of product. - ProductTypeID *string `json:"productTypeId,omitempty" azure:"ro"` + ProductTypeID *string // READ-ONLY; The date when the product was purchased. - PurchaseDate *time.Time `json:"purchaseDate,omitempty" azure:"ro"` + PurchaseDate *time.Time // READ-ONLY; The quantity purchased for the product. - Quantity *float32 `json:"quantity,omitempty" azure:"ro"` + Quantity *float32 // READ-ONLY; Reseller for this product. - Reseller *Reseller `json:"reseller,omitempty" azure:"ro"` + Reseller *Reseller // READ-ONLY; The sku description of the product. - SKUDescription *string `json:"skuDescription,omitempty" azure:"ro"` + SKUDescription *string // READ-ONLY; The sku ID of the product. - SKUID *string `json:"skuId,omitempty" azure:"ro"` + SKUID *string // READ-ONLY; The id of the tenant in which the product is used. - TenantID *string `json:"tenantId,omitempty" azure:"ro"` -} - -// ProductsClientGetOptions contains the optional parameters for the ProductsClient.Get method. -type ProductsClientGetOptions struct { - // placeholder for future optional parameters -} - -// ProductsClientListByBillingAccountOptions contains the optional parameters for the ProductsClient.NewListByBillingAccountPager -// method. -type ProductsClientListByBillingAccountOptions struct { - // May be used to filter by product type. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. It does not currently - // support 'ne', 'or', or 'not'. Tag filter is a key value pair string where key - // and value are separated by a colon (:). - Filter *string -} - -// ProductsClientListByBillingProfileOptions contains the optional parameters for the ProductsClient.NewListByBillingProfilePager -// method. -type ProductsClientListByBillingProfileOptions struct { - // May be used to filter by product type. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. It does not currently - // support 'ne', 'or', or 'not'. Tag filter is a key value pair string where key - // and value are separated by a colon (:). - Filter *string -} - -// ProductsClientListByCustomerOptions contains the optional parameters for the ProductsClient.NewListByCustomerPager method. -type ProductsClientListByCustomerOptions struct { - // placeholder for future optional parameters -} - -// ProductsClientListByInvoiceSectionOptions contains the optional parameters for the ProductsClient.NewListByInvoiceSectionPager -// method. -type ProductsClientListByInvoiceSectionOptions struct { - // May be used to filter by product type. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. It does not currently - // support 'ne', 'or', or 'not'. Tag filter is a key value pair string where key - // and value are separated by a colon (:). - Filter *string -} - -// ProductsClientMoveOptions contains the optional parameters for the ProductsClient.Move method. -type ProductsClientMoveOptions struct { - // placeholder for future optional parameters -} - -// ProductsClientUpdateOptions contains the optional parameters for the ProductsClient.Update method. -type ProductsClientUpdateOptions struct { - // placeholder for future optional parameters -} - -// ProductsClientValidateMoveOptions contains the optional parameters for the ProductsClient.ValidateMove method. -type ProductsClientValidateMoveOptions struct { - // placeholder for future optional parameters + TenantID *string } // ProductsListResult - The list of products. It contains a list of available product summaries in reverse chronological order // by purchase date. type ProductsListResult struct { // READ-ONLY; The link (url) to the next page of results. - NextLink *string `json:"nextLink,omitempty" azure:"ro"` + NextLink *string // READ-ONLY; Total number of records. - TotalCount *int32 `json:"totalCount,omitempty" azure:"ro"` + TotalCount *int32 // READ-ONLY; The list of products. - Value []*Product `json:"value,omitempty" azure:"ro"` + Value []*Product } // Profile - A billing profile. type Profile struct { // The properties of the billing profile. - Properties *ProfileProperties `json:"properties,omitempty"` + Properties *ProfileProperties // READ-ONLY; Resource Id. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; Resource name. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Resource type. - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // ProfileCreationRequest - The request parameters for creating a new billing profile. type ProfileCreationRequest struct { // The address of the individual or organization that is responsible for the billing profile. - BillTo *AddressDetails `json:"billTo,omitempty"` + BillTo *AddressDetails // The name of the billing profile. - DisplayName *string `json:"displayName,omitempty"` + DisplayName *string // Enabled azure plans for the billing profile. - EnabledAzurePlans []*AzurePlan `json:"enabledAzurePlans,omitempty"` + EnabledAzurePlans []*AzurePlan // Flag controlling whether the invoices for the billing profile are sent through email. - InvoiceEmailOptIn *bool `json:"invoiceEmailOptIn,omitempty"` + InvoiceEmailOptIn *bool // The purchase order name that will appear on the invoices generated for the billing profile. - PoNumber *string `json:"poNumber,omitempty"` + PoNumber *string } // ProfileInfo - Details about billing profile associated with agreement and available only for specific agreements. type ProfileInfo struct { // The name of the billing profile - BillingProfileDisplayName *string `json:"billingProfileDisplayName,omitempty"` + BillingProfileDisplayName *string // The unique identifier for the billing profile. - BillingProfileID *string `json:"billingProfileId,omitempty"` + BillingProfileID *string // Billing account name. This property is available for a specific type of agreement. - IndirectRelationshipOrganizationName *string `json:"indirectRelationshipOrganizationName,omitempty"` + IndirectRelationshipOrganizationName *string } // ProfileListResult - The list of billing profiles. type ProfileListResult struct { // READ-ONLY; The link (url) to the next page of results. - NextLink *string `json:"nextLink,omitempty" azure:"ro"` + NextLink *string // READ-ONLY; Total number of records. - TotalCount *int32 `json:"totalCount,omitempty" azure:"ro"` + TotalCount *int32 // READ-ONLY; The list of billing profiles. - Value []*Profile `json:"value,omitempty" azure:"ro"` + Value []*Profile } // ProfileProperties - The properties of the billing profile. type ProfileProperties struct { // Billing address. - BillTo *AddressDetails `json:"billTo,omitempty"` + BillTo *AddressDetails // The name of the billing profile. - DisplayName *string `json:"displayName,omitempty"` + DisplayName *string // Information about the enabled azure plans. - EnabledAzurePlans []*AzurePlan `json:"enabledAzurePlans,omitempty"` + EnabledAzurePlans []*AzurePlan // Flag controlling whether the invoices for the billing profile are sent through email. - InvoiceEmailOptIn *bool `json:"invoiceEmailOptIn,omitempty"` + InvoiceEmailOptIn *bool // The invoice sections associated to the billing profile. By default this is not populated, unless it's specified in $expand. - InvoiceSections *InvoiceSectionsOnExpand `json:"invoiceSections,omitempty"` + InvoiceSections *InvoiceSectionsOnExpand // The purchase order name that will appear on the invoices generated for the billing profile. - PoNumber *string `json:"poNumber,omitempty"` + PoNumber *string // Tags of billing profiles. - Tags map[string]*string `json:"tags,omitempty"` + Tags map[string]*string // READ-ONLY; Identifies which services and purchases are paid by a billing profile. - BillingRelationshipType *BillingRelationshipType `json:"billingRelationshipType,omitempty" azure:"ro"` + BillingRelationshipType *BillingRelationshipType // READ-ONLY; The currency in which the charges for the billing profile are billed. - Currency *string `json:"currency,omitempty" azure:"ro"` + Currency *string // READ-ONLY; Indicates whether user has read access to the billing profile. - HasReadAccess *bool `json:"hasReadAccess,omitempty" azure:"ro"` + HasReadAccess *bool // READ-ONLY; Identifies the billing profile that is linked to another billing profile in indirect purchase motion. - IndirectRelationshipInfo *IndirectRelationshipInfo `json:"indirectRelationshipInfo,omitempty" azure:"ro"` + IndirectRelationshipInfo *IndirectRelationshipInfo // READ-ONLY; The day of the month when the invoice for the billing profile is generated. - InvoiceDay *int32 `json:"invoiceDay,omitempty" azure:"ro"` + InvoiceDay *int32 // READ-ONLY; The billing profile spending limit. - SpendingLimit *SpendingLimit `json:"spendingLimit,omitempty" azure:"ro"` + SpendingLimit *SpendingLimit // READ-ONLY; The status of the billing profile. - Status *BillingProfileStatus `json:"status,omitempty" azure:"ro"` + Status *BillingProfileStatus // READ-ONLY; Reason for the specified billing profile status. - StatusReasonCode *StatusReasonCode `json:"statusReasonCode,omitempty" azure:"ro"` + StatusReasonCode *StatusReasonCode // READ-ONLY; The system generated unique identifier for a billing profile. - SystemID *string `json:"systemId,omitempty" azure:"ro"` + SystemID *string // READ-ONLY; Identifies the cloud environments that are associated with a billing profile. This is a system managed optional // field and gets updated as the billing profile gets associated with accounts in various // clouds. - TargetClouds []*TargetCloud `json:"targetClouds,omitempty" azure:"ro"` -} - -// ProfilesClientBeginCreateOrUpdateOptions contains the optional parameters for the ProfilesClient.BeginCreateOrUpdate method. -type ProfilesClientBeginCreateOrUpdateOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// ProfilesClientGetOptions contains the optional parameters for the ProfilesClient.Get method. -type ProfilesClientGetOptions struct { - // May be used to expand the invoice sections. - Expand *string -} - -// ProfilesClientListByBillingAccountOptions contains the optional parameters for the ProfilesClient.NewListByBillingAccountPager -// method. -type ProfilesClientListByBillingAccountOptions struct { - // May be used to expand the invoice sections. - Expand *string + TargetClouds []*TargetCloud } // ProfilesOnExpand - The billing profiles associated with the billing account. By default this is not populated, unless it's // specified in $expand. type ProfilesOnExpand struct { // The billing profiles associated with the billing account. - Value []*Profile `json:"value,omitempty"` + Value []*Profile // READ-ONLY; Indicates whether there are more billing profiles than the ones listed in this collection. The collection lists // a maximum of 50 billing profiles. To get all billing profiles, use the list billing // profiles API. - HasMoreResults *bool `json:"hasMoreResults,omitempty" azure:"ro"` + HasMoreResults *bool } // Property - A billing property. type Property struct { // A billing property. - Properties *PropertyProperties `json:"properties,omitempty"` + Properties *PropertyProperties // READ-ONLY; Resource Id. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; Resource name. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Resource type. - Type *string `json:"type,omitempty" azure:"ro"` -} - -// PropertyClientGetOptions contains the optional parameters for the PropertyClient.Get method. -type PropertyClientGetOptions struct { - // placeholder for future optional parameters -} - -// PropertyClientUpdateOptions contains the optional parameters for the PropertyClient.Update method. -type PropertyClientUpdateOptions struct { - // placeholder for future optional parameters + Type *string } // PropertyProperties - The billing property. type PropertyProperties struct { // The cost center applied to the subscription. - CostCenter *string `json:"costCenter,omitempty"` + CostCenter *string // READ-ONLY; The email address on which the account admin gets all Azure notifications. - AccountAdminNotificationEmailAddress *string `json:"accountAdminNotificationEmailAddress,omitempty" azure:"ro"` + AccountAdminNotificationEmailAddress *string // READ-ONLY; The name of the billing account to which the subscription is billed. - BillingAccountDisplayName *string `json:"billingAccountDisplayName,omitempty" azure:"ro"` + BillingAccountDisplayName *string // READ-ONLY; The ID of the billing account to which the subscription is billed. - BillingAccountID *string `json:"billingAccountId,omitempty" azure:"ro"` + BillingAccountID *string // READ-ONLY; The name of the billing profile to which the subscription is billed. - BillingProfileDisplayName *string `json:"billingProfileDisplayName,omitempty" azure:"ro"` + BillingProfileDisplayName *string // READ-ONLY; The ID of the billing profile to which the subscription is billed. - BillingProfileID *string `json:"billingProfileId,omitempty" azure:"ro"` + BillingProfileID *string // READ-ONLY; The billing profile spending limit. - BillingProfileSpendingLimit *BillingProfileSpendingLimit `json:"billingProfileSpendingLimit,omitempty" azure:"ro"` + BillingProfileSpendingLimit *BillingProfileSpendingLimit // READ-ONLY; The status of the billing profile. - BillingProfileStatus *BillingProfileStatus `json:"billingProfileStatus,omitempty" azure:"ro"` + BillingProfileStatus *BillingProfileStatus // READ-ONLY; Reason for the specified billing profile status. - BillingProfileStatusReasonCode *BillingProfileStatusReasonCode `json:"billingProfileStatusReasonCode,omitempty" azure:"ro"` + BillingProfileStatusReasonCode *BillingProfileStatusReasonCode // READ-ONLY; The Azure AD tenant ID of the billing account for the subscription. - BillingTenantID *string `json:"billingTenantId,omitempty" azure:"ro"` + BillingTenantID *string // READ-ONLY; The name of the invoice section to which the subscription is billed. - InvoiceSectionDisplayName *string `json:"invoiceSectionDisplayName,omitempty" azure:"ro"` + InvoiceSectionDisplayName *string // READ-ONLY; The ID of the invoice section to which the subscription is billed. - InvoiceSectionID *string `json:"invoiceSectionId,omitempty" azure:"ro"` + InvoiceSectionID *string // READ-ONLY; Indicates whether user is the account admin. - IsAccountAdmin *bool `json:"isAccountAdmin,omitempty" azure:"ro"` + IsAccountAdmin *bool // READ-ONLY; The product ID of the Azure plan. - ProductID *string `json:"productId,omitempty" azure:"ro"` + ProductID *string // READ-ONLY; The product name of the Azure plan. - ProductName *string `json:"productName,omitempty" azure:"ro"` + ProductName *string // READ-ONLY; The sku description of the Azure plan for the subscription. - SKUDescription *string `json:"skuDescription,omitempty" azure:"ro"` + SKUDescription *string // READ-ONLY; The sku ID of the Azure plan for the subscription. - SKUID *string `json:"skuId,omitempty" azure:"ro"` + SKUID *string } // RebillDetails - The rebill details of an invoice. type RebillDetails struct { // READ-ONLY; The ID of credit note. - CreditNoteDocumentID *string `json:"creditNoteDocumentId,omitempty" azure:"ro"` + CreditNoteDocumentID *string // READ-ONLY; The ID of invoice. - InvoiceDocumentID *string `json:"invoiceDocumentId,omitempty" azure:"ro"` + InvoiceDocumentID *string // READ-ONLY; Rebill details for an invoice. - RebillDetails map[string]*RebillDetails `json:"rebillDetails,omitempty" azure:"ro"` + RebillDetails map[string]*RebillDetails } // Reseller - Details of the reseller. type Reseller struct { // READ-ONLY; The name of the reseller. - Description *string `json:"description,omitempty" azure:"ro"` + Description *string // READ-ONLY; The MPN ID of the reseller. - ResellerID *string `json:"resellerId,omitempty" azure:"ro"` + ResellerID *string } // Reservation - The definition of the reservation. type Reservation struct { // The properties associated to this reservation - Properties *ReservationProperty `json:"properties,omitempty"` + Properties *ReservationProperty // The sku information associated to this reservation - SKU *ReservationSKUProperty `json:"sku,omitempty"` + SKU *ReservationSKUProperty // READ-ONLY; The id of the reservation. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; The location of the reservation. - Location *string `json:"location,omitempty" azure:"ro"` + Location *string // READ-ONLY; The name of the reservation. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; The type of the reservation. - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // ReservationProperty - The property of reservation object. type ReservationProperty struct { // The array of applied scopes of a reservation. Will be null if the reservation is in Shared scope - AppliedScopes []*string `json:"appliedScopes,omitempty"` + AppliedScopes []*string // READ-ONLY; The applied scope type of the reservation. - AppliedScopeType *string `json:"appliedScopeType,omitempty" azure:"ro"` + AppliedScopeType *string // READ-ONLY; The display name of the reservation - DisplayName *string `json:"displayName,omitempty" azure:"ro"` + DisplayName *string // READ-ONLY; The provisioning state of the reservation for display, e.g. Succeeded - DisplayProvisioningState *string `json:"displayProvisioningState,omitempty" azure:"ro"` + DisplayProvisioningState *string // READ-ONLY; The effective date time of the reservation - EffectiveDateTime *string `json:"effectiveDateTime,omitempty" azure:"ro"` + EffectiveDateTime *string // READ-ONLY; The expiry date of the reservation - ExpiryDate *string `json:"expiryDate,omitempty" azure:"ro"` + ExpiryDate *string // READ-ONLY; The provisioning state of the reservation, e.g. Succeeded - ProvisioningState *string `json:"provisioningState,omitempty" azure:"ro"` + ProvisioningState *string // READ-ONLY; The provisioning state of the reservation, e.g. Succeeded - ProvisioningSubState *string `json:"provisioningSubState,omitempty" azure:"ro"` + ProvisioningSubState *string // READ-ONLY; The number of the reservation. - Quantity *float32 `json:"quantity,omitempty" azure:"ro"` + Quantity *float32 // READ-ONLY; The renew state of the reservation - Renew *bool `json:"renew,omitempty" azure:"ro"` + Renew *bool // READ-ONLY; The renew source of the reservation - RenewSource *string `json:"renewSource,omitempty" azure:"ro"` + RenewSource *string // READ-ONLY; The reserved source type of the reservation, e.g. virtual machine. - ReservedResourceType *string `json:"reservedResourceType,omitempty" azure:"ro"` + ReservedResourceType *string // READ-ONLY; The sku description of the reservation - SKUDescription *string `json:"skuDescription,omitempty" azure:"ro"` + SKUDescription *string // READ-ONLY; The term of the reservation, e.g. P1Y - Term *string `json:"term,omitempty" azure:"ro"` + Term *string // READ-ONLY; The applied scope type of the reservation for display, e.g. Shared - UserFriendlyAppliedScopeType *string `json:"userFriendlyAppliedScopeType,omitempty" azure:"ro"` + UserFriendlyAppliedScopeType *string // READ-ONLY; The renew state of the reservation for display, e.g. On - UserFriendlyRenewState *string `json:"userFriendlyRenewState,omitempty" azure:"ro"` + UserFriendlyRenewState *string // READ-ONLY; Reservation utilization - Utilization *ReservationPropertyUtilization `json:"utilization,omitempty" azure:"ro"` + Utilization *ReservationPropertyUtilization } // ReservationPropertyUtilization - Reservation utilization type ReservationPropertyUtilization struct { // The array of aggregates of a reservation's utilization - Aggregates []*ReservationUtilizationAggregates `json:"aggregates,omitempty"` + Aggregates []*ReservationUtilizationAggregates // READ-ONLY; The number of days trend for a reservation - Trend *string `json:"trend,omitempty" azure:"ro"` + Trend *string } // ReservationSKUProperty - The property of reservation sku object. type ReservationSKUProperty struct { // READ-ONLY; The name of the reservation sku. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string } // ReservationSummary - The roll up count summary of reservations in each state type ReservationSummary struct { // READ-ONLY; The number of reservation in Cancelled state - CancelledCount *float32 `json:"cancelledCount,omitempty" azure:"ro"` + CancelledCount *float32 // READ-ONLY; The number of reservation in Expired state - ExpiredCount *float32 `json:"expiredCount,omitempty" azure:"ro"` + ExpiredCount *float32 // READ-ONLY; The number of reservation in Expiring state - ExpiringCount *float32 `json:"expiringCount,omitempty" azure:"ro"` + ExpiringCount *float32 // READ-ONLY; The number of reservation in Failed state - FailedCount *float32 `json:"failedCount,omitempty" azure:"ro"` + FailedCount *float32 // READ-ONLY; The number of reservation in Pending state - PendingCount *float32 `json:"pendingCount,omitempty" azure:"ro"` + PendingCount *float32 // READ-ONLY; The number of reservation in Succeeded state - SucceededCount *float32 `json:"succeededCount,omitempty" azure:"ro"` + SucceededCount *float32 } // ReservationUtilizationAggregates - The aggregate values of reservation utilization type ReservationUtilizationAggregates struct { // READ-ONLY; The grain of the aggregate - Grain *float32 `json:"grain,omitempty" azure:"ro"` + Grain *float32 // READ-ONLY; The grain unit of the aggregate - GrainUnit *string `json:"grainUnit,omitempty" azure:"ro"` + GrainUnit *string // READ-ONLY; The aggregate value - Value *float32 `json:"value,omitempty" azure:"ro"` + Value *float32 // READ-ONLY; The aggregate value unit - ValueUnit *string `json:"valueUnit,omitempty" azure:"ro"` -} - -// ReservationsClientListByBillingAccountOptions contains the optional parameters for the ReservationsClient.NewListByBillingAccountPager -// method. -type ReservationsClientListByBillingAccountOptions struct { - // May be used to filter by reservation properties. The filter supports 'eq', 'or', and 'and'. It does not currently support - // 'ne', 'gt', 'le', 'ge', or 'not'. - Filter *string - // May be used to sort order by reservation properties. - Orderby *string - // To indicate whether to refresh the roll up counts of the reservations group by provisioning states - RefreshSummary *string - // The selected provisioning state - SelectedState *string -} - -// ReservationsClientListByBillingProfileOptions contains the optional parameters for the ReservationsClient.NewListByBillingProfilePager -// method. -type ReservationsClientListByBillingProfileOptions struct { - // May be used to filter by reservation properties. The filter supports 'eq', 'or', and 'and'. It does not currently support - // 'ne', 'gt', 'le', 'ge', or 'not'. - Filter *string - // May be used to sort order by reservation properties. - Orderby *string - // To indicate whether to refresh the roll up counts of the reservations group by provisioning state - RefreshSummary *string - // The selected provisioning state - SelectedState *string + ValueUnit *string } // ReservationsListResult - The list of reservations and summary of roll out count of reservations in each state. type ReservationsListResult struct { // The roll out count summary of the reservations - Summary *ReservationSummary `json:"summary,omitempty"` + Summary *ReservationSummary // READ-ONLY; The link (url) to the next page of results. - NextLink *string `json:"nextLink,omitempty" azure:"ro"` + NextLink *string // READ-ONLY; The list of reservations. - Value []*Reservation `json:"value,omitempty" azure:"ro"` + Value []*Reservation } // Resource - The Resource model definition. type Resource struct { // READ-ONLY; Resource Id. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; Resource name. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Resource type. - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // RoleAssignment - The role assignment type RoleAssignment struct { // The properties of the role assignment. - Properties *RoleAssignmentProperties `json:"properties,omitempty"` + Properties *RoleAssignmentProperties // READ-ONLY; Resource Id. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; Resource name. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Resource type. - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // RoleAssignmentListResult - The list of role assignments. type RoleAssignmentListResult struct { // READ-ONLY; The link (url) to the next page of results. - NextLink *string `json:"nextLink,omitempty" azure:"ro"` + NextLink *string // READ-ONLY; The list of role assignments. - Value []*RoleAssignment `json:"value,omitempty" azure:"ro"` + Value []*RoleAssignment } // RoleAssignmentProperties - The properties of the role assignment. type RoleAssignmentProperties struct { // The principal id of the user to whom the role was assigned. - PrincipalID *string `json:"principalId,omitempty"` + PrincipalID *string // The principal tenant id of the user to whom the role was assigned. - PrincipalTenantID *string `json:"principalTenantId,omitempty"` + PrincipalTenantID *string // The ID of the role definition. - RoleDefinitionID *string `json:"roleDefinitionId,omitempty"` + RoleDefinitionID *string // The authentication type. - UserAuthenticationType *string `json:"userAuthenticationType,omitempty"` + UserAuthenticationType *string // The email address of the user. - UserEmailAddress *string `json:"userEmailAddress,omitempty"` + UserEmailAddress *string // READ-ONLY; The principal Id of the user who created the role assignment. - CreatedByPrincipalID *string `json:"createdByPrincipalId,omitempty" azure:"ro"` + CreatedByPrincipalID *string // READ-ONLY; The tenant Id of the user who created the role assignment. - CreatedByPrincipalTenantID *string `json:"createdByPrincipalTenantId,omitempty" azure:"ro"` + CreatedByPrincipalTenantID *string // READ-ONLY; The email address of the user who created the role assignment. - CreatedByUserEmailAddress *string `json:"createdByUserEmailAddress,omitempty" azure:"ro"` + CreatedByUserEmailAddress *string // READ-ONLY; The date the role assignment was created. - CreatedOn *string `json:"createdOn,omitempty" azure:"ro"` + CreatedOn *string // READ-ONLY; The scope at which the role was assigned. - Scope *string `json:"scope,omitempty" azure:"ro"` -} - -// RoleAssignmentsClientDeleteByBillingAccountOptions contains the optional parameters for the RoleAssignmentsClient.DeleteByBillingAccount -// method. -type RoleAssignmentsClientDeleteByBillingAccountOptions struct { - // placeholder for future optional parameters -} - -// RoleAssignmentsClientDeleteByBillingProfileOptions contains the optional parameters for the RoleAssignmentsClient.DeleteByBillingProfile -// method. -type RoleAssignmentsClientDeleteByBillingProfileOptions struct { - // placeholder for future optional parameters -} - -// RoleAssignmentsClientDeleteByInvoiceSectionOptions contains the optional parameters for the RoleAssignmentsClient.DeleteByInvoiceSection -// method. -type RoleAssignmentsClientDeleteByInvoiceSectionOptions struct { - // placeholder for future optional parameters -} - -// RoleAssignmentsClientGetByBillingAccountOptions contains the optional parameters for the RoleAssignmentsClient.GetByBillingAccount -// method. -type RoleAssignmentsClientGetByBillingAccountOptions struct { - // placeholder for future optional parameters -} - -// RoleAssignmentsClientGetByBillingProfileOptions contains the optional parameters for the RoleAssignmentsClient.GetByBillingProfile -// method. -type RoleAssignmentsClientGetByBillingProfileOptions struct { - // placeholder for future optional parameters -} - -// RoleAssignmentsClientGetByInvoiceSectionOptions contains the optional parameters for the RoleAssignmentsClient.GetByInvoiceSection -// method. -type RoleAssignmentsClientGetByInvoiceSectionOptions struct { - // placeholder for future optional parameters -} - -// RoleAssignmentsClientListByBillingAccountOptions contains the optional parameters for the RoleAssignmentsClient.NewListByBillingAccountPager -// method. -type RoleAssignmentsClientListByBillingAccountOptions struct { - // placeholder for future optional parameters -} - -// RoleAssignmentsClientListByBillingProfileOptions contains the optional parameters for the RoleAssignmentsClient.NewListByBillingProfilePager -// method. -type RoleAssignmentsClientListByBillingProfileOptions struct { - // placeholder for future optional parameters -} - -// RoleAssignmentsClientListByInvoiceSectionOptions contains the optional parameters for the RoleAssignmentsClient.NewListByInvoiceSectionPager -// method. -type RoleAssignmentsClientListByInvoiceSectionOptions struct { - // placeholder for future optional parameters + Scope *string } // RoleDefinition - The properties of a role definition. type RoleDefinition struct { // The properties of the a role definition. - Properties *RoleDefinitionProperties `json:"properties,omitempty"` + Properties *RoleDefinitionProperties // READ-ONLY; Resource Id. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; Resource name. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Resource type. - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // RoleDefinitionListResult - The list of role definitions. type RoleDefinitionListResult struct { // READ-ONLY; The link (url) to the next page of results. - NextLink *string `json:"nextLink,omitempty" azure:"ro"` + NextLink *string // READ-ONLY; The role definitions. - Value []*RoleDefinition `json:"value,omitempty" azure:"ro"` + Value []*RoleDefinition } // RoleDefinitionProperties - The properties of the a role definition. type RoleDefinitionProperties struct { // The billingPermissions the role has - Permissions []*PermissionsProperties `json:"permissions,omitempty"` + Permissions []*PermissionsProperties // READ-ONLY; The role description - Description *string `json:"description,omitempty" azure:"ro"` + Description *string // READ-ONLY; The name of the role - RoleName *string `json:"roleName,omitempty" azure:"ro"` -} - -// RoleDefinitionsClientGetByBillingAccountOptions contains the optional parameters for the RoleDefinitionsClient.GetByBillingAccount -// method. -type RoleDefinitionsClientGetByBillingAccountOptions struct { - // placeholder for future optional parameters -} - -// RoleDefinitionsClientGetByBillingProfileOptions contains the optional parameters for the RoleDefinitionsClient.GetByBillingProfile -// method. -type RoleDefinitionsClientGetByBillingProfileOptions struct { - // placeholder for future optional parameters -} - -// RoleDefinitionsClientGetByInvoiceSectionOptions contains the optional parameters for the RoleDefinitionsClient.GetByInvoiceSection -// method. -type RoleDefinitionsClientGetByInvoiceSectionOptions struct { - // placeholder for future optional parameters -} - -// RoleDefinitionsClientListByBillingAccountOptions contains the optional parameters for the RoleDefinitionsClient.NewListByBillingAccountPager -// method. -type RoleDefinitionsClientListByBillingAccountOptions struct { - // placeholder for future optional parameters -} - -// RoleDefinitionsClientListByBillingProfileOptions contains the optional parameters for the RoleDefinitionsClient.NewListByBillingProfilePager -// method. -type RoleDefinitionsClientListByBillingProfileOptions struct { - // placeholder for future optional parameters -} - -// RoleDefinitionsClientListByInvoiceSectionOptions contains the optional parameters for the RoleDefinitionsClient.NewListByInvoiceSectionPager -// method. -type RoleDefinitionsClientListByInvoiceSectionOptions struct { - // placeholder for future optional parameters + RoleName *string } // Subscription - A billing subscription. type Subscription struct { // The billing properties of a subscription. - Properties *SubscriptionProperties `json:"properties,omitempty"` + Properties *SubscriptionProperties // READ-ONLY; Resource Id. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; Resource name. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Resource type. - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // SubscriptionProperties - The billing properties of a subscription. type SubscriptionProperties struct { // The cost center applied to the subscription. - CostCenter *string `json:"costCenter,omitempty"` + CostCenter *string // The sku ID of the Azure plan for the subscription. - SKUID *string `json:"skuId,omitempty"` + SKUID *string // The current billing status of the subscription. - SubscriptionBillingStatus *BillingSubscriptionStatusType `json:"subscriptionBillingStatus,omitempty"` + SubscriptionBillingStatus *BillingSubscriptionStatusType // READ-ONLY; The name of the billing profile to which the subscription is billed. - BillingProfileDisplayName *string `json:"billingProfileDisplayName,omitempty" azure:"ro"` + BillingProfileDisplayName *string // READ-ONLY; The ID of the billing profile to which the subscription is billed. - BillingProfileID *string `json:"billingProfileId,omitempty" azure:"ro"` + BillingProfileID *string // READ-ONLY; The name of the customer for whom the subscription was created. The field is applicable only for Microsoft Partner // Agreement billing account. - CustomerDisplayName *string `json:"customerDisplayName,omitempty" azure:"ro"` + CustomerDisplayName *string // READ-ONLY; The ID of the customer for whom the subscription was created. The field is applicable only for Microsoft Partner // Agreement billing account. - CustomerID *string `json:"customerId,omitempty" azure:"ro"` + CustomerID *string // READ-ONLY; The name of the subscription. - DisplayName *string `json:"displayName,omitempty" azure:"ro"` + DisplayName *string // READ-ONLY; The name of the invoice section to which the subscription is billed. - InvoiceSectionDisplayName *string `json:"invoiceSectionDisplayName,omitempty" azure:"ro"` + InvoiceSectionDisplayName *string // READ-ONLY; The ID of the invoice section to which the subscription is billed. - InvoiceSectionID *string `json:"invoiceSectionId,omitempty" azure:"ro"` + InvoiceSectionID *string // READ-ONLY; The last month charges. - LastMonthCharges *Amount `json:"lastMonthCharges,omitempty" azure:"ro"` + LastMonthCharges *Amount // READ-ONLY; The current month to date charges. - MonthToDateCharges *Amount `json:"monthToDateCharges,omitempty" azure:"ro"` + MonthToDateCharges *Amount // READ-ONLY; Reseller for this subscription. - Reseller *Reseller `json:"reseller,omitempty" azure:"ro"` + Reseller *Reseller // READ-ONLY; The sku description of the Azure plan for the subscription. - SKUDescription *string `json:"skuDescription,omitempty" azure:"ro"` + SKUDescription *string // READ-ONLY; The ID of the subscription. - SubscriptionID *string `json:"subscriptionId,omitempty" azure:"ro"` + SubscriptionID *string // READ-ONLY; The suspension reason for a subscription. Applies only to subscriptions in Microsoft Online Services Program // billing accounts. - SuspensionReasons []*string `json:"suspensionReasons,omitempty" azure:"ro"` -} - -// SubscriptionsClientBeginMoveOptions contains the optional parameters for the SubscriptionsClient.BeginMove method. -type SubscriptionsClientBeginMoveOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// SubscriptionsClientGetOptions contains the optional parameters for the SubscriptionsClient.Get method. -type SubscriptionsClientGetOptions struct { - // placeholder for future optional parameters -} - -// SubscriptionsClientListByBillingAccountOptions contains the optional parameters for the SubscriptionsClient.NewListByBillingAccountPager -// method. -type SubscriptionsClientListByBillingAccountOptions struct { - // placeholder for future optional parameters -} - -// SubscriptionsClientListByBillingProfileOptions contains the optional parameters for the SubscriptionsClient.NewListByBillingProfilePager -// method. -type SubscriptionsClientListByBillingProfileOptions struct { - // placeholder for future optional parameters -} - -// SubscriptionsClientListByCustomerOptions contains the optional parameters for the SubscriptionsClient.NewListByCustomerPager -// method. -type SubscriptionsClientListByCustomerOptions struct { - // placeholder for future optional parameters -} - -// SubscriptionsClientListByInvoiceSectionOptions contains the optional parameters for the SubscriptionsClient.NewListByInvoiceSectionPager -// method. -type SubscriptionsClientListByInvoiceSectionOptions struct { - // placeholder for future optional parameters -} - -// SubscriptionsClientUpdateOptions contains the optional parameters for the SubscriptionsClient.Update method. -type SubscriptionsClientUpdateOptions struct { - // placeholder for future optional parameters -} - -// SubscriptionsClientValidateMoveOptions contains the optional parameters for the SubscriptionsClient.ValidateMove method. -type SubscriptionsClientValidateMoveOptions struct { - // placeholder for future optional parameters + SuspensionReasons []*string } // SubscriptionsListResult - The list of billing subscriptions. type SubscriptionsListResult struct { // READ-ONLY; The link (url) to the next page of results. - NextLink *string `json:"nextLink,omitempty" azure:"ro"` + NextLink *string // READ-ONLY; Total number of records. - TotalCount *int32 `json:"totalCount,omitempty" azure:"ro"` + TotalCount *int32 // READ-ONLY; The list of billing subscriptions. - Value []*Subscription `json:"value,omitempty" azure:"ro"` + Value []*Subscription } // Transaction - A transaction. type Transaction struct { // The properties of a transaction. - Properties *TransactionProperties `json:"properties,omitempty"` + Properties *TransactionProperties // READ-ONLY; Resource Id. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; Resource name. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Resource type. - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // TransactionListResult - The list of transactions. type TransactionListResult struct { // READ-ONLY; The link (url) to the next page of results. - NextLink *string `json:"nextLink,omitempty" azure:"ro"` + NextLink *string // READ-ONLY; Total number of records. - TotalCount *int32 `json:"totalCount,omitempty" azure:"ro"` + TotalCount *int32 // READ-ONLY; The list of transactions. - Value []*Transaction `json:"value,omitempty" azure:"ro"` + Value []*Transaction } // TransactionProperties - The properties of a transaction. type TransactionProperties struct { // The kind of transaction. Options are all or reservation. - Kind *TransactionTypeKind `json:"kind,omitempty"` + Kind *TransactionTypeKind // The type of transaction. - TransactionType *ReservationType `json:"transactionType,omitempty"` + TransactionType *ReservationType // READ-ONLY; The amount of any Azure credits automatically applied to this transaction. - AzureCreditApplied *Amount `json:"azureCreditApplied,omitempty" azure:"ro"` + AzureCreditApplied *Amount // READ-ONLY; The type of azure plan of the subscription that was used for the transaction. - AzurePlan *string `json:"azurePlan,omitempty" azure:"ro"` + AzurePlan *string // READ-ONLY; The ISO 4217 code for the currency in which this transaction is billed. - BillingCurrency *string `json:"billingCurrency,omitempty" azure:"ro"` + BillingCurrency *string // READ-ONLY; The name of the billing profile which will be billed for the transaction. - BillingProfileDisplayName *string `json:"billingProfileDisplayName,omitempty" azure:"ro"` + BillingProfileDisplayName *string // READ-ONLY; The ID of the billing profile which will be billed for the transaction. - BillingProfileID *string `json:"billingProfileId,omitempty" azure:"ro"` + BillingProfileID *string // READ-ONLY; The name of the customer for which the transaction took place. The field is applicable only for Microsoft Partner // Agreement billing account. - CustomerDisplayName *string `json:"customerDisplayName,omitempty" azure:"ro"` + CustomerDisplayName *string // READ-ONLY; The ID of the customer for which the transaction took place. The field is applicable only for Microsoft Partner // Agreement billing account. - CustomerID *string `json:"customerId,omitempty" azure:"ro"` + CustomerID *string // READ-ONLY; The date of transaction. - Date *time.Time `json:"date,omitempty" azure:"ro"` + Date *time.Time // READ-ONLY; The percentage discount, if any, applied to this transaction. - Discount *float32 `json:"discount,omitempty" azure:"ro"` + Discount *float32 // READ-ONLY; The price of the product after applying any discounts. - EffectivePrice *Amount `json:"effectivePrice,omitempty" azure:"ro"` + EffectivePrice *Amount // READ-ONLY; The exchange rate used to convert charged amount to billing currency, if applicable. - ExchangeRate *float32 `json:"exchangeRate,omitempty" azure:"ro"` + ExchangeRate *float32 // READ-ONLY; Invoice on which the transaction was billed or 'pending' if the transaction is not billed. - Invoice *string `json:"invoice,omitempty" azure:"ro"` + Invoice *string // READ-ONLY; The ID of the invoice on which the transaction was billed. This field is only applicable for transactions which // are billed. - InvoiceID *string `json:"invoiceId,omitempty" azure:"ro"` + InvoiceID *string // READ-ONLY; The name of the invoice section which will be billed for the transaction. - InvoiceSectionDisplayName *string `json:"invoiceSectionDisplayName,omitempty" azure:"ro"` + InvoiceSectionDisplayName *string // READ-ONLY; The ID of the invoice section which will be billed for the transaction. - InvoiceSectionID *string `json:"invoiceSectionId,omitempty" azure:"ro"` + InvoiceSectionID *string // READ-ONLY; The retail price of the product. - MarketPrice *Amount `json:"marketPrice,omitempty" azure:"ro"` + MarketPrice *Amount // READ-ONLY; The order ID of the reservation. The field is only applicable for transaction of kind reservation. - OrderID *string `json:"orderId,omitempty" azure:"ro"` + OrderID *string // READ-ONLY; The name of the reservation order. The field is only applicable for transactions of kind reservation. - OrderName *string `json:"orderName,omitempty" azure:"ro"` + OrderName *string // READ-ONLY; The ISO 4217 code for the currency in which the product is priced. - PricingCurrency *string `json:"pricingCurrency,omitempty" azure:"ro"` + PricingCurrency *string // READ-ONLY; The description of the product for which the transaction took place. - ProductDescription *string `json:"productDescription,omitempty" azure:"ro"` + ProductDescription *string // READ-ONLY; The family of the product for which the transaction took place. - ProductFamily *string `json:"productFamily,omitempty" azure:"ro"` + ProductFamily *string // READ-ONLY; The type of the product for which the transaction took place. - ProductType *string `json:"productType,omitempty" azure:"ro"` + ProductType *string // READ-ONLY; The ID of the product type for which the transaction took place. - ProductTypeID *string `json:"productTypeId,omitempty" azure:"ro"` + ProductTypeID *string // READ-ONLY; The quantity purchased in the transaction. - Quantity *int32 `json:"quantity,omitempty" azure:"ro"` + Quantity *int32 // READ-ONLY; The end date of the product term, or the end date of the month in which usage ended. - ServicePeriodEndDate *time.Time `json:"servicePeriodEndDate,omitempty" azure:"ro"` + ServicePeriodEndDate *time.Time // READ-ONLY; The date of the purchase of the product, or the start date of the month in which usage started. - ServicePeriodStartDate *time.Time `json:"servicePeriodStartDate,omitempty" azure:"ro"` + ServicePeriodStartDate *time.Time // READ-ONLY; The pre-tax charged amount for the transaction. - SubTotal *Amount `json:"subTotal,omitempty" azure:"ro"` + SubTotal *Amount // READ-ONLY; The ID of the subscription that was used for the transaction. The field is only applicable for transaction of // kind reservation. - SubscriptionID *string `json:"subscriptionId,omitempty" azure:"ro"` + SubscriptionID *string // READ-ONLY; The name of the subscription that was used for the transaction. The field is only applicable for transaction // of kind reservation. - SubscriptionName *string `json:"subscriptionName,omitempty" azure:"ro"` + SubscriptionName *string // READ-ONLY; The tax amount applied to the transaction. - Tax *Amount `json:"tax,omitempty" azure:"ro"` + Tax *Amount // READ-ONLY; The charge associated with the transaction. - TransactionAmount *Amount `json:"transactionAmount,omitempty" azure:"ro"` + TransactionAmount *Amount // READ-ONLY; The unit of measure used to bill for the product. For example, compute services are billed per hour. - UnitOfMeasure *string `json:"unitOfMeasure,omitempty" azure:"ro"` + UnitOfMeasure *string // READ-ONLY; The description for the unit of measure for a given product. - UnitType *string `json:"unitType,omitempty" azure:"ro"` + UnitType *string // READ-ONLY; The number of units used for a given product. - Units *float32 `json:"units,omitempty" azure:"ro"` -} - -// TransactionsClientListByInvoiceOptions contains the optional parameters for the TransactionsClient.NewListByInvoicePager -// method. -type TransactionsClientListByInvoiceOptions struct { - // placeholder for future optional parameters + Units *float32 } // TransferBillingSubscriptionRequestProperties - Request parameters to transfer billing subscription. type TransferBillingSubscriptionRequestProperties struct { // REQUIRED; The destination invoice section id. - DestinationInvoiceSectionID *string `json:"destinationInvoiceSectionId,omitempty"` + DestinationInvoiceSectionID *string } // TransferProductRequestProperties - The properties of the product to initiate a transfer. type TransferProductRequestProperties struct { // The destination invoice section id. - DestinationInvoiceSectionID *string `json:"destinationInvoiceSectionId,omitempty"` + DestinationInvoiceSectionID *string } // ValidateAddressResponse - Result of the address validation type ValidateAddressResponse struct { // status of the address validation. - Status *AddressValidationStatus `json:"status,omitempty"` + Status *AddressValidationStatus // The list of suggested addresses. - SuggestedAddresses []*AddressDetails `json:"suggestedAddresses,omitempty"` + SuggestedAddresses []*AddressDetails // Validation error message. - ValidationMessage *string `json:"validationMessage,omitempty"` + ValidationMessage *string } // ValidateProductTransferEligibilityError - Error details of the product transfer eligibility validation. type ValidateProductTransferEligibilityError struct { // Error code for the product transfer validation. - Code *ProductTransferValidationErrorCode `json:"code,omitempty"` + Code *ProductTransferValidationErrorCode // Detailed error message explaining the error. - Details *string `json:"details,omitempty"` + Details *string // The error message. - Message *string `json:"message,omitempty"` + Message *string } // ValidateProductTransferEligibilityResult - Result of the product transfer eligibility validation. type ValidateProductTransferEligibilityResult struct { // Validation error details. - ErrorDetails *ValidateProductTransferEligibilityError `json:"errorDetails,omitempty"` + ErrorDetails *ValidateProductTransferEligibilityError // READ-ONLY; Specifies whether the transfer is eligible or not. - IsMoveEligible *bool `json:"isMoveEligible,omitempty" azure:"ro"` + IsMoveEligible *bool } // ValidateSubscriptionTransferEligibilityError - Error details of the transfer eligibility validation type ValidateSubscriptionTransferEligibilityError struct { // Error code for the product transfer validation. - Code *SubscriptionTransferValidationErrorCode `json:"code,omitempty"` + Code *SubscriptionTransferValidationErrorCode // Detailed error message explaining the error. - Details *string `json:"details,omitempty"` + Details *string // The error message. - Message *string `json:"message,omitempty"` + Message *string } // ValidateSubscriptionTransferEligibilityResult - Result of the transfer eligibility validation. type ValidateSubscriptionTransferEligibilityResult struct { // Validation error details. - ErrorDetails *ValidateSubscriptionTransferEligibilityError `json:"errorDetails,omitempty"` + ErrorDetails *ValidateSubscriptionTransferEligibilityError // READ-ONLY; Specifies whether the subscription is eligible to be transferred. - IsMoveEligible *bool `json:"isMoveEligible,omitempty" azure:"ro"` + IsMoveEligible *bool } diff --git a/sdk/resourcemanager/billing/armbilling/models_serde.go b/sdk/resourcemanager/billing/armbilling/models_serde.go index f5883a699ded..10e34fba9ac7 100644 --- a/sdk/resourcemanager/billing/armbilling/models_serde.go +++ b/sdk/resourcemanager/billing/armbilling/models_serde.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -336,8 +335,8 @@ func (a AgreementProperties) MarshalJSON() ([]byte, error) { populate(objectMap, "agreementLink", a.AgreementLink) populate(objectMap, "billingProfileInfo", a.BillingProfileInfo) populate(objectMap, "category", a.Category) - populateTimeRFC3339(objectMap, "effectiveDate", a.EffectiveDate) - populateTimeRFC3339(objectMap, "expirationDate", a.ExpirationDate) + populateDateTimeRFC3339(objectMap, "effectiveDate", a.EffectiveDate) + populateDateTimeRFC3339(objectMap, "expirationDate", a.ExpirationDate) populate(objectMap, "participants", a.Participants) populate(objectMap, "status", a.Status) return json.Marshal(objectMap) @@ -365,10 +364,10 @@ func (a *AgreementProperties) UnmarshalJSON(data []byte) error { err = unpopulate(val, "Category", &a.Category) delete(rawMsg, key) case "effectiveDate": - err = unpopulateTimeRFC3339(val, "EffectiveDate", &a.EffectiveDate) + err = unpopulateDateTimeRFC3339(val, "EffectiveDate", &a.EffectiveDate) delete(rawMsg, key) case "expirationDate": - err = unpopulateTimeRFC3339(val, "ExpirationDate", &a.ExpirationDate) + err = unpopulateDateTimeRFC3339(val, "ExpirationDate", &a.ExpirationDate) delete(rawMsg, key) case "participants": err = unpopulate(val, "Participants", &a.Participants) @@ -811,7 +810,7 @@ func (d *Document) UnmarshalJSON(data []byte) error { // MarshalJSON implements the json.Marshaller interface for type DownloadURL. func (d DownloadURL) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populateTimeRFC3339(objectMap, "expiryTime", d.ExpiryTime) + populateDateTimeRFC3339(objectMap, "expiryTime", d.ExpiryTime) populate(objectMap, "url", d.URL) return json.Marshal(objectMap) } @@ -826,7 +825,7 @@ func (d *DownloadURL) UnmarshalJSON(data []byte) error { var err error switch key { case "expiryTime": - err = unpopulateTimeRFC3339(val, "ExpiryTime", &d.ExpiryTime) + err = unpopulateDateTimeRFC3339(val, "ExpiryTime", &d.ExpiryTime) delete(rawMsg, key) case "url": err = unpopulate(val, "URL", &d.URL) @@ -846,10 +845,10 @@ func (e Enrollment) MarshalJSON() ([]byte, error) { populate(objectMap, "channel", e.Channel) populate(objectMap, "countryCode", e.CountryCode) populate(objectMap, "currency", e.Currency) - populateTimeRFC3339(objectMap, "endDate", e.EndDate) + populateDateTimeRFC3339(objectMap, "endDate", e.EndDate) populate(objectMap, "language", e.Language) populate(objectMap, "policies", e.Policies) - populateTimeRFC3339(objectMap, "startDate", e.StartDate) + populateDateTimeRFC3339(objectMap, "startDate", e.StartDate) populate(objectMap, "status", e.Status) return json.Marshal(objectMap) } @@ -876,7 +875,7 @@ func (e *Enrollment) UnmarshalJSON(data []byte) error { err = unpopulate(val, "Currency", &e.Currency) delete(rawMsg, key) case "endDate": - err = unpopulateTimeRFC3339(val, "EndDate", &e.EndDate) + err = unpopulateDateTimeRFC3339(val, "EndDate", &e.EndDate) delete(rawMsg, key) case "language": err = unpopulate(val, "Language", &e.Language) @@ -885,7 +884,7 @@ func (e *Enrollment) UnmarshalJSON(data []byte) error { err = unpopulate(val, "Policies", &e.Policies) delete(rawMsg, key) case "startDate": - err = unpopulateTimeRFC3339(val, "StartDate", &e.StartDate) + err = unpopulateDateTimeRFC3339(val, "StartDate", &e.StartDate) delete(rawMsg, key) case "status": err = unpopulate(val, "Status", &e.Status) @@ -941,9 +940,9 @@ func (e *EnrollmentAccount) UnmarshalJSON(data []byte) error { func (e EnrollmentAccountContext) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "costCenter", e.CostCenter) - populateTimeRFC3339(objectMap, "endDate", e.EndDate) + populateDateTimeRFC3339(objectMap, "endDate", e.EndDate) populate(objectMap, "enrollmentAccountName", e.EnrollmentAccountName) - populateTimeRFC3339(objectMap, "startDate", e.StartDate) + populateDateTimeRFC3339(objectMap, "startDate", e.StartDate) return json.Marshal(objectMap) } @@ -960,13 +959,13 @@ func (e *EnrollmentAccountContext) UnmarshalJSON(data []byte) error { err = unpopulate(val, "CostCenter", &e.CostCenter) delete(rawMsg, key) case "endDate": - err = unpopulateTimeRFC3339(val, "EndDate", &e.EndDate) + err = unpopulateDateTimeRFC3339(val, "EndDate", &e.EndDate) delete(rawMsg, key) case "enrollmentAccountName": err = unpopulate(val, "EnrollmentAccountName", &e.EnrollmentAccountName) delete(rawMsg, key) case "startDate": - err = unpopulateTimeRFC3339(val, "StartDate", &e.StartDate) + err = unpopulateDateTimeRFC3339(val, "StartDate", &e.StartDate) delete(rawMsg, key) } if err != nil { @@ -1015,8 +1014,8 @@ func (e EnrollmentAccountProperties) MarshalJSON() ([]byte, error) { populate(objectMap, "accountOwnerEmail", e.AccountOwnerEmail) populate(objectMap, "costCenter", e.CostCenter) populate(objectMap, "department", e.Department) - populateTimeRFC3339(objectMap, "endDate", e.EndDate) - populateTimeRFC3339(objectMap, "startDate", e.StartDate) + populateDateTimeRFC3339(objectMap, "endDate", e.EndDate) + populateDateTimeRFC3339(objectMap, "startDate", e.StartDate) populate(objectMap, "status", e.Status) return json.Marshal(objectMap) } @@ -1046,10 +1045,10 @@ func (e *EnrollmentAccountProperties) UnmarshalJSON(data []byte) error { err = unpopulate(val, "Department", &e.Department) delete(rawMsg, key) case "endDate": - err = unpopulateTimeRFC3339(val, "EndDate", &e.EndDate) + err = unpopulateDateTimeRFC3339(val, "EndDate", &e.EndDate) delete(rawMsg, key) case "startDate": - err = unpopulateTimeRFC3339(val, "StartDate", &e.StartDate) + err = unpopulateDateTimeRFC3339(val, "StartDate", &e.StartDate) delete(rawMsg, key) case "status": err = unpopulate(val, "Status", &e.Status) @@ -1377,9 +1376,9 @@ func (i *InstructionListResult) UnmarshalJSON(data []byte) error { func (i InstructionProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "amount", i.Amount) - populateTimeRFC3339(objectMap, "creationDate", i.CreationDate) - populateTimeRFC3339(objectMap, "endDate", i.EndDate) - populateTimeRFC3339(objectMap, "startDate", i.StartDate) + populateDateTimeRFC3339(objectMap, "creationDate", i.CreationDate) + populateDateTimeRFC3339(objectMap, "endDate", i.EndDate) + populateDateTimeRFC3339(objectMap, "startDate", i.StartDate) return json.Marshal(objectMap) } @@ -1396,13 +1395,13 @@ func (i *InstructionProperties) UnmarshalJSON(data []byte) error { err = unpopulate(val, "Amount", &i.Amount) delete(rawMsg, key) case "creationDate": - err = unpopulateTimeRFC3339(val, "CreationDate", &i.CreationDate) + err = unpopulateDateTimeRFC3339(val, "CreationDate", &i.CreationDate) delete(rawMsg, key) case "endDate": - err = unpopulateTimeRFC3339(val, "EndDate", &i.EndDate) + err = unpopulateDateTimeRFC3339(val, "EndDate", &i.EndDate) delete(rawMsg, key) case "startDate": - err = unpopulateTimeRFC3339(val, "StartDate", &i.StartDate) + err = unpopulateDateTimeRFC3339(val, "StartDate", &i.StartDate) delete(rawMsg, key) } if err != nil { @@ -1499,11 +1498,11 @@ func (i InvoiceProperties) MarshalJSON() ([]byte, error) { populate(objectMap, "creditForDocumentId", i.CreditForDocumentID) populate(objectMap, "documentType", i.DocumentType) populate(objectMap, "documents", i.Documents) - populateTimeRFC3339(objectMap, "dueDate", i.DueDate) + populateDateTimeRFC3339(objectMap, "dueDate", i.DueDate) populate(objectMap, "freeAzureCreditApplied", i.FreeAzureCreditApplied) - populateTimeRFC3339(objectMap, "invoiceDate", i.InvoiceDate) - populateTimeRFC3339(objectMap, "invoicePeriodEndDate", i.InvoicePeriodEndDate) - populateTimeRFC3339(objectMap, "invoicePeriodStartDate", i.InvoicePeriodStartDate) + populateDateTimeRFC3339(objectMap, "invoiceDate", i.InvoiceDate) + populateDateTimeRFC3339(objectMap, "invoicePeriodEndDate", i.InvoicePeriodEndDate) + populateDateTimeRFC3339(objectMap, "invoicePeriodStartDate", i.InvoicePeriodStartDate) populate(objectMap, "invoiceType", i.InvoiceType) populate(objectMap, "isMonthlyInvoice", i.IsMonthlyInvoice) populate(objectMap, "payments", i.Payments) @@ -1557,19 +1556,19 @@ func (i *InvoiceProperties) UnmarshalJSON(data []byte) error { err = unpopulate(val, "Documents", &i.Documents) delete(rawMsg, key) case "dueDate": - err = unpopulateTimeRFC3339(val, "DueDate", &i.DueDate) + err = unpopulateDateTimeRFC3339(val, "DueDate", &i.DueDate) delete(rawMsg, key) case "freeAzureCreditApplied": err = unpopulate(val, "FreeAzureCreditApplied", &i.FreeAzureCreditApplied) delete(rawMsg, key) case "invoiceDate": - err = unpopulateTimeRFC3339(val, "InvoiceDate", &i.InvoiceDate) + err = unpopulateDateTimeRFC3339(val, "InvoiceDate", &i.InvoiceDate) delete(rawMsg, key) case "invoicePeriodEndDate": - err = unpopulateTimeRFC3339(val, "InvoicePeriodEndDate", &i.InvoicePeriodEndDate) + err = unpopulateDateTimeRFC3339(val, "InvoicePeriodEndDate", &i.InvoicePeriodEndDate) delete(rawMsg, key) case "invoicePeriodStartDate": - err = unpopulateTimeRFC3339(val, "InvoicePeriodStartDate", &i.InvoicePeriodStartDate) + err = unpopulateDateTimeRFC3339(val, "InvoicePeriodStartDate", &i.InvoicePeriodStartDate) delete(rawMsg, key) case "invoiceType": err = unpopulate(val, "InvoiceType", &i.InvoiceType) @@ -2054,7 +2053,7 @@ func (p Participants) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "email", p.Email) populate(objectMap, "status", p.Status) - populateTimeRFC3339(objectMap, "statusDate", p.StatusDate) + populateDateTimeRFC3339(objectMap, "statusDate", p.StatusDate) return json.Marshal(objectMap) } @@ -2074,7 +2073,7 @@ func (p *Participants) UnmarshalJSON(data []byte) error { err = unpopulate(val, "Status", &p.Status) delete(rawMsg, key) case "statusDate": - err = unpopulateTimeRFC3339(val, "StatusDate", &p.StatusDate) + err = unpopulateDateTimeRFC3339(val, "StatusDate", &p.StatusDate) delete(rawMsg, key) } if err != nil { @@ -2088,7 +2087,7 @@ func (p *Participants) UnmarshalJSON(data []byte) error { func (p PaymentProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "amount", p.Amount) - populateTimeRFC3339(objectMap, "date", p.Date) + populateDateTimeRFC3339(objectMap, "date", p.Date) populate(objectMap, "paymentMethodFamily", p.PaymentMethodFamily) populate(objectMap, "paymentMethodType", p.PaymentMethodType) populate(objectMap, "paymentType", p.PaymentType) @@ -2108,7 +2107,7 @@ func (p *PaymentProperties) UnmarshalJSON(data []byte) error { err = unpopulate(val, "Amount", &p.Amount) delete(rawMsg, key) case "date": - err = unpopulateTimeRFC3339(val, "Date", &p.Date) + err = unpopulateDateTimeRFC3339(val, "Date", &p.Date) delete(rawMsg, key) case "paymentMethodFamily": err = unpopulate(val, "PaymentMethodFamily", &p.PaymentMethodFamily) @@ -2418,14 +2417,14 @@ func (p ProductProperties) MarshalJSON() ([]byte, error) { populate(objectMap, "customerDisplayName", p.CustomerDisplayName) populate(objectMap, "customerId", p.CustomerID) populate(objectMap, "displayName", p.DisplayName) - populateTimeRFC3339(objectMap, "endDate", p.EndDate) + populateDateTimeRFC3339(objectMap, "endDate", p.EndDate) populate(objectMap, "invoiceSectionDisplayName", p.InvoiceSectionDisplayName) populate(objectMap, "invoiceSectionId", p.InvoiceSectionID) populate(objectMap, "lastCharge", p.LastCharge) - populateTimeRFC3339(objectMap, "lastChargeDate", p.LastChargeDate) + populateDateTimeRFC3339(objectMap, "lastChargeDate", p.LastChargeDate) populate(objectMap, "productType", p.ProductType) populate(objectMap, "productTypeId", p.ProductTypeID) - populateTimeRFC3339(objectMap, "purchaseDate", p.PurchaseDate) + populateDateTimeRFC3339(objectMap, "purchaseDate", p.PurchaseDate) populate(objectMap, "quantity", p.Quantity) populate(objectMap, "reseller", p.Reseller) populate(objectMap, "skuDescription", p.SKUDescription) @@ -2469,7 +2468,7 @@ func (p *ProductProperties) UnmarshalJSON(data []byte) error { err = unpopulate(val, "DisplayName", &p.DisplayName) delete(rawMsg, key) case "endDate": - err = unpopulateTimeRFC3339(val, "EndDate", &p.EndDate) + err = unpopulateDateTimeRFC3339(val, "EndDate", &p.EndDate) delete(rawMsg, key) case "invoiceSectionDisplayName": err = unpopulate(val, "InvoiceSectionDisplayName", &p.InvoiceSectionDisplayName) @@ -2481,7 +2480,7 @@ func (p *ProductProperties) UnmarshalJSON(data []byte) error { err = unpopulate(val, "LastCharge", &p.LastCharge) delete(rawMsg, key) case "lastChargeDate": - err = unpopulateTimeRFC3339(val, "LastChargeDate", &p.LastChargeDate) + err = unpopulateDateTimeRFC3339(val, "LastChargeDate", &p.LastChargeDate) delete(rawMsg, key) case "productType": err = unpopulate(val, "ProductType", &p.ProductType) @@ -2490,7 +2489,7 @@ func (p *ProductProperties) UnmarshalJSON(data []byte) error { err = unpopulate(val, "ProductTypeID", &p.ProductTypeID) delete(rawMsg, key) case "purchaseDate": - err = unpopulateTimeRFC3339(val, "PurchaseDate", &p.PurchaseDate) + err = unpopulateDateTimeRFC3339(val, "PurchaseDate", &p.PurchaseDate) delete(rawMsg, key) case "quantity": err = unpopulate(val, "Quantity", &p.Quantity) @@ -3858,7 +3857,7 @@ func (t TransactionProperties) MarshalJSON() ([]byte, error) { populate(objectMap, "billingProfileId", t.BillingProfileID) populate(objectMap, "customerDisplayName", t.CustomerDisplayName) populate(objectMap, "customerId", t.CustomerID) - populateTimeRFC3339(objectMap, "date", t.Date) + populateDateTimeRFC3339(objectMap, "date", t.Date) populate(objectMap, "discount", t.Discount) populate(objectMap, "effectivePrice", t.EffectivePrice) populate(objectMap, "exchangeRate", t.ExchangeRate) @@ -3876,8 +3875,8 @@ func (t TransactionProperties) MarshalJSON() ([]byte, error) { populate(objectMap, "productType", t.ProductType) populate(objectMap, "productTypeId", t.ProductTypeID) populate(objectMap, "quantity", t.Quantity) - populateTimeRFC3339(objectMap, "servicePeriodEndDate", t.ServicePeriodEndDate) - populateTimeRFC3339(objectMap, "servicePeriodStartDate", t.ServicePeriodStartDate) + populateDateTimeRFC3339(objectMap, "servicePeriodEndDate", t.ServicePeriodEndDate) + populateDateTimeRFC3339(objectMap, "servicePeriodStartDate", t.ServicePeriodStartDate) populate(objectMap, "subTotal", t.SubTotal) populate(objectMap, "subscriptionId", t.SubscriptionID) populate(objectMap, "subscriptionName", t.SubscriptionName) @@ -3921,7 +3920,7 @@ func (t *TransactionProperties) UnmarshalJSON(data []byte) error { err = unpopulate(val, "CustomerID", &t.CustomerID) delete(rawMsg, key) case "date": - err = unpopulateTimeRFC3339(val, "Date", &t.Date) + err = unpopulateDateTimeRFC3339(val, "Date", &t.Date) delete(rawMsg, key) case "discount": err = unpopulate(val, "Discount", &t.Discount) @@ -3975,10 +3974,10 @@ func (t *TransactionProperties) UnmarshalJSON(data []byte) error { err = unpopulate(val, "Quantity", &t.Quantity) delete(rawMsg, key) case "servicePeriodEndDate": - err = unpopulateTimeRFC3339(val, "ServicePeriodEndDate", &t.ServicePeriodEndDate) + err = unpopulateDateTimeRFC3339(val, "ServicePeriodEndDate", &t.ServicePeriodEndDate) delete(rawMsg, key) case "servicePeriodStartDate": - err = unpopulateTimeRFC3339(val, "ServicePeriodStartDate", &t.ServicePeriodStartDate) + err = unpopulateDateTimeRFC3339(val, "ServicePeriodStartDate", &t.ServicePeriodStartDate) delete(rawMsg, key) case "subTotal": err = unpopulate(val, "SubTotal", &t.SubTotal) diff --git a/sdk/resourcemanager/billing/armbilling/operations_client.go b/sdk/resourcemanager/billing/armbilling/operations_client.go index 74d1c4541291..ff0dcda085e9 100644 --- a/sdk/resourcemanager/billing/armbilling/operations_client.go +++ b/sdk/resourcemanager/billing/armbilling/operations_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -28,7 +27,7 @@ type OperationsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewOperationsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*OperationsClient, error) { - cl, err := arm.NewClient(moduleName+".OperationsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -48,25 +47,20 @@ func (client *OperationsClient) NewListPager(options *OperationsClientListOption return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *OperationsClientListResponse) (OperationsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "OperationsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return OperationsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return OperationsClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return OperationsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/billing/armbilling/options.go b/sdk/resourcemanager/billing/armbilling/options.go new file mode 100644 index 000000000000..b3f7fa7a6c64 --- /dev/null +++ b/sdk/resourcemanager/billing/armbilling/options.go @@ -0,0 +1,513 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package armbilling + +// AccountsClientBeginUpdateOptions contains the optional parameters for the AccountsClient.BeginUpdate method. +type AccountsClientBeginUpdateOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// AccountsClientGetOptions contains the optional parameters for the AccountsClient.Get method. +type AccountsClientGetOptions struct { + // May be used to expand the soldTo, invoice sections and billing profiles. + Expand *string +} + +// AccountsClientListInvoiceSectionsByCreateSubscriptionPermissionOptions contains the optional parameters for the AccountsClient.NewListInvoiceSectionsByCreateSubscriptionPermissionPager +// method. +type AccountsClientListInvoiceSectionsByCreateSubscriptionPermissionOptions struct { + // placeholder for future optional parameters +} + +// AccountsClientListOptions contains the optional parameters for the AccountsClient.NewListPager method. +type AccountsClientListOptions struct { + // May be used to expand the soldTo, invoice sections and billing profiles. + Expand *string +} + +// AddressClientValidateOptions contains the optional parameters for the AddressClient.Validate method. +type AddressClientValidateOptions struct { + // placeholder for future optional parameters +} + +// AgreementsClientGetOptions contains the optional parameters for the AgreementsClient.Get method. +type AgreementsClientGetOptions struct { + // May be used to expand the participants. + Expand *string +} + +// AgreementsClientListByBillingAccountOptions contains the optional parameters for the AgreementsClient.NewListByBillingAccountPager +// method. +type AgreementsClientListByBillingAccountOptions struct { + // May be used to expand the participants. + Expand *string +} + +// AvailableBalancesClientGetOptions contains the optional parameters for the AvailableBalancesClient.Get method. +type AvailableBalancesClientGetOptions struct { + // placeholder for future optional parameters +} + +// CustomersClientGetOptions contains the optional parameters for the CustomersClient.Get method. +type CustomersClientGetOptions struct { + // May be used to expand enabledAzurePlans and resellers + Expand *string +} + +// CustomersClientListByBillingAccountOptions contains the optional parameters for the CustomersClient.NewListByBillingAccountPager +// method. +type CustomersClientListByBillingAccountOptions struct { + // May be used to filter the list of customers. + Filter *string + + // Used for searching customers by their name. Any customer with name containing the search text will be included in the response + Search *string +} + +// CustomersClientListByBillingProfileOptions contains the optional parameters for the CustomersClient.NewListByBillingProfilePager +// method. +type CustomersClientListByBillingProfileOptions struct { + // May be used to filter the list of customers. + Filter *string + + // Used for searching customers by their name. Any customer with name containing the search text will be included in the response + Search *string +} + +// EnrollmentAccountsClientGetOptions contains the optional parameters for the EnrollmentAccountsClient.Get method. +type EnrollmentAccountsClientGetOptions struct { + // placeholder for future optional parameters +} + +// EnrollmentAccountsClientListOptions contains the optional parameters for the EnrollmentAccountsClient.NewListPager method. +type EnrollmentAccountsClientListOptions struct { + // placeholder for future optional parameters +} + +// InstructionsClientGetOptions contains the optional parameters for the InstructionsClient.Get method. +type InstructionsClientGetOptions struct { + // placeholder for future optional parameters +} + +// InstructionsClientListByBillingProfileOptions contains the optional parameters for the InstructionsClient.NewListByBillingProfilePager +// method. +type InstructionsClientListByBillingProfileOptions struct { + // placeholder for future optional parameters +} + +// InstructionsClientPutOptions contains the optional parameters for the InstructionsClient.Put method. +type InstructionsClientPutOptions struct { + // placeholder for future optional parameters +} + +// InvoiceSectionsClientBeginCreateOrUpdateOptions contains the optional parameters for the InvoiceSectionsClient.BeginCreateOrUpdate +// method. +type InvoiceSectionsClientBeginCreateOrUpdateOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// InvoiceSectionsClientGetOptions contains the optional parameters for the InvoiceSectionsClient.Get method. +type InvoiceSectionsClientGetOptions struct { + // placeholder for future optional parameters +} + +// InvoiceSectionsClientListByBillingProfileOptions contains the optional parameters for the InvoiceSectionsClient.NewListByBillingProfilePager +// method. +type InvoiceSectionsClientListByBillingProfileOptions struct { + // placeholder for future optional parameters +} + +// InvoicesClientBeginDownloadBillingSubscriptionInvoiceOptions contains the optional parameters for the InvoicesClient.BeginDownloadBillingSubscriptionInvoice +// method. +type InvoicesClientBeginDownloadBillingSubscriptionInvoiceOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// InvoicesClientBeginDownloadInvoiceOptions contains the optional parameters for the InvoicesClient.BeginDownloadInvoice +// method. +type InvoicesClientBeginDownloadInvoiceOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// InvoicesClientBeginDownloadMultipleBillingProfileInvoicesOptions contains the optional parameters for the InvoicesClient.BeginDownloadMultipleBillingProfileInvoices +// method. +type InvoicesClientBeginDownloadMultipleBillingProfileInvoicesOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// InvoicesClientBeginDownloadMultipleBillingSubscriptionInvoicesOptions contains the optional parameters for the InvoicesClient.BeginDownloadMultipleBillingSubscriptionInvoices +// method. +type InvoicesClientBeginDownloadMultipleBillingSubscriptionInvoicesOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// InvoicesClientGetByIDOptions contains the optional parameters for the InvoicesClient.GetByID method. +type InvoicesClientGetByIDOptions struct { + // placeholder for future optional parameters +} + +// InvoicesClientGetBySubscriptionAndInvoiceIDOptions contains the optional parameters for the InvoicesClient.GetBySubscriptionAndInvoiceID +// method. +type InvoicesClientGetBySubscriptionAndInvoiceIDOptions struct { + // placeholder for future optional parameters +} + +// InvoicesClientGetOptions contains the optional parameters for the InvoicesClient.Get method. +type InvoicesClientGetOptions struct { + // placeholder for future optional parameters +} + +// InvoicesClientListByBillingAccountOptions contains the optional parameters for the InvoicesClient.NewListByBillingAccountPager +// method. +type InvoicesClientListByBillingAccountOptions struct { + // placeholder for future optional parameters +} + +// InvoicesClientListByBillingProfileOptions contains the optional parameters for the InvoicesClient.NewListByBillingProfilePager +// method. +type InvoicesClientListByBillingProfileOptions struct { + // placeholder for future optional parameters +} + +// InvoicesClientListByBillingSubscriptionOptions contains the optional parameters for the InvoicesClient.NewListByBillingSubscriptionPager +// method. +type InvoicesClientListByBillingSubscriptionOptions struct { + // placeholder for future optional parameters +} + +// OperationsClientListOptions contains the optional parameters for the OperationsClient.NewListPager method. +type OperationsClientListOptions struct { + // placeholder for future optional parameters +} + +// PeriodsClientGetOptions contains the optional parameters for the PeriodsClient.Get method. +type PeriodsClientGetOptions struct { + // placeholder for future optional parameters +} + +// PeriodsClientListOptions contains the optional parameters for the PeriodsClient.NewListPager method. +type PeriodsClientListOptions struct { + // May be used to filter billing periods by billingPeriodEndDate. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. + // It does not currently support 'ne', 'or', or 'not'. + Filter *string + + // Skiptoken is only used if a previous operation returned a partial result. If a previous response contains a nextLink element, + // the value of the nextLink element will include a skiptoken parameter that + // specifies a starting point to use for subsequent calls. + Skiptoken *string + + // May be used to limit the number of results to the most recent N billing periods. + Top *int32 +} + +// PermissionsClientListByBillingAccountOptions contains the optional parameters for the PermissionsClient.NewListByBillingAccountPager +// method. +type PermissionsClientListByBillingAccountOptions struct { + // placeholder for future optional parameters +} + +// PermissionsClientListByBillingProfileOptions contains the optional parameters for the PermissionsClient.NewListByBillingProfilePager +// method. +type PermissionsClientListByBillingProfileOptions struct { + // placeholder for future optional parameters +} + +// PermissionsClientListByCustomerOptions contains the optional parameters for the PermissionsClient.NewListByCustomerPager +// method. +type PermissionsClientListByCustomerOptions struct { + // placeholder for future optional parameters +} + +// PermissionsClientListByInvoiceSectionsOptions contains the optional parameters for the PermissionsClient.NewListByInvoiceSectionsPager +// method. +type PermissionsClientListByInvoiceSectionsOptions struct { + // placeholder for future optional parameters +} + +// PoliciesClientGetByBillingProfileOptions contains the optional parameters for the PoliciesClient.GetByBillingProfile method. +type PoliciesClientGetByBillingProfileOptions struct { + // placeholder for future optional parameters +} + +// PoliciesClientGetByCustomerOptions contains the optional parameters for the PoliciesClient.GetByCustomer method. +type PoliciesClientGetByCustomerOptions struct { + // placeholder for future optional parameters +} + +// PoliciesClientUpdateCustomerOptions contains the optional parameters for the PoliciesClient.UpdateCustomer method. +type PoliciesClientUpdateCustomerOptions struct { + // placeholder for future optional parameters +} + +// PoliciesClientUpdateOptions contains the optional parameters for the PoliciesClient.Update method. +type PoliciesClientUpdateOptions struct { + // placeholder for future optional parameters +} + +// ProductsClientGetOptions contains the optional parameters for the ProductsClient.Get method. +type ProductsClientGetOptions struct { + // placeholder for future optional parameters +} + +// ProductsClientListByBillingAccountOptions contains the optional parameters for the ProductsClient.NewListByBillingAccountPager +// method. +type ProductsClientListByBillingAccountOptions struct { + // May be used to filter by product type. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. It does not currently + // support 'ne', 'or', or 'not'. Tag filter is a key value pair string where key + // and value are separated by a colon (:). + Filter *string +} + +// ProductsClientListByBillingProfileOptions contains the optional parameters for the ProductsClient.NewListByBillingProfilePager +// method. +type ProductsClientListByBillingProfileOptions struct { + // May be used to filter by product type. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. It does not currently + // support 'ne', 'or', or 'not'. Tag filter is a key value pair string where key + // and value are separated by a colon (:). + Filter *string +} + +// ProductsClientListByCustomerOptions contains the optional parameters for the ProductsClient.NewListByCustomerPager method. +type ProductsClientListByCustomerOptions struct { + // placeholder for future optional parameters +} + +// ProductsClientListByInvoiceSectionOptions contains the optional parameters for the ProductsClient.NewListByInvoiceSectionPager +// method. +type ProductsClientListByInvoiceSectionOptions struct { + // May be used to filter by product type. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. It does not currently + // support 'ne', 'or', or 'not'. Tag filter is a key value pair string where key + // and value are separated by a colon (:). + Filter *string +} + +// ProductsClientMoveOptions contains the optional parameters for the ProductsClient.Move method. +type ProductsClientMoveOptions struct { + // placeholder for future optional parameters +} + +// ProductsClientUpdateOptions contains the optional parameters for the ProductsClient.Update method. +type ProductsClientUpdateOptions struct { + // placeholder for future optional parameters +} + +// ProductsClientValidateMoveOptions contains the optional parameters for the ProductsClient.ValidateMove method. +type ProductsClientValidateMoveOptions struct { + // placeholder for future optional parameters +} + +// ProfilesClientBeginCreateOrUpdateOptions contains the optional parameters for the ProfilesClient.BeginCreateOrUpdate method. +type ProfilesClientBeginCreateOrUpdateOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// ProfilesClientGetOptions contains the optional parameters for the ProfilesClient.Get method. +type ProfilesClientGetOptions struct { + // May be used to expand the invoice sections. + Expand *string +} + +// ProfilesClientListByBillingAccountOptions contains the optional parameters for the ProfilesClient.NewListByBillingAccountPager +// method. +type ProfilesClientListByBillingAccountOptions struct { + // May be used to expand the invoice sections. + Expand *string +} + +// PropertyClientGetOptions contains the optional parameters for the PropertyClient.Get method. +type PropertyClientGetOptions struct { + // placeholder for future optional parameters +} + +// PropertyClientUpdateOptions contains the optional parameters for the PropertyClient.Update method. +type PropertyClientUpdateOptions struct { + // placeholder for future optional parameters +} + +// ReservationsClientListByBillingAccountOptions contains the optional parameters for the ReservationsClient.NewListByBillingAccountPager +// method. +type ReservationsClientListByBillingAccountOptions struct { + // May be used to filter by reservation properties. The filter supports 'eq', 'or', and 'and'. It does not currently support + // 'ne', 'gt', 'le', 'ge', or 'not'. + Filter *string + + // May be used to sort order by reservation properties. + Orderby *string + + // To indicate whether to refresh the roll up counts of the reservations group by provisioning states + RefreshSummary *string + + // The selected provisioning state + SelectedState *string +} + +// ReservationsClientListByBillingProfileOptions contains the optional parameters for the ReservationsClient.NewListByBillingProfilePager +// method. +type ReservationsClientListByBillingProfileOptions struct { + // May be used to filter by reservation properties. The filter supports 'eq', 'or', and 'and'. It does not currently support + // 'ne', 'gt', 'le', 'ge', or 'not'. + Filter *string + + // May be used to sort order by reservation properties. + Orderby *string + + // To indicate whether to refresh the roll up counts of the reservations group by provisioning state + RefreshSummary *string + + // The selected provisioning state + SelectedState *string +} + +// RoleAssignmentsClientDeleteByBillingAccountOptions contains the optional parameters for the RoleAssignmentsClient.DeleteByBillingAccount +// method. +type RoleAssignmentsClientDeleteByBillingAccountOptions struct { + // placeholder for future optional parameters +} + +// RoleAssignmentsClientDeleteByBillingProfileOptions contains the optional parameters for the RoleAssignmentsClient.DeleteByBillingProfile +// method. +type RoleAssignmentsClientDeleteByBillingProfileOptions struct { + // placeholder for future optional parameters +} + +// RoleAssignmentsClientDeleteByInvoiceSectionOptions contains the optional parameters for the RoleAssignmentsClient.DeleteByInvoiceSection +// method. +type RoleAssignmentsClientDeleteByInvoiceSectionOptions struct { + // placeholder for future optional parameters +} + +// RoleAssignmentsClientGetByBillingAccountOptions contains the optional parameters for the RoleAssignmentsClient.GetByBillingAccount +// method. +type RoleAssignmentsClientGetByBillingAccountOptions struct { + // placeholder for future optional parameters +} + +// RoleAssignmentsClientGetByBillingProfileOptions contains the optional parameters for the RoleAssignmentsClient.GetByBillingProfile +// method. +type RoleAssignmentsClientGetByBillingProfileOptions struct { + // placeholder for future optional parameters +} + +// RoleAssignmentsClientGetByInvoiceSectionOptions contains the optional parameters for the RoleAssignmentsClient.GetByInvoiceSection +// method. +type RoleAssignmentsClientGetByInvoiceSectionOptions struct { + // placeholder for future optional parameters +} + +// RoleAssignmentsClientListByBillingAccountOptions contains the optional parameters for the RoleAssignmentsClient.NewListByBillingAccountPager +// method. +type RoleAssignmentsClientListByBillingAccountOptions struct { + // placeholder for future optional parameters +} + +// RoleAssignmentsClientListByBillingProfileOptions contains the optional parameters for the RoleAssignmentsClient.NewListByBillingProfilePager +// method. +type RoleAssignmentsClientListByBillingProfileOptions struct { + // placeholder for future optional parameters +} + +// RoleAssignmentsClientListByInvoiceSectionOptions contains the optional parameters for the RoleAssignmentsClient.NewListByInvoiceSectionPager +// method. +type RoleAssignmentsClientListByInvoiceSectionOptions struct { + // placeholder for future optional parameters +} + +// RoleDefinitionsClientGetByBillingAccountOptions contains the optional parameters for the RoleDefinitionsClient.GetByBillingAccount +// method. +type RoleDefinitionsClientGetByBillingAccountOptions struct { + // placeholder for future optional parameters +} + +// RoleDefinitionsClientGetByBillingProfileOptions contains the optional parameters for the RoleDefinitionsClient.GetByBillingProfile +// method. +type RoleDefinitionsClientGetByBillingProfileOptions struct { + // placeholder for future optional parameters +} + +// RoleDefinitionsClientGetByInvoiceSectionOptions contains the optional parameters for the RoleDefinitionsClient.GetByInvoiceSection +// method. +type RoleDefinitionsClientGetByInvoiceSectionOptions struct { + // placeholder for future optional parameters +} + +// RoleDefinitionsClientListByBillingAccountOptions contains the optional parameters for the RoleDefinitionsClient.NewListByBillingAccountPager +// method. +type RoleDefinitionsClientListByBillingAccountOptions struct { + // placeholder for future optional parameters +} + +// RoleDefinitionsClientListByBillingProfileOptions contains the optional parameters for the RoleDefinitionsClient.NewListByBillingProfilePager +// method. +type RoleDefinitionsClientListByBillingProfileOptions struct { + // placeholder for future optional parameters +} + +// RoleDefinitionsClientListByInvoiceSectionOptions contains the optional parameters for the RoleDefinitionsClient.NewListByInvoiceSectionPager +// method. +type RoleDefinitionsClientListByInvoiceSectionOptions struct { + // placeholder for future optional parameters +} + +// SubscriptionsClientBeginMoveOptions contains the optional parameters for the SubscriptionsClient.BeginMove method. +type SubscriptionsClientBeginMoveOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// SubscriptionsClientGetOptions contains the optional parameters for the SubscriptionsClient.Get method. +type SubscriptionsClientGetOptions struct { + // placeholder for future optional parameters +} + +// SubscriptionsClientListByBillingAccountOptions contains the optional parameters for the SubscriptionsClient.NewListByBillingAccountPager +// method. +type SubscriptionsClientListByBillingAccountOptions struct { + // placeholder for future optional parameters +} + +// SubscriptionsClientListByBillingProfileOptions contains the optional parameters for the SubscriptionsClient.NewListByBillingProfilePager +// method. +type SubscriptionsClientListByBillingProfileOptions struct { + // placeholder for future optional parameters +} + +// SubscriptionsClientListByCustomerOptions contains the optional parameters for the SubscriptionsClient.NewListByCustomerPager +// method. +type SubscriptionsClientListByCustomerOptions struct { + // placeholder for future optional parameters +} + +// SubscriptionsClientListByInvoiceSectionOptions contains the optional parameters for the SubscriptionsClient.NewListByInvoiceSectionPager +// method. +type SubscriptionsClientListByInvoiceSectionOptions struct { + // placeholder for future optional parameters +} + +// SubscriptionsClientUpdateOptions contains the optional parameters for the SubscriptionsClient.Update method. +type SubscriptionsClientUpdateOptions struct { + // placeholder for future optional parameters +} + +// SubscriptionsClientValidateMoveOptions contains the optional parameters for the SubscriptionsClient.ValidateMove method. +type SubscriptionsClientValidateMoveOptions struct { + // placeholder for future optional parameters +} + +// TransactionsClientListByInvoiceOptions contains the optional parameters for the TransactionsClient.NewListByInvoicePager +// method. +type TransactionsClientListByInvoiceOptions struct { + // placeholder for future optional parameters +} diff --git a/sdk/resourcemanager/billing/armbilling/periods_client.go b/sdk/resourcemanager/billing/armbilling/periods_client.go index e3a2aaffac45..b6a7248cb167 100644 --- a/sdk/resourcemanager/billing/armbilling/periods_client.go +++ b/sdk/resourcemanager/billing/armbilling/periods_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -34,7 +33,7 @@ type PeriodsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewPeriodsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*PeriodsClient, error) { - cl, err := arm.NewClient(moduleName+".PeriodsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -54,18 +53,25 @@ func NewPeriodsClient(subscriptionID string, credential azcore.TokenCredential, // - billingPeriodName - The name of a BillingPeriod resource. // - options - PeriodsClientGetOptions contains the optional parameters for the PeriodsClient.Get method. func (client *PeriodsClient) Get(ctx context.Context, billingPeriodName string, options *PeriodsClientGetOptions) (PeriodsClientGetResponse, error) { + var err error + const operationName = "PeriodsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, billingPeriodName, options) if err != nil { return PeriodsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return PeriodsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PeriodsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return PeriodsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -111,25 +117,20 @@ func (client *PeriodsClient) NewListPager(options *PeriodsClientListOptions) *ru return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *PeriodsClientListResponse) (PeriodsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "PeriodsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return PeriodsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return PeriodsClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PeriodsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/billing/armbilling/permissions_client.go b/sdk/resourcemanager/billing/armbilling/permissions_client.go index 43a331746872..5bf2cb3bd4e2 100644 --- a/sdk/resourcemanager/billing/armbilling/permissions_client.go +++ b/sdk/resourcemanager/billing/armbilling/permissions_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -31,7 +30,7 @@ type PermissionsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewPermissionsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*PermissionsClient, error) { - cl, err := arm.NewClient(moduleName+".PermissionsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -53,25 +52,20 @@ func (client *PermissionsClient) NewListByBillingAccountPager(billingAccountName return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *PermissionsClientListByBillingAccountResponse) (PermissionsClientListByBillingAccountResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByBillingAccountCreateRequest(ctx, billingAccountName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "PermissionsClient.NewListByBillingAccountPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByBillingAccountCreateRequest(ctx, billingAccountName, options) + }, nil) if err != nil { return PermissionsClientListByBillingAccountResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return PermissionsClientListByBillingAccountResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PermissionsClientListByBillingAccountResponse{}, runtime.NewResponseError(resp) - } return client.listByBillingAccountHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -115,25 +109,20 @@ func (client *PermissionsClient) NewListByBillingProfilePager(billingAccountName return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *PermissionsClientListByBillingProfileResponse) (PermissionsClientListByBillingProfileResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "PermissionsClient.NewListByBillingProfilePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, options) + }, nil) if err != nil { return PermissionsClientListByBillingProfileResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return PermissionsClientListByBillingProfileResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PermissionsClientListByBillingProfileResponse{}, runtime.NewResponseError(resp) - } return client.listByBillingProfileHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -181,25 +170,20 @@ func (client *PermissionsClient) NewListByCustomerPager(billingAccountName strin return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *PermissionsClientListByCustomerResponse) (PermissionsClientListByCustomerResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByCustomerCreateRequest(ctx, billingAccountName, customerName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "PermissionsClient.NewListByCustomerPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByCustomerCreateRequest(ctx, billingAccountName, customerName, options) + }, nil) if err != nil { return PermissionsClientListByCustomerResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return PermissionsClientListByCustomerResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PermissionsClientListByCustomerResponse{}, runtime.NewResponseError(resp) - } return client.listByCustomerHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -248,25 +232,20 @@ func (client *PermissionsClient) NewListByInvoiceSectionsPager(billingAccountNam return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *PermissionsClientListByInvoiceSectionsResponse) (PermissionsClientListByInvoiceSectionsResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByInvoiceSectionsCreateRequest(ctx, billingAccountName, billingProfileName, invoiceSectionName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "PermissionsClient.NewListByInvoiceSectionsPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByInvoiceSectionsCreateRequest(ctx, billingAccountName, billingProfileName, invoiceSectionName, options) + }, nil) if err != nil { return PermissionsClientListByInvoiceSectionsResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return PermissionsClientListByInvoiceSectionsResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PermissionsClientListByInvoiceSectionsResponse{}, runtime.NewResponseError(resp) - } return client.listByInvoiceSectionsHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/billing/armbilling/policies_client.go b/sdk/resourcemanager/billing/armbilling/policies_client.go index b28437443105..353ca7649349 100644 --- a/sdk/resourcemanager/billing/armbilling/policies_client.go +++ b/sdk/resourcemanager/billing/armbilling/policies_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -31,7 +30,7 @@ type PoliciesClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewPoliciesClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*PoliciesClient, error) { - cl, err := arm.NewClient(moduleName+".PoliciesClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -51,18 +50,25 @@ func NewPoliciesClient(credential azcore.TokenCredential, options *arm.ClientOpt // - options - PoliciesClientGetByBillingProfileOptions contains the optional parameters for the PoliciesClient.GetByBillingProfile // method. func (client *PoliciesClient) GetByBillingProfile(ctx context.Context, billingAccountName string, billingProfileName string, options *PoliciesClientGetByBillingProfileOptions) (PoliciesClientGetByBillingProfileResponse, error) { + var err error + const operationName = "PoliciesClient.GetByBillingProfile" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, options) if err != nil { return PoliciesClientGetByBillingProfileResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return PoliciesClientGetByBillingProfileResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PoliciesClientGetByBillingProfileResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return PoliciesClientGetByBillingProfileResponse{}, err } - return client.getByBillingProfileHandleResponse(resp) + resp, err := client.getByBillingProfileHandleResponse(httpResp) + return resp, err } // getByBillingProfileCreateRequest creates the GetByBillingProfile request. @@ -105,18 +111,25 @@ func (client *PoliciesClient) getByBillingProfileHandleResponse(resp *http.Respo // - customerName - The ID that uniquely identifies a customer. // - options - PoliciesClientGetByCustomerOptions contains the optional parameters for the PoliciesClient.GetByCustomer method. func (client *PoliciesClient) GetByCustomer(ctx context.Context, billingAccountName string, customerName string, options *PoliciesClientGetByCustomerOptions) (PoliciesClientGetByCustomerResponse, error) { + var err error + const operationName = "PoliciesClient.GetByCustomer" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getByCustomerCreateRequest(ctx, billingAccountName, customerName, options) if err != nil { return PoliciesClientGetByCustomerResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return PoliciesClientGetByCustomerResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PoliciesClientGetByCustomerResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return PoliciesClientGetByCustomerResponse{}, err } - return client.getByCustomerHandleResponse(resp) + resp, err := client.getByCustomerHandleResponse(httpResp) + return resp, err } // getByCustomerCreateRequest creates the GetByCustomer request. @@ -160,18 +173,25 @@ func (client *PoliciesClient) getByCustomerHandleResponse(resp *http.Response) ( // - parameters - Request parameters that are provided to the update policies operation. // - options - PoliciesClientUpdateOptions contains the optional parameters for the PoliciesClient.Update method. func (client *PoliciesClient) Update(ctx context.Context, billingAccountName string, billingProfileName string, parameters Policy, options *PoliciesClientUpdateOptions) (PoliciesClientUpdateResponse, error) { + var err error + const operationName = "PoliciesClient.Update" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, billingAccountName, billingProfileName, parameters, options) if err != nil { return PoliciesClientUpdateResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return PoliciesClientUpdateResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PoliciesClientUpdateResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return PoliciesClientUpdateResponse{}, err } - return client.updateHandleResponse(resp) + resp, err := client.updateHandleResponse(httpResp) + return resp, err } // updateCreateRequest creates the Update request. @@ -193,7 +213,10 @@ func (client *PoliciesClient) updateCreateRequest(ctx context.Context, billingAc reqQP.Set("api-version", "2020-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // updateHandleResponse handles the Update response. @@ -215,18 +238,25 @@ func (client *PoliciesClient) updateHandleResponse(resp *http.Response) (Policie // - parameters - Request parameters that are provided to the update policies operation. // - options - PoliciesClientUpdateCustomerOptions contains the optional parameters for the PoliciesClient.UpdateCustomer method. func (client *PoliciesClient) UpdateCustomer(ctx context.Context, billingAccountName string, customerName string, parameters CustomerPolicy, options *PoliciesClientUpdateCustomerOptions) (PoliciesClientUpdateCustomerResponse, error) { + var err error + const operationName = "PoliciesClient.UpdateCustomer" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCustomerCreateRequest(ctx, billingAccountName, customerName, parameters, options) if err != nil { return PoliciesClientUpdateCustomerResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return PoliciesClientUpdateCustomerResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PoliciesClientUpdateCustomerResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return PoliciesClientUpdateCustomerResponse{}, err } - return client.updateCustomerHandleResponse(resp) + resp, err := client.updateCustomerHandleResponse(httpResp) + return resp, err } // updateCustomerCreateRequest creates the UpdateCustomer request. @@ -248,7 +278,10 @@ func (client *PoliciesClient) updateCustomerCreateRequest(ctx context.Context, b reqQP.Set("api-version", "2020-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // updateCustomerHandleResponse handles the UpdateCustomer response. diff --git a/sdk/resourcemanager/billing/armbilling/products_client.go b/sdk/resourcemanager/billing/armbilling/products_client.go index e957e7d651c1..cb1e3b8c96ed 100644 --- a/sdk/resourcemanager/billing/armbilling/products_client.go +++ b/sdk/resourcemanager/billing/armbilling/products_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -32,7 +31,7 @@ type ProductsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewProductsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*ProductsClient, error) { - cl, err := arm.NewClient(moduleName+".ProductsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -51,18 +50,25 @@ func NewProductsClient(credential azcore.TokenCredential, options *arm.ClientOpt // - productName - The ID that uniquely identifies a product. // - options - ProductsClientGetOptions contains the optional parameters for the ProductsClient.Get method. func (client *ProductsClient) Get(ctx context.Context, billingAccountName string, productName string, options *ProductsClientGetOptions) (ProductsClientGetResponse, error) { + var err error + const operationName = "ProductsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, billingAccountName, productName, options) if err != nil { return ProductsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return ProductsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ProductsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return ProductsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -110,25 +116,20 @@ func (client *ProductsClient) NewListByBillingAccountPager(billingAccountName st return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ProductsClientListByBillingAccountResponse) (ProductsClientListByBillingAccountResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByBillingAccountCreateRequest(ctx, billingAccountName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return ProductsClientListByBillingAccountResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ProductsClient.NewListByBillingAccountPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByBillingAccountCreateRequest(ctx, billingAccountName, options) + }, nil) if err != nil { return ProductsClientListByBillingAccountResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ProductsClientListByBillingAccountResponse{}, runtime.NewResponseError(resp) - } return client.listByBillingAccountHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -177,25 +178,20 @@ func (client *ProductsClient) NewListByBillingProfilePager(billingAccountName st return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ProductsClientListByBillingProfileResponse) (ProductsClientListByBillingProfileResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return ProductsClientListByBillingProfileResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ProductsClient.NewListByBillingProfilePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, options) + }, nil) if err != nil { return ProductsClientListByBillingProfileResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ProductsClientListByBillingProfileResponse{}, runtime.NewResponseError(resp) - } return client.listByBillingProfileHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -247,25 +243,20 @@ func (client *ProductsClient) NewListByCustomerPager(billingAccountName string, return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ProductsClientListByCustomerResponse) (ProductsClientListByCustomerResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByCustomerCreateRequest(ctx, billingAccountName, customerName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return ProductsClientListByCustomerResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ProductsClient.NewListByCustomerPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByCustomerCreateRequest(ctx, billingAccountName, customerName, options) + }, nil) if err != nil { return ProductsClientListByCustomerResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ProductsClientListByCustomerResponse{}, runtime.NewResponseError(resp) - } return client.listByCustomerHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -315,25 +306,20 @@ func (client *ProductsClient) NewListByInvoiceSectionPager(billingAccountName st return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ProductsClientListByInvoiceSectionResponse) (ProductsClientListByInvoiceSectionResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByInvoiceSectionCreateRequest(ctx, billingAccountName, billingProfileName, invoiceSectionName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ProductsClient.NewListByInvoiceSectionPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByInvoiceSectionCreateRequest(ctx, billingAccountName, billingProfileName, invoiceSectionName, options) + }, nil) if err != nil { return ProductsClientListByInvoiceSectionResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return ProductsClientListByInvoiceSectionResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ProductsClientListByInvoiceSectionResponse{}, runtime.NewResponseError(resp) - } return client.listByInvoiceSectionHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -386,18 +372,25 @@ func (client *ProductsClient) listByInvoiceSectionHandleResponse(resp *http.Resp // - parameters - Request parameters that are provided to the move product operation. // - options - ProductsClientMoveOptions contains the optional parameters for the ProductsClient.Move method. func (client *ProductsClient) Move(ctx context.Context, billingAccountName string, productName string, parameters TransferProductRequestProperties, options *ProductsClientMoveOptions) (ProductsClientMoveResponse, error) { + var err error + const operationName = "ProductsClient.Move" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.moveCreateRequest(ctx, billingAccountName, productName, parameters, options) if err != nil { return ProductsClientMoveResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return ProductsClientMoveResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusAccepted) { - return ProductsClientMoveResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted) { + err = runtime.NewResponseError(httpResp) + return ProductsClientMoveResponse{}, err } - return client.moveHandleResponse(resp) + resp, err := client.moveHandleResponse(httpResp) + return resp, err } // moveCreateRequest creates the Move request. @@ -419,7 +412,10 @@ func (client *ProductsClient) moveCreateRequest(ctx context.Context, billingAcco reqQP.Set("api-version", "2020-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // moveHandleResponse handles the Move response. @@ -452,18 +448,25 @@ func (client *ProductsClient) moveHandleResponse(resp *http.Response) (ProductsC // - parameters - Request parameters that are provided to the update product operation. // - options - ProductsClientUpdateOptions contains the optional parameters for the ProductsClient.Update method. func (client *ProductsClient) Update(ctx context.Context, billingAccountName string, productName string, parameters Product, options *ProductsClientUpdateOptions) (ProductsClientUpdateResponse, error) { + var err error + const operationName = "ProductsClient.Update" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, billingAccountName, productName, parameters, options) if err != nil { return ProductsClientUpdateResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return ProductsClientUpdateResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ProductsClientUpdateResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return ProductsClientUpdateResponse{}, err } - return client.updateHandleResponse(resp) + resp, err := client.updateHandleResponse(httpResp) + return resp, err } // updateCreateRequest creates the Update request. @@ -485,7 +488,10 @@ func (client *ProductsClient) updateCreateRequest(ctx context.Context, billingAc reqQP.Set("api-version", "2020-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // updateHandleResponse handles the Update response. @@ -508,18 +514,25 @@ func (client *ProductsClient) updateHandleResponse(resp *http.Response) (Product // - parameters - Request parameters that are provided to the validate move eligibility operation. // - options - ProductsClientValidateMoveOptions contains the optional parameters for the ProductsClient.ValidateMove method. func (client *ProductsClient) ValidateMove(ctx context.Context, billingAccountName string, productName string, parameters TransferProductRequestProperties, options *ProductsClientValidateMoveOptions) (ProductsClientValidateMoveResponse, error) { + var err error + const operationName = "ProductsClient.ValidateMove" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.validateMoveCreateRequest(ctx, billingAccountName, productName, parameters, options) if err != nil { return ProductsClientValidateMoveResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return ProductsClientValidateMoveResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ProductsClientValidateMoveResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return ProductsClientValidateMoveResponse{}, err } - return client.validateMoveHandleResponse(resp) + resp, err := client.validateMoveHandleResponse(httpResp) + return resp, err } // validateMoveCreateRequest creates the ValidateMove request. @@ -541,7 +554,10 @@ func (client *ProductsClient) validateMoveCreateRequest(ctx context.Context, bil reqQP.Set("api-version", "2020-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // validateMoveHandleResponse handles the ValidateMove response. diff --git a/sdk/resourcemanager/billing/armbilling/products_client_example_test.go b/sdk/resourcemanager/billing/armbilling/products_client_example_test.go index c26268ac5e3b..1fdc30ca2599 100644 --- a/sdk/resourcemanager/billing/armbilling/products_client_example_test.go +++ b/sdk/resourcemanager/billing/armbilling/products_client_example_test.go @@ -60,10 +60,10 @@ func ExampleProductsClient_NewListByCustomerPager() { // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](5000), // }, - // LastChargeDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-06-15T17:32:28Z"); return t}()), + // LastChargeDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-06-15T17:32:28.000Z"); return t}()), // ProductType: to.Ptr("Reservation"), // ProductTypeID: to.Ptr("A12345"), - // PurchaseDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T17:32:28Z"); return t}()), + // PurchaseDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T17:32:28.000Z"); return t}()), // Quantity: to.Ptr[float32](4), // Reseller: &armbilling.Reseller{ // Description: to.Ptr("Reseller1"), @@ -92,10 +92,10 @@ func ExampleProductsClient_NewListByCustomerPager() { // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](500), // }, - // LastChargeDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-06-15T17:32:28Z"); return t}()), + // LastChargeDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-06-15T17:32:28.000Z"); return t}()), // ProductType: to.Ptr("Azure subscription"), // ProductTypeID: to.Ptr("A12345"), - // PurchaseDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-04-01T17:32:28Z"); return t}()), + // PurchaseDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-04-01T17:32:28.000Z"); return t}()), // Quantity: to.Ptr[float32](4), // SKUDescription: to.Ptr("Enterprise Agreement Development"), // SKUID: to.Ptr("0001"), @@ -149,10 +149,10 @@ func ExampleProductsClient_NewListByBillingAccountPager() { // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](5000), // }, - // LastChargeDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-06-15T17:32:28Z"); return t}()), + // LastChargeDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-06-15T17:32:28.000Z"); return t}()), // ProductType: to.Ptr("Reservation"), // ProductTypeID: to.Ptr("A12345"), - // PurchaseDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T17:32:28Z"); return t}()), + // PurchaseDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T17:32:28.000Z"); return t}()), // Quantity: to.Ptr[float32](4), // SKUDescription: to.Ptr("Enterprise Agreement Development"), // SKUID: to.Ptr("0001"), @@ -177,10 +177,10 @@ func ExampleProductsClient_NewListByBillingAccountPager() { // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](5000), // }, - // LastChargeDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-06-15T17:32:28Z"); return t}()), + // LastChargeDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-06-15T17:32:28.000Z"); return t}()), // ProductType: to.Ptr("Azure subscription"), // ProductTypeID: to.Ptr("A12345"), - // PurchaseDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-04-01T17:32:28Z"); return t}()), + // PurchaseDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-04-01T17:32:28.000Z"); return t}()), // Quantity: to.Ptr[float32](4), // SKUDescription: to.Ptr("Enterprise Agreement Development"), // SKUID: to.Ptr("0001"), @@ -234,10 +234,10 @@ func ExampleProductsClient_NewListByBillingProfilePager() { // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](5000), // }, - // LastChargeDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-06-15T17:32:28Z"); return t}()), + // LastChargeDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-06-15T17:32:28.000Z"); return t}()), // ProductType: to.Ptr("Reservation"), // ProductTypeID: to.Ptr("A12345"), - // PurchaseDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T17:32:28Z"); return t}()), + // PurchaseDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T17:32:28.000Z"); return t}()), // Quantity: to.Ptr[float32](4), // SKUDescription: to.Ptr("Enterprise Agreement Development"), // SKUID: to.Ptr("0001"), @@ -262,10 +262,10 @@ func ExampleProductsClient_NewListByBillingProfilePager() { // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](5000), // }, - // LastChargeDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-06-15T17:32:28Z"); return t}()), + // LastChargeDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-06-15T17:32:28.000Z"); return t}()), // ProductType: to.Ptr("Azure subscription"), // ProductTypeID: to.Ptr("A12345"), - // PurchaseDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-04-01T17:32:28Z"); return t}()), + // PurchaseDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-04-01T17:32:28.000Z"); return t}()), // Quantity: to.Ptr[float32](4), // SKUDescription: to.Ptr("Enterprise Agreement Development"), // SKUID: to.Ptr("0001"), @@ -319,10 +319,10 @@ func ExampleProductsClient_NewListByInvoiceSectionPager() { // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](5000), // }, - // LastChargeDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-06-15T17:32:28Z"); return t}()), + // LastChargeDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-06-15T17:32:28.000Z"); return t}()), // ProductType: to.Ptr("Reservation"), // ProductTypeID: to.Ptr("A12345"), - // PurchaseDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T17:32:28Z"); return t}()), + // PurchaseDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T17:32:28.000Z"); return t}()), // Quantity: to.Ptr[float32](4), // SKUDescription: to.Ptr("Enterprise Agreement Development"), // SKUID: to.Ptr("0001"), @@ -347,10 +347,10 @@ func ExampleProductsClient_NewListByInvoiceSectionPager() { // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](500), // }, - // LastChargeDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-06-15T17:32:28Z"); return t}()), + // LastChargeDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-06-15T17:32:28.000Z"); return t}()), // ProductType: to.Ptr("Azure subscription"), // ProductTypeID: to.Ptr("A12345"), - // PurchaseDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-04-01T17:32:28Z"); return t}()), + // PurchaseDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-04-01T17:32:28.000Z"); return t}()), // Quantity: to.Ptr[float32](4), // SKUDescription: to.Ptr("Enterprise Agreement Development"), // SKUID: to.Ptr("0001"), @@ -396,10 +396,10 @@ func ExampleProductsClient_Get() { // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](5000), // }, - // LastChargeDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-06-15T17:32:28Z"); return t}()), + // LastChargeDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-06-15T17:32:28.000Z"); return t}()), // ProductType: to.Ptr("Subscription"), // ProductTypeID: to.Ptr("A12345"), - // PurchaseDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T17:32:28Z"); return t}()), + // PurchaseDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T17:32:28.000Z"); return t}()), // Quantity: to.Ptr[float32](4), // SKUDescription: to.Ptr("Enterprise Agreement Development"), // SKUID: to.Ptr("0001"), @@ -448,10 +448,10 @@ func ExampleProductsClient_Update() { // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](5000), // }, - // LastChargeDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-06-15T17:32:28Z"); return t}()), + // LastChargeDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-06-15T17:32:28.000Z"); return t}()), // ProductType: to.Ptr("Subscription"), // ProductTypeID: to.Ptr("A12345"), - // PurchaseDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T17:32:28Z"); return t}()), + // PurchaseDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T17:32:28.000Z"); return t}()), // Quantity: to.Ptr[float32](4), // SKUDescription: to.Ptr("Enterprise Agreement Development"), // SKUID: to.Ptr("0001"), @@ -498,10 +498,10 @@ func ExampleProductsClient_Move() { // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](5000), // }, - // LastChargeDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-06-15T17:32:28Z"); return t}()), + // LastChargeDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-06-15T17:32:28.000Z"); return t}()), // ProductType: to.Ptr("Subscription"), // ProductTypeID: to.Ptr("A12345"), - // PurchaseDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T17:32:28Z"); return t}()), + // PurchaseDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T17:32:28.000Z"); return t}()), // Quantity: to.Ptr[float32](4), // SKUDescription: to.Ptr("Enterprise Agreement Development"), // SKUID: to.Ptr("0001"), diff --git a/sdk/resourcemanager/billing/armbilling/profiles_client.go b/sdk/resourcemanager/billing/armbilling/profiles_client.go index 4bc8193b2c36..cf9ffcab83e0 100644 --- a/sdk/resourcemanager/billing/armbilling/profiles_client.go +++ b/sdk/resourcemanager/billing/armbilling/profiles_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -31,7 +30,7 @@ type ProfilesClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewProfilesClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*ProfilesClient, error) { - cl, err := arm.NewClient(moduleName+".ProfilesClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -57,9 +56,14 @@ func (client *ProfilesClient) BeginCreateOrUpdate(ctx context.Context, billingAc if err != nil { return nil, err } - return runtime.NewPoller[ProfilesClientCreateOrUpdateResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[ProfilesClientCreateOrUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[ProfilesClientCreateOrUpdateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[ProfilesClientCreateOrUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -69,18 +73,24 @@ func (client *ProfilesClient) BeginCreateOrUpdate(ctx context.Context, billingAc // // Generated from API version 2020-05-01 func (client *ProfilesClient) createOrUpdate(ctx context.Context, billingAccountName string, billingProfileName string, parameters Profile, options *ProfilesClientBeginCreateOrUpdateOptions) (*http.Response, error) { + var err error + const operationName = "ProfilesClient.BeginCreateOrUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createOrUpdateCreateRequest(ctx, billingAccountName, billingProfileName, parameters, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusAccepted) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // createOrUpdateCreateRequest creates the CreateOrUpdate request. @@ -102,7 +112,10 @@ func (client *ProfilesClient) createOrUpdateCreateRequest(ctx context.Context, b reqQP.Set("api-version", "2020-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // Get - Gets a billing profile by its ID. The operation is supported for billing accounts with agreement type Microsoft Customer @@ -114,18 +127,25 @@ func (client *ProfilesClient) createOrUpdateCreateRequest(ctx context.Context, b // - billingProfileName - The ID that uniquely identifies a billing profile. // - options - ProfilesClientGetOptions contains the optional parameters for the ProfilesClient.Get method. func (client *ProfilesClient) Get(ctx context.Context, billingAccountName string, billingProfileName string, options *ProfilesClientGetOptions) (ProfilesClientGetResponse, error) { + var err error + const operationName = "ProfilesClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, billingAccountName, billingProfileName, options) if err != nil { return ProfilesClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return ProfilesClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ProfilesClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return ProfilesClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -175,25 +195,20 @@ func (client *ProfilesClient) NewListByBillingAccountPager(billingAccountName st return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ProfilesClientListByBillingAccountResponse) (ProfilesClientListByBillingAccountResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByBillingAccountCreateRequest(ctx, billingAccountName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ProfilesClient.NewListByBillingAccountPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByBillingAccountCreateRequest(ctx, billingAccountName, options) + }, nil) if err != nil { return ProfilesClientListByBillingAccountResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return ProfilesClientListByBillingAccountResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ProfilesClientListByBillingAccountResponse{}, runtime.NewResponseError(resp) - } return client.listByBillingAccountHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/billing/armbilling/property_client.go b/sdk/resourcemanager/billing/armbilling/property_client.go index 1ca537e84946..a9e0a2fc6677 100644 --- a/sdk/resourcemanager/billing/armbilling/property_client.go +++ b/sdk/resourcemanager/billing/armbilling/property_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -33,7 +32,7 @@ type PropertyClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewPropertyClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*PropertyClient, error) { - cl, err := arm.NewClient(moduleName+".PropertyClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -51,18 +50,25 @@ func NewPropertyClient(subscriptionID string, credential azcore.TokenCredential, // Generated from API version 2020-05-01 // - options - PropertyClientGetOptions contains the optional parameters for the PropertyClient.Get method. func (client *PropertyClient) Get(ctx context.Context, options *PropertyClientGetOptions) (PropertyClientGetResponse, error) { + var err error + const operationName = "PropertyClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, options) if err != nil { return PropertyClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return PropertyClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PropertyClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return PropertyClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -100,18 +106,25 @@ func (client *PropertyClient) getHandleResponse(resp *http.Response) (PropertyCl // - parameters - Request parameters that are provided to the update billing property operation. // - options - PropertyClientUpdateOptions contains the optional parameters for the PropertyClient.Update method. func (client *PropertyClient) Update(ctx context.Context, parameters Property, options *PropertyClientUpdateOptions) (PropertyClientUpdateResponse, error) { + var err error + const operationName = "PropertyClient.Update" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, parameters, options) if err != nil { return PropertyClientUpdateResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return PropertyClientUpdateResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PropertyClientUpdateResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return PropertyClientUpdateResponse{}, err } - return client.updateHandleResponse(resp) + resp, err := client.updateHandleResponse(httpResp) + return resp, err } // updateCreateRequest creates the Update request. @@ -129,7 +142,10 @@ func (client *PropertyClient) updateCreateRequest(ctx context.Context, parameter reqQP.Set("api-version", "2020-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // updateHandleResponse handles the Update response. diff --git a/sdk/resourcemanager/billing/armbilling/reservations_client.go b/sdk/resourcemanager/billing/armbilling/reservations_client.go index caefdea82e1e..8139ccffe74c 100644 --- a/sdk/resourcemanager/billing/armbilling/reservations_client.go +++ b/sdk/resourcemanager/billing/armbilling/reservations_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -31,7 +30,7 @@ type ReservationsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewReservationsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*ReservationsClient, error) { - cl, err := arm.NewClient(moduleName+".ReservationsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -54,25 +53,20 @@ func (client *ReservationsClient) NewListByBillingAccountPager(billingAccountNam return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ReservationsClientListByBillingAccountResponse) (ReservationsClientListByBillingAccountResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByBillingAccountCreateRequest(ctx, billingAccountName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ReservationsClient.NewListByBillingAccountPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByBillingAccountCreateRequest(ctx, billingAccountName, options) + }, nil) if err != nil { return ReservationsClientListByBillingAccountResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return ReservationsClientListByBillingAccountResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ReservationsClientListByBillingAccountResponse{}, runtime.NewResponseError(resp) - } return client.listByBillingAccountHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -129,25 +123,20 @@ func (client *ReservationsClient) NewListByBillingProfilePager(billingAccountNam return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ReservationsClientListByBillingProfileResponse) (ReservationsClientListByBillingProfileResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ReservationsClient.NewListByBillingProfilePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, options) + }, nil) if err != nil { return ReservationsClientListByBillingProfileResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return ReservationsClientListByBillingProfileResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ReservationsClientListByBillingProfileResponse{}, runtime.NewResponseError(resp) - } return client.listByBillingProfileHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/billing/armbilling/response_types.go b/sdk/resourcemanager/billing/armbilling/response_types.go index 1986cba1ffd3..6656f68bcfe8 100644 --- a/sdk/resourcemanager/billing/armbilling/response_types.go +++ b/sdk/resourcemanager/billing/armbilling/response_types.go @@ -3,240 +3,286 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling // AccountsClientGetResponse contains the response from method AccountsClient.Get. type AccountsClientGetResponse struct { + // A billing account. Account } // AccountsClientListInvoiceSectionsByCreateSubscriptionPermissionResponse contains the response from method AccountsClient.NewListInvoiceSectionsByCreateSubscriptionPermissionPager. type AccountsClientListInvoiceSectionsByCreateSubscriptionPermissionResponse struct { + // The list of invoice section properties with create subscription permission. InvoiceSectionListWithCreateSubPermissionResult } // AccountsClientListResponse contains the response from method AccountsClient.NewListPager. type AccountsClientListResponse struct { + // The list of billing accounts. AccountListResult } // AccountsClientUpdateResponse contains the response from method AccountsClient.BeginUpdate. type AccountsClientUpdateResponse struct { + // A billing account. Account } // AddressClientValidateResponse contains the response from method AddressClient.Validate. type AddressClientValidateResponse struct { + // Result of the address validation ValidateAddressResponse } // AgreementsClientGetResponse contains the response from method AgreementsClient.Get. type AgreementsClientGetResponse struct { + // An agreement. Agreement } // AgreementsClientListByBillingAccountResponse contains the response from method AgreementsClient.NewListByBillingAccountPager. type AgreementsClientListByBillingAccountResponse struct { + // Result of listing agreements. AgreementListResult } // AvailableBalancesClientGetResponse contains the response from method AvailableBalancesClient.Get. type AvailableBalancesClientGetResponse struct { + // The latest Azure credit balance. This is the balance available for pay now. AvailableBalance } // CustomersClientGetResponse contains the response from method CustomersClient.Get. type CustomersClientGetResponse struct { + // A partner's customer. Customer } // CustomersClientListByBillingAccountResponse contains the response from method CustomersClient.NewListByBillingAccountPager. type CustomersClientListByBillingAccountResponse struct { + // The list of customers. CustomerListResult } // CustomersClientListByBillingProfileResponse contains the response from method CustomersClient.NewListByBillingProfilePager. type CustomersClientListByBillingProfileResponse struct { + // The list of customers. CustomerListResult } // EnrollmentAccountsClientGetResponse contains the response from method EnrollmentAccountsClient.Get. type EnrollmentAccountsClientGetResponse struct { + // An enrollment account resource. EnrollmentAccountSummary } // EnrollmentAccountsClientListResponse contains the response from method EnrollmentAccountsClient.NewListPager. type EnrollmentAccountsClientListResponse struct { + // Result of listing enrollment accounts. EnrollmentAccountListResult } // InstructionsClientGetResponse contains the response from method InstructionsClient.Get. type InstructionsClientGetResponse struct { + // An instruction. Instruction } // InstructionsClientListByBillingProfileResponse contains the response from method InstructionsClient.NewListByBillingProfilePager. type InstructionsClientListByBillingProfileResponse struct { + // The list of billing instructions used during invoice generation. InstructionListResult } // InstructionsClientPutResponse contains the response from method InstructionsClient.Put. type InstructionsClientPutResponse struct { + // An instruction. Instruction } // InvoiceSectionsClientCreateOrUpdateResponse contains the response from method InvoiceSectionsClient.BeginCreateOrUpdate. type InvoiceSectionsClientCreateOrUpdateResponse struct { + // An invoice section. InvoiceSection } // InvoiceSectionsClientGetResponse contains the response from method InvoiceSectionsClient.Get. type InvoiceSectionsClientGetResponse struct { + // An invoice section. InvoiceSection } // InvoiceSectionsClientListByBillingProfileResponse contains the response from method InvoiceSectionsClient.NewListByBillingProfilePager. type InvoiceSectionsClientListByBillingProfileResponse struct { + // The list of invoice sections. InvoiceSectionListResult } // InvoicesClientDownloadBillingSubscriptionInvoiceResponse contains the response from method InvoicesClient.BeginDownloadBillingSubscriptionInvoice. type InvoicesClientDownloadBillingSubscriptionInvoiceResponse struct { + // A secure URL that can be used to download a an entity until the URL expires. DownloadURL } // InvoicesClientDownloadInvoiceResponse contains the response from method InvoicesClient.BeginDownloadInvoice. type InvoicesClientDownloadInvoiceResponse struct { + // A secure URL that can be used to download a an entity until the URL expires. DownloadURL } // InvoicesClientDownloadMultipleBillingProfileInvoicesResponse contains the response from method InvoicesClient.BeginDownloadMultipleBillingProfileInvoices. type InvoicesClientDownloadMultipleBillingProfileInvoicesResponse struct { + // A secure URL that can be used to download a an entity until the URL expires. DownloadURL } // InvoicesClientDownloadMultipleBillingSubscriptionInvoicesResponse contains the response from method InvoicesClient.BeginDownloadMultipleBillingSubscriptionInvoices. type InvoicesClientDownloadMultipleBillingSubscriptionInvoicesResponse struct { + // A secure URL that can be used to download a an entity until the URL expires. DownloadURL } // InvoicesClientGetByIDResponse contains the response from method InvoicesClient.GetByID. type InvoicesClientGetByIDResponse struct { + // An invoice. Invoice } // InvoicesClientGetBySubscriptionAndInvoiceIDResponse contains the response from method InvoicesClient.GetBySubscriptionAndInvoiceID. type InvoicesClientGetBySubscriptionAndInvoiceIDResponse struct { + // An invoice. Invoice } // InvoicesClientGetResponse contains the response from method InvoicesClient.Get. type InvoicesClientGetResponse struct { + // An invoice. Invoice } // InvoicesClientListByBillingAccountResponse contains the response from method InvoicesClient.NewListByBillingAccountPager. type InvoicesClientListByBillingAccountResponse struct { + // The list of invoices. InvoiceListResult } // InvoicesClientListByBillingProfileResponse contains the response from method InvoicesClient.NewListByBillingProfilePager. type InvoicesClientListByBillingProfileResponse struct { + // The list of invoices. InvoiceListResult } // InvoicesClientListByBillingSubscriptionResponse contains the response from method InvoicesClient.NewListByBillingSubscriptionPager. type InvoicesClientListByBillingSubscriptionResponse struct { + // The list of invoices. InvoiceListResult } // OperationsClientListResponse contains the response from method OperationsClient.NewListPager. type OperationsClientListResponse struct { + // The list of billing operations and a URL link to get the next set of results. OperationListResult } // PeriodsClientGetResponse contains the response from method PeriodsClient.Get. type PeriodsClientGetResponse struct { + // A billing period resource. Period } // PeriodsClientListResponse contains the response from method PeriodsClient.NewListPager. type PeriodsClientListResponse struct { + // Result of listing billing periods. It contains a list of available billing periods in reverse chronological order. PeriodsListResult } // PermissionsClientListByBillingAccountResponse contains the response from method PermissionsClient.NewListByBillingAccountPager. type PermissionsClientListByBillingAccountResponse struct { + // Result of list billingPermissions a caller has on a billing account. PermissionsListResult } // PermissionsClientListByBillingProfileResponse contains the response from method PermissionsClient.NewListByBillingProfilePager. type PermissionsClientListByBillingProfileResponse struct { + // Result of list billingPermissions a caller has on a billing account. PermissionsListResult } // PermissionsClientListByCustomerResponse contains the response from method PermissionsClient.NewListByCustomerPager. type PermissionsClientListByCustomerResponse struct { + // Result of list billingPermissions a caller has on a billing account. PermissionsListResult } // PermissionsClientListByInvoiceSectionsResponse contains the response from method PermissionsClient.NewListByInvoiceSectionsPager. type PermissionsClientListByInvoiceSectionsResponse struct { + // Result of list billingPermissions a caller has on a billing account. PermissionsListResult } // PoliciesClientGetByBillingProfileResponse contains the response from method PoliciesClient.GetByBillingProfile. type PoliciesClientGetByBillingProfileResponse struct { + // A policy. Policy } // PoliciesClientGetByCustomerResponse contains the response from method PoliciesClient.GetByCustomer. type PoliciesClientGetByCustomerResponse struct { + // The customer's Policy. CustomerPolicy } // PoliciesClientUpdateCustomerResponse contains the response from method PoliciesClient.UpdateCustomer. type PoliciesClientUpdateCustomerResponse struct { + // The customer's Policy. CustomerPolicy } // PoliciesClientUpdateResponse contains the response from method PoliciesClient.Update. type PoliciesClientUpdateResponse struct { + // A policy. Policy } // ProductsClientGetResponse contains the response from method ProductsClient.Get. type ProductsClientGetResponse struct { + // A product. Product } // ProductsClientListByBillingAccountResponse contains the response from method ProductsClient.NewListByBillingAccountPager. type ProductsClientListByBillingAccountResponse struct { + // The list of products. It contains a list of available product summaries in reverse chronological order by purchase date. ProductsListResult } // ProductsClientListByBillingProfileResponse contains the response from method ProductsClient.NewListByBillingProfilePager. type ProductsClientListByBillingProfileResponse struct { + // The list of products. It contains a list of available product summaries in reverse chronological order by purchase date. ProductsListResult } // ProductsClientListByCustomerResponse contains the response from method ProductsClient.NewListByCustomerPager. type ProductsClientListByCustomerResponse struct { + // The list of products. It contains a list of available product summaries in reverse chronological order by purchase date. ProductsListResult } // ProductsClientListByInvoiceSectionResponse contains the response from method ProductsClient.NewListByInvoiceSectionPager. type ProductsClientListByInvoiceSectionResponse struct { + // The list of products. It contains a list of available product summaries in reverse chronological order by purchase date. ProductsListResult } // ProductsClientMoveResponse contains the response from method ProductsClient.Move. type ProductsClientMoveResponse struct { + // A product. Product + // Location contains the information returned from the Location header response. Location *string @@ -246,165 +292,198 @@ type ProductsClientMoveResponse struct { // ProductsClientUpdateResponse contains the response from method ProductsClient.Update. type ProductsClientUpdateResponse struct { + // A product. Product } // ProductsClientValidateMoveResponse contains the response from method ProductsClient.ValidateMove. type ProductsClientValidateMoveResponse struct { + // Result of the product transfer eligibility validation. ValidateProductTransferEligibilityResult } // ProfilesClientCreateOrUpdateResponse contains the response from method ProfilesClient.BeginCreateOrUpdate. type ProfilesClientCreateOrUpdateResponse struct { + // A billing profile. Profile } // ProfilesClientGetResponse contains the response from method ProfilesClient.Get. type ProfilesClientGetResponse struct { + // A billing profile. Profile } // ProfilesClientListByBillingAccountResponse contains the response from method ProfilesClient.NewListByBillingAccountPager. type ProfilesClientListByBillingAccountResponse struct { + // The list of billing profiles. ProfileListResult } // PropertyClientGetResponse contains the response from method PropertyClient.Get. type PropertyClientGetResponse struct { + // A billing property. Property } // PropertyClientUpdateResponse contains the response from method PropertyClient.Update. type PropertyClientUpdateResponse struct { + // A billing property. Property } // ReservationsClientListByBillingAccountResponse contains the response from method ReservationsClient.NewListByBillingAccountPager. type ReservationsClientListByBillingAccountResponse struct { + // The list of reservations and summary of roll out count of reservations in each state. ReservationsListResult } // ReservationsClientListByBillingProfileResponse contains the response from method ReservationsClient.NewListByBillingProfilePager. type ReservationsClientListByBillingProfileResponse struct { + // The list of reservations and summary of roll out count of reservations in each state. ReservationsListResult } // RoleAssignmentsClientDeleteByBillingAccountResponse contains the response from method RoleAssignmentsClient.DeleteByBillingAccount. type RoleAssignmentsClientDeleteByBillingAccountResponse struct { + // The role assignment RoleAssignment } // RoleAssignmentsClientDeleteByBillingProfileResponse contains the response from method RoleAssignmentsClient.DeleteByBillingProfile. type RoleAssignmentsClientDeleteByBillingProfileResponse struct { + // The role assignment RoleAssignment } // RoleAssignmentsClientDeleteByInvoiceSectionResponse contains the response from method RoleAssignmentsClient.DeleteByInvoiceSection. type RoleAssignmentsClientDeleteByInvoiceSectionResponse struct { + // The role assignment RoleAssignment } // RoleAssignmentsClientGetByBillingAccountResponse contains the response from method RoleAssignmentsClient.GetByBillingAccount. type RoleAssignmentsClientGetByBillingAccountResponse struct { + // The role assignment RoleAssignment } // RoleAssignmentsClientGetByBillingProfileResponse contains the response from method RoleAssignmentsClient.GetByBillingProfile. type RoleAssignmentsClientGetByBillingProfileResponse struct { + // The role assignment RoleAssignment } // RoleAssignmentsClientGetByInvoiceSectionResponse contains the response from method RoleAssignmentsClient.GetByInvoiceSection. type RoleAssignmentsClientGetByInvoiceSectionResponse struct { + // The role assignment RoleAssignment } // RoleAssignmentsClientListByBillingAccountResponse contains the response from method RoleAssignmentsClient.NewListByBillingAccountPager. type RoleAssignmentsClientListByBillingAccountResponse struct { + // The list of role assignments. RoleAssignmentListResult } // RoleAssignmentsClientListByBillingProfileResponse contains the response from method RoleAssignmentsClient.NewListByBillingProfilePager. type RoleAssignmentsClientListByBillingProfileResponse struct { + // The list of role assignments. RoleAssignmentListResult } // RoleAssignmentsClientListByInvoiceSectionResponse contains the response from method RoleAssignmentsClient.NewListByInvoiceSectionPager. type RoleAssignmentsClientListByInvoiceSectionResponse struct { + // The list of role assignments. RoleAssignmentListResult } // RoleDefinitionsClientGetByBillingAccountResponse contains the response from method RoleDefinitionsClient.GetByBillingAccount. type RoleDefinitionsClientGetByBillingAccountResponse struct { + // The properties of a role definition. RoleDefinition } // RoleDefinitionsClientGetByBillingProfileResponse contains the response from method RoleDefinitionsClient.GetByBillingProfile. type RoleDefinitionsClientGetByBillingProfileResponse struct { + // The properties of a role definition. RoleDefinition } // RoleDefinitionsClientGetByInvoiceSectionResponse contains the response from method RoleDefinitionsClient.GetByInvoiceSection. type RoleDefinitionsClientGetByInvoiceSectionResponse struct { + // The properties of a role definition. RoleDefinition } // RoleDefinitionsClientListByBillingAccountResponse contains the response from method RoleDefinitionsClient.NewListByBillingAccountPager. type RoleDefinitionsClientListByBillingAccountResponse struct { + // The list of role definitions. RoleDefinitionListResult } // RoleDefinitionsClientListByBillingProfileResponse contains the response from method RoleDefinitionsClient.NewListByBillingProfilePager. type RoleDefinitionsClientListByBillingProfileResponse struct { + // The list of role definitions. RoleDefinitionListResult } // RoleDefinitionsClientListByInvoiceSectionResponse contains the response from method RoleDefinitionsClient.NewListByInvoiceSectionPager. type RoleDefinitionsClientListByInvoiceSectionResponse struct { + // The list of role definitions. RoleDefinitionListResult } // SubscriptionsClientGetResponse contains the response from method SubscriptionsClient.Get. type SubscriptionsClientGetResponse struct { + // A billing subscription. Subscription } // SubscriptionsClientListByBillingAccountResponse contains the response from method SubscriptionsClient.NewListByBillingAccountPager. type SubscriptionsClientListByBillingAccountResponse struct { + // The list of billing subscriptions. SubscriptionsListResult } // SubscriptionsClientListByBillingProfileResponse contains the response from method SubscriptionsClient.NewListByBillingProfilePager. type SubscriptionsClientListByBillingProfileResponse struct { + // The list of billing subscriptions. SubscriptionsListResult } // SubscriptionsClientListByCustomerResponse contains the response from method SubscriptionsClient.NewListByCustomerPager. type SubscriptionsClientListByCustomerResponse struct { + // The list of billing subscriptions. SubscriptionsListResult } // SubscriptionsClientListByInvoiceSectionResponse contains the response from method SubscriptionsClient.NewListByInvoiceSectionPager. type SubscriptionsClientListByInvoiceSectionResponse struct { + // The list of billing subscriptions. SubscriptionsListResult } // SubscriptionsClientMoveResponse contains the response from method SubscriptionsClient.BeginMove. type SubscriptionsClientMoveResponse struct { + // A billing subscription. Subscription } // SubscriptionsClientUpdateResponse contains the response from method SubscriptionsClient.Update. type SubscriptionsClientUpdateResponse struct { + // A billing subscription. Subscription } // SubscriptionsClientValidateMoveResponse contains the response from method SubscriptionsClient.ValidateMove. type SubscriptionsClientValidateMoveResponse struct { + // Result of the transfer eligibility validation. ValidateSubscriptionTransferEligibilityResult } // TransactionsClientListByInvoiceResponse contains the response from method TransactionsClient.NewListByInvoicePager. type TransactionsClientListByInvoiceResponse struct { + // The list of transactions. TransactionListResult } diff --git a/sdk/resourcemanager/billing/armbilling/roleassignments_client.go b/sdk/resourcemanager/billing/armbilling/roleassignments_client.go index bcb276f63079..457c95657752 100644 --- a/sdk/resourcemanager/billing/armbilling/roleassignments_client.go +++ b/sdk/resourcemanager/billing/armbilling/roleassignments_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -31,7 +30,7 @@ type RoleAssignmentsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewRoleAssignmentsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*RoleAssignmentsClient, error) { - cl, err := arm.NewClient(moduleName+".RoleAssignmentsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -51,18 +50,25 @@ func NewRoleAssignmentsClient(credential azcore.TokenCredential, options *arm.Cl // - options - RoleAssignmentsClientDeleteByBillingAccountOptions contains the optional parameters for the RoleAssignmentsClient.DeleteByBillingAccount // method. func (client *RoleAssignmentsClient) DeleteByBillingAccount(ctx context.Context, billingAccountName string, billingRoleAssignmentName string, options *RoleAssignmentsClientDeleteByBillingAccountOptions) (RoleAssignmentsClientDeleteByBillingAccountResponse, error) { + var err error + const operationName = "RoleAssignmentsClient.DeleteByBillingAccount" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteByBillingAccountCreateRequest(ctx, billingAccountName, billingRoleAssignmentName, options) if err != nil { return RoleAssignmentsClientDeleteByBillingAccountResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return RoleAssignmentsClientDeleteByBillingAccountResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return RoleAssignmentsClientDeleteByBillingAccountResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return RoleAssignmentsClientDeleteByBillingAccountResponse{}, err } - return client.deleteByBillingAccountHandleResponse(resp) + resp, err := client.deleteByBillingAccountHandleResponse(httpResp) + return resp, err } // deleteByBillingAccountCreateRequest creates the DeleteByBillingAccount request. @@ -107,18 +113,25 @@ func (client *RoleAssignmentsClient) deleteByBillingAccountHandleResponse(resp * // - options - RoleAssignmentsClientDeleteByBillingProfileOptions contains the optional parameters for the RoleAssignmentsClient.DeleteByBillingProfile // method. func (client *RoleAssignmentsClient) DeleteByBillingProfile(ctx context.Context, billingAccountName string, billingProfileName string, billingRoleAssignmentName string, options *RoleAssignmentsClientDeleteByBillingProfileOptions) (RoleAssignmentsClientDeleteByBillingProfileResponse, error) { + var err error + const operationName = "RoleAssignmentsClient.DeleteByBillingProfile" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, billingRoleAssignmentName, options) if err != nil { return RoleAssignmentsClientDeleteByBillingProfileResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return RoleAssignmentsClientDeleteByBillingProfileResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return RoleAssignmentsClientDeleteByBillingProfileResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return RoleAssignmentsClientDeleteByBillingProfileResponse{}, err } - return client.deleteByBillingProfileHandleResponse(resp) + resp, err := client.deleteByBillingProfileHandleResponse(httpResp) + return resp, err } // deleteByBillingProfileCreateRequest creates the DeleteByBillingProfile request. @@ -168,18 +181,25 @@ func (client *RoleAssignmentsClient) deleteByBillingProfileHandleResponse(resp * // - options - RoleAssignmentsClientDeleteByInvoiceSectionOptions contains the optional parameters for the RoleAssignmentsClient.DeleteByInvoiceSection // method. func (client *RoleAssignmentsClient) DeleteByInvoiceSection(ctx context.Context, billingAccountName string, billingProfileName string, invoiceSectionName string, billingRoleAssignmentName string, options *RoleAssignmentsClientDeleteByInvoiceSectionOptions) (RoleAssignmentsClientDeleteByInvoiceSectionResponse, error) { + var err error + const operationName = "RoleAssignmentsClient.DeleteByInvoiceSection" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteByInvoiceSectionCreateRequest(ctx, billingAccountName, billingProfileName, invoiceSectionName, billingRoleAssignmentName, options) if err != nil { return RoleAssignmentsClientDeleteByInvoiceSectionResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return RoleAssignmentsClientDeleteByInvoiceSectionResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return RoleAssignmentsClientDeleteByInvoiceSectionResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return RoleAssignmentsClientDeleteByInvoiceSectionResponse{}, err } - return client.deleteByInvoiceSectionHandleResponse(resp) + resp, err := client.deleteByInvoiceSectionHandleResponse(httpResp) + return resp, err } // deleteByInvoiceSectionCreateRequest creates the DeleteByInvoiceSection request. @@ -231,18 +251,25 @@ func (client *RoleAssignmentsClient) deleteByInvoiceSectionHandleResponse(resp * // - options - RoleAssignmentsClientGetByBillingAccountOptions contains the optional parameters for the RoleAssignmentsClient.GetByBillingAccount // method. func (client *RoleAssignmentsClient) GetByBillingAccount(ctx context.Context, billingAccountName string, billingRoleAssignmentName string, options *RoleAssignmentsClientGetByBillingAccountOptions) (RoleAssignmentsClientGetByBillingAccountResponse, error) { + var err error + const operationName = "RoleAssignmentsClient.GetByBillingAccount" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getByBillingAccountCreateRequest(ctx, billingAccountName, billingRoleAssignmentName, options) if err != nil { return RoleAssignmentsClientGetByBillingAccountResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return RoleAssignmentsClientGetByBillingAccountResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return RoleAssignmentsClientGetByBillingAccountResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return RoleAssignmentsClientGetByBillingAccountResponse{}, err } - return client.getByBillingAccountHandleResponse(resp) + resp, err := client.getByBillingAccountHandleResponse(httpResp) + return resp, err } // getByBillingAccountCreateRequest creates the GetByBillingAccount request. @@ -287,18 +314,25 @@ func (client *RoleAssignmentsClient) getByBillingAccountHandleResponse(resp *htt // - options - RoleAssignmentsClientGetByBillingProfileOptions contains the optional parameters for the RoleAssignmentsClient.GetByBillingProfile // method. func (client *RoleAssignmentsClient) GetByBillingProfile(ctx context.Context, billingAccountName string, billingProfileName string, billingRoleAssignmentName string, options *RoleAssignmentsClientGetByBillingProfileOptions) (RoleAssignmentsClientGetByBillingProfileResponse, error) { + var err error + const operationName = "RoleAssignmentsClient.GetByBillingProfile" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, billingRoleAssignmentName, options) if err != nil { return RoleAssignmentsClientGetByBillingProfileResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return RoleAssignmentsClientGetByBillingProfileResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return RoleAssignmentsClientGetByBillingProfileResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return RoleAssignmentsClientGetByBillingProfileResponse{}, err } - return client.getByBillingProfileHandleResponse(resp) + resp, err := client.getByBillingProfileHandleResponse(httpResp) + return resp, err } // getByBillingProfileCreateRequest creates the GetByBillingProfile request. @@ -348,18 +382,25 @@ func (client *RoleAssignmentsClient) getByBillingProfileHandleResponse(resp *htt // - options - RoleAssignmentsClientGetByInvoiceSectionOptions contains the optional parameters for the RoleAssignmentsClient.GetByInvoiceSection // method. func (client *RoleAssignmentsClient) GetByInvoiceSection(ctx context.Context, billingAccountName string, billingProfileName string, invoiceSectionName string, billingRoleAssignmentName string, options *RoleAssignmentsClientGetByInvoiceSectionOptions) (RoleAssignmentsClientGetByInvoiceSectionResponse, error) { + var err error + const operationName = "RoleAssignmentsClient.GetByInvoiceSection" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getByInvoiceSectionCreateRequest(ctx, billingAccountName, billingProfileName, invoiceSectionName, billingRoleAssignmentName, options) if err != nil { return RoleAssignmentsClientGetByInvoiceSectionResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return RoleAssignmentsClientGetByInvoiceSectionResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return RoleAssignmentsClientGetByInvoiceSectionResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return RoleAssignmentsClientGetByInvoiceSectionResponse{}, err } - return client.getByInvoiceSectionHandleResponse(resp) + resp, err := client.getByInvoiceSectionHandleResponse(httpResp) + return resp, err } // getByInvoiceSectionCreateRequest creates the GetByInvoiceSection request. @@ -414,25 +455,20 @@ func (client *RoleAssignmentsClient) NewListByBillingAccountPager(billingAccount return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *RoleAssignmentsClientListByBillingAccountResponse) (RoleAssignmentsClientListByBillingAccountResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByBillingAccountCreateRequest(ctx, billingAccountName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return RoleAssignmentsClientListByBillingAccountResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "RoleAssignmentsClient.NewListByBillingAccountPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByBillingAccountCreateRequest(ctx, billingAccountName, options) + }, nil) if err != nil { return RoleAssignmentsClientListByBillingAccountResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return RoleAssignmentsClientListByBillingAccountResponse{}, runtime.NewResponseError(resp) - } return client.listByBillingAccountHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -477,25 +513,20 @@ func (client *RoleAssignmentsClient) NewListByBillingProfilePager(billingAccount return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *RoleAssignmentsClientListByBillingProfileResponse) (RoleAssignmentsClientListByBillingProfileResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "RoleAssignmentsClient.NewListByBillingProfilePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, options) + }, nil) if err != nil { return RoleAssignmentsClientListByBillingProfileResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return RoleAssignmentsClientListByBillingProfileResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return RoleAssignmentsClientListByBillingProfileResponse{}, runtime.NewResponseError(resp) - } return client.listByBillingProfileHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -545,25 +576,20 @@ func (client *RoleAssignmentsClient) NewListByInvoiceSectionPager(billingAccount return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *RoleAssignmentsClientListByInvoiceSectionResponse) (RoleAssignmentsClientListByInvoiceSectionResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByInvoiceSectionCreateRequest(ctx, billingAccountName, billingProfileName, invoiceSectionName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "RoleAssignmentsClient.NewListByInvoiceSectionPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByInvoiceSectionCreateRequest(ctx, billingAccountName, billingProfileName, invoiceSectionName, options) + }, nil) if err != nil { return RoleAssignmentsClientListByInvoiceSectionResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return RoleAssignmentsClientListByInvoiceSectionResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return RoleAssignmentsClientListByInvoiceSectionResponse{}, runtime.NewResponseError(resp) - } return client.listByInvoiceSectionHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/billing/armbilling/roledefinitions_client.go b/sdk/resourcemanager/billing/armbilling/roledefinitions_client.go index 3a37f439dbe9..ea8e1b5cc70e 100644 --- a/sdk/resourcemanager/billing/armbilling/roledefinitions_client.go +++ b/sdk/resourcemanager/billing/armbilling/roledefinitions_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -31,7 +30,7 @@ type RoleDefinitionsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewRoleDefinitionsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*RoleDefinitionsClient, error) { - cl, err := arm.NewClient(moduleName+".RoleDefinitionsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -51,18 +50,25 @@ func NewRoleDefinitionsClient(credential azcore.TokenCredential, options *arm.Cl // - options - RoleDefinitionsClientGetByBillingAccountOptions contains the optional parameters for the RoleDefinitionsClient.GetByBillingAccount // method. func (client *RoleDefinitionsClient) GetByBillingAccount(ctx context.Context, billingAccountName string, billingRoleDefinitionName string, options *RoleDefinitionsClientGetByBillingAccountOptions) (RoleDefinitionsClientGetByBillingAccountResponse, error) { + var err error + const operationName = "RoleDefinitionsClient.GetByBillingAccount" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getByBillingAccountCreateRequest(ctx, billingAccountName, billingRoleDefinitionName, options) if err != nil { return RoleDefinitionsClientGetByBillingAccountResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return RoleDefinitionsClientGetByBillingAccountResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return RoleDefinitionsClientGetByBillingAccountResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return RoleDefinitionsClientGetByBillingAccountResponse{}, err } - return client.getByBillingAccountHandleResponse(resp) + resp, err := client.getByBillingAccountHandleResponse(httpResp) + return resp, err } // getByBillingAccountCreateRequest creates the GetByBillingAccount request. @@ -107,18 +113,25 @@ func (client *RoleDefinitionsClient) getByBillingAccountHandleResponse(resp *htt // - options - RoleDefinitionsClientGetByBillingProfileOptions contains the optional parameters for the RoleDefinitionsClient.GetByBillingProfile // method. func (client *RoleDefinitionsClient) GetByBillingProfile(ctx context.Context, billingAccountName string, billingProfileName string, billingRoleDefinitionName string, options *RoleDefinitionsClientGetByBillingProfileOptions) (RoleDefinitionsClientGetByBillingProfileResponse, error) { + var err error + const operationName = "RoleDefinitionsClient.GetByBillingProfile" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, billingRoleDefinitionName, options) if err != nil { return RoleDefinitionsClientGetByBillingProfileResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return RoleDefinitionsClientGetByBillingProfileResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return RoleDefinitionsClientGetByBillingProfileResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return RoleDefinitionsClientGetByBillingProfileResponse{}, err } - return client.getByBillingProfileHandleResponse(resp) + resp, err := client.getByBillingProfileHandleResponse(httpResp) + return resp, err } // getByBillingProfileCreateRequest creates the GetByBillingProfile request. @@ -168,18 +181,25 @@ func (client *RoleDefinitionsClient) getByBillingProfileHandleResponse(resp *htt // - options - RoleDefinitionsClientGetByInvoiceSectionOptions contains the optional parameters for the RoleDefinitionsClient.GetByInvoiceSection // method. func (client *RoleDefinitionsClient) GetByInvoiceSection(ctx context.Context, billingAccountName string, billingProfileName string, invoiceSectionName string, billingRoleDefinitionName string, options *RoleDefinitionsClientGetByInvoiceSectionOptions) (RoleDefinitionsClientGetByInvoiceSectionResponse, error) { + var err error + const operationName = "RoleDefinitionsClient.GetByInvoiceSection" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getByInvoiceSectionCreateRequest(ctx, billingAccountName, billingProfileName, invoiceSectionName, billingRoleDefinitionName, options) if err != nil { return RoleDefinitionsClientGetByInvoiceSectionResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return RoleDefinitionsClientGetByInvoiceSectionResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return RoleDefinitionsClientGetByInvoiceSectionResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return RoleDefinitionsClientGetByInvoiceSectionResponse{}, err } - return client.getByInvoiceSectionHandleResponse(resp) + resp, err := client.getByInvoiceSectionHandleResponse(httpResp) + return resp, err } // getByInvoiceSectionCreateRequest creates the GetByInvoiceSection request. @@ -234,25 +254,20 @@ func (client *RoleDefinitionsClient) NewListByBillingAccountPager(billingAccount return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *RoleDefinitionsClientListByBillingAccountResponse) (RoleDefinitionsClientListByBillingAccountResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByBillingAccountCreateRequest(ctx, billingAccountName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return RoleDefinitionsClientListByBillingAccountResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "RoleDefinitionsClient.NewListByBillingAccountPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByBillingAccountCreateRequest(ctx, billingAccountName, options) + }, nil) if err != nil { return RoleDefinitionsClientListByBillingAccountResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return RoleDefinitionsClientListByBillingAccountResponse{}, runtime.NewResponseError(resp) - } return client.listByBillingAccountHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -297,25 +312,20 @@ func (client *RoleDefinitionsClient) NewListByBillingProfilePager(billingAccount return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *RoleDefinitionsClientListByBillingProfileResponse) (RoleDefinitionsClientListByBillingProfileResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "RoleDefinitionsClient.NewListByBillingProfilePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, options) + }, nil) if err != nil { return RoleDefinitionsClientListByBillingProfileResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return RoleDefinitionsClientListByBillingProfileResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return RoleDefinitionsClientListByBillingProfileResponse{}, runtime.NewResponseError(resp) - } return client.listByBillingProfileHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -365,25 +375,20 @@ func (client *RoleDefinitionsClient) NewListByInvoiceSectionPager(billingAccount return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *RoleDefinitionsClientListByInvoiceSectionResponse) (RoleDefinitionsClientListByInvoiceSectionResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByInvoiceSectionCreateRequest(ctx, billingAccountName, billingProfileName, invoiceSectionName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "RoleDefinitionsClient.NewListByInvoiceSectionPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByInvoiceSectionCreateRequest(ctx, billingAccountName, billingProfileName, invoiceSectionName, options) + }, nil) if err != nil { return RoleDefinitionsClientListByInvoiceSectionResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return RoleDefinitionsClientListByInvoiceSectionResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return RoleDefinitionsClientListByInvoiceSectionResponse{}, runtime.NewResponseError(resp) - } return client.listByInvoiceSectionHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/billing/armbilling/subscriptions_client.go b/sdk/resourcemanager/billing/armbilling/subscriptions_client.go index ef48daac1c12..b77b847de5cd 100644 --- a/sdk/resourcemanager/billing/armbilling/subscriptions_client.go +++ b/sdk/resourcemanager/billing/armbilling/subscriptions_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -33,7 +32,7 @@ type SubscriptionsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewSubscriptionsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*SubscriptionsClient, error) { - cl, err := arm.NewClient(moduleName+".SubscriptionsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -52,18 +51,25 @@ func NewSubscriptionsClient(subscriptionID string, credential azcore.TokenCreden // - billingAccountName - The ID that uniquely identifies a billing account. // - options - SubscriptionsClientGetOptions contains the optional parameters for the SubscriptionsClient.Get method. func (client *SubscriptionsClient) Get(ctx context.Context, billingAccountName string, options *SubscriptionsClientGetOptions) (SubscriptionsClientGetResponse, error) { + var err error + const operationName = "SubscriptionsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, billingAccountName, options) if err != nil { return SubscriptionsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return SubscriptionsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return SubscriptionsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return SubscriptionsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -110,25 +116,20 @@ func (client *SubscriptionsClient) NewListByBillingAccountPager(billingAccountNa return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *SubscriptionsClientListByBillingAccountResponse) (SubscriptionsClientListByBillingAccountResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByBillingAccountCreateRequest(ctx, billingAccountName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return SubscriptionsClientListByBillingAccountResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "SubscriptionsClient.NewListByBillingAccountPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByBillingAccountCreateRequest(ctx, billingAccountName, options) + }, nil) if err != nil { return SubscriptionsClientListByBillingAccountResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return SubscriptionsClientListByBillingAccountResponse{}, runtime.NewResponseError(resp) - } return client.listByBillingAccountHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -173,25 +174,20 @@ func (client *SubscriptionsClient) NewListByBillingProfilePager(billingAccountNa return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *SubscriptionsClientListByBillingProfileResponse) (SubscriptionsClientListByBillingProfileResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return SubscriptionsClientListByBillingProfileResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "SubscriptionsClient.NewListByBillingProfilePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByBillingProfileCreateRequest(ctx, billingAccountName, billingProfileName, options) + }, nil) if err != nil { return SubscriptionsClientListByBillingProfileResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return SubscriptionsClientListByBillingProfileResponse{}, runtime.NewResponseError(resp) - } return client.listByBillingProfileHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -240,25 +236,20 @@ func (client *SubscriptionsClient) NewListByCustomerPager(billingAccountName str return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *SubscriptionsClientListByCustomerResponse) (SubscriptionsClientListByCustomerResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByCustomerCreateRequest(ctx, billingAccountName, customerName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return SubscriptionsClientListByCustomerResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "SubscriptionsClient.NewListByCustomerPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByCustomerCreateRequest(ctx, billingAccountName, customerName, options) + }, nil) if err != nil { return SubscriptionsClientListByCustomerResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return SubscriptionsClientListByCustomerResponse{}, runtime.NewResponseError(resp) - } return client.listByCustomerHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -308,25 +299,20 @@ func (client *SubscriptionsClient) NewListByInvoiceSectionPager(billingAccountNa return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *SubscriptionsClientListByInvoiceSectionResponse) (SubscriptionsClientListByInvoiceSectionResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByInvoiceSectionCreateRequest(ctx, billingAccountName, billingProfileName, invoiceSectionName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "SubscriptionsClient.NewListByInvoiceSectionPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByInvoiceSectionCreateRequest(ctx, billingAccountName, billingProfileName, invoiceSectionName, options) + }, nil) if err != nil { return SubscriptionsClientListByInvoiceSectionResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return SubscriptionsClientListByInvoiceSectionResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return SubscriptionsClientListByInvoiceSectionResponse{}, runtime.NewResponseError(resp) - } return client.listByInvoiceSectionHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -380,9 +366,14 @@ func (client *SubscriptionsClient) BeginMove(ctx context.Context, billingAccount if err != nil { return nil, err } - return runtime.NewPoller[SubscriptionsClientMoveResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[SubscriptionsClientMoveResponse]{ + Tracer: client.internal.Tracer(), + }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[SubscriptionsClientMoveResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[SubscriptionsClientMoveResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -393,18 +384,24 @@ func (client *SubscriptionsClient) BeginMove(ctx context.Context, billingAccount // // Generated from API version 2020-05-01 func (client *SubscriptionsClient) move(ctx context.Context, billingAccountName string, parameters TransferBillingSubscriptionRequestProperties, options *SubscriptionsClientBeginMoveOptions) (*http.Response, error) { + var err error + const operationName = "SubscriptionsClient.BeginMove" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.moveCreateRequest(ctx, billingAccountName, parameters, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusAccepted) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // moveCreateRequest creates the Move request. @@ -426,7 +423,10 @@ func (client *SubscriptionsClient) moveCreateRequest(ctx context.Context, billin reqQP.Set("api-version", "2020-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // Update - Updates the properties of a billing subscription. Currently, cost center can be updated. The operation is supported @@ -438,18 +438,25 @@ func (client *SubscriptionsClient) moveCreateRequest(ctx context.Context, billin // - parameters - Request parameters that are provided to the update billing subscription operation. // - options - SubscriptionsClientUpdateOptions contains the optional parameters for the SubscriptionsClient.Update method. func (client *SubscriptionsClient) Update(ctx context.Context, billingAccountName string, parameters Subscription, options *SubscriptionsClientUpdateOptions) (SubscriptionsClientUpdateResponse, error) { + var err error + const operationName = "SubscriptionsClient.Update" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, billingAccountName, parameters, options) if err != nil { return SubscriptionsClientUpdateResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return SubscriptionsClientUpdateResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return SubscriptionsClientUpdateResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return SubscriptionsClientUpdateResponse{}, err } - return client.updateHandleResponse(resp) + resp, err := client.updateHandleResponse(httpResp) + return resp, err } // updateCreateRequest creates the Update request. @@ -471,7 +478,10 @@ func (client *SubscriptionsClient) updateCreateRequest(ctx context.Context, bill reqQP.Set("api-version", "2020-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // updateHandleResponse handles the Update response. @@ -493,18 +503,25 @@ func (client *SubscriptionsClient) updateHandleResponse(resp *http.Response) (Su // - options - SubscriptionsClientValidateMoveOptions contains the optional parameters for the SubscriptionsClient.ValidateMove // method. func (client *SubscriptionsClient) ValidateMove(ctx context.Context, billingAccountName string, parameters TransferBillingSubscriptionRequestProperties, options *SubscriptionsClientValidateMoveOptions) (SubscriptionsClientValidateMoveResponse, error) { + var err error + const operationName = "SubscriptionsClient.ValidateMove" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.validateMoveCreateRequest(ctx, billingAccountName, parameters, options) if err != nil { return SubscriptionsClientValidateMoveResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return SubscriptionsClientValidateMoveResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return SubscriptionsClientValidateMoveResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return SubscriptionsClientValidateMoveResponse{}, err } - return client.validateMoveHandleResponse(resp) + resp, err := client.validateMoveHandleResponse(httpResp) + return resp, err } // validateMoveCreateRequest creates the ValidateMove request. @@ -526,7 +543,10 @@ func (client *SubscriptionsClient) validateMoveCreateRequest(ctx context.Context reqQP.Set("api-version", "2020-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // validateMoveHandleResponse handles the ValidateMove response. diff --git a/sdk/resourcemanager/billing/armbilling/time_rfc3339.go b/sdk/resourcemanager/billing/armbilling/time_rfc3339.go index 3ea40deea70e..4f295588f8c3 100644 --- a/sdk/resourcemanager/billing/armbilling/time_rfc3339.go +++ b/sdk/resourcemanager/billing/armbilling/time_rfc3339.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -19,50 +18,50 @@ import ( "time" ) -const ( - utcLayoutJSON = `"2006-01-02T15:04:05.999999999"` - utcLayout = "2006-01-02T15:04:05.999999999" - rfc3339JSON = `"` + time.RFC3339Nano + `"` -) - // Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases. var tzOffsetRegex = regexp.MustCompile(`(Z|z|\+|-)(\d+:\d+)*"*$`) -type timeRFC3339 time.Time +const ( + utcDateTimeJSON = `"2006-01-02T15:04:05.999999999"` + utcDateTime = "2006-01-02T15:04:05.999999999" + dateTimeJSON = `"` + time.RFC3339Nano + `"` +) + +type dateTimeRFC3339 time.Time -func (t timeRFC3339) MarshalJSON() (json []byte, err error) { +func (t dateTimeRFC3339) MarshalJSON() ([]byte, error) { tt := time.Time(t) return tt.MarshalJSON() } -func (t timeRFC3339) MarshalText() (text []byte, err error) { +func (t dateTimeRFC3339) MarshalText() ([]byte, error) { tt := time.Time(t) return tt.MarshalText() } -func (t *timeRFC3339) UnmarshalJSON(data []byte) error { - layout := utcLayoutJSON +func (t *dateTimeRFC3339) UnmarshalJSON(data []byte) error { + layout := utcDateTimeJSON if tzOffsetRegex.Match(data) { - layout = rfc3339JSON + layout = dateTimeJSON } return t.Parse(layout, string(data)) } -func (t *timeRFC3339) UnmarshalText(data []byte) (err error) { - layout := utcLayout +func (t *dateTimeRFC3339) UnmarshalText(data []byte) error { + layout := utcDateTime if tzOffsetRegex.Match(data) { layout = time.RFC3339Nano } return t.Parse(layout, string(data)) } -func (t *timeRFC3339) Parse(layout, value string) error { +func (t *dateTimeRFC3339) Parse(layout, value string) error { p, err := time.Parse(layout, strings.ToUpper(value)) - *t = timeRFC3339(p) + *t = dateTimeRFC3339(p) return err } -func populateTimeRFC3339(m map[string]any, k string, t *time.Time) { +func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) { if t == nil { return } else if azcore.IsNullValue(t) { @@ -71,14 +70,14 @@ func populateTimeRFC3339(m map[string]any, k string, t *time.Time) { } else if reflect.ValueOf(t).IsNil() { return } - m[k] = (*timeRFC3339)(t) + m[k] = (*dateTimeRFC3339)(t) } -func unpopulateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { +func unpopulateDateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { if data == nil || strings.EqualFold(string(data), "null") { return nil } - var aux timeRFC3339 + var aux dateTimeRFC3339 if err := json.Unmarshal(data, &aux); err != nil { return fmt.Errorf("struct field %s: %v", fn, err) } diff --git a/sdk/resourcemanager/billing/armbilling/transactions_client.go b/sdk/resourcemanager/billing/armbilling/transactions_client.go index 95ecadb94008..8288f20992cd 100644 --- a/sdk/resourcemanager/billing/armbilling/transactions_client.go +++ b/sdk/resourcemanager/billing/armbilling/transactions_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbilling @@ -31,7 +30,7 @@ type TransactionsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewTransactionsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*TransactionsClient, error) { - cl, err := arm.NewClient(moduleName+".TransactionsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -55,25 +54,20 @@ func (client *TransactionsClient) NewListByInvoicePager(billingAccountName strin return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *TransactionsClientListByInvoiceResponse) (TransactionsClientListByInvoiceResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByInvoiceCreateRequest(ctx, billingAccountName, invoiceName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "TransactionsClient.NewListByInvoicePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByInvoiceCreateRequest(ctx, billingAccountName, invoiceName, options) + }, nil) if err != nil { return TransactionsClientListByInvoiceResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return TransactionsClientListByInvoiceResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return TransactionsClientListByInvoiceResponse{}, runtime.NewResponseError(resp) - } return client.listByInvoiceHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/billing/armbilling/transactions_client_example_test.go b/sdk/resourcemanager/billing/armbilling/transactions_client_example_test.go index e4b524ce25b0..4cab4cef2c9c 100644 --- a/sdk/resourcemanager/billing/armbilling/transactions_client_example_test.go +++ b/sdk/resourcemanager/billing/armbilling/transactions_client_example_test.go @@ -54,7 +54,7 @@ func ExampleTransactionsClient_NewListByInvoicePager() { // BillingCurrency: to.Ptr("USD"), // BillingProfileDisplayName: to.Ptr("Contoso operations billing"), // BillingProfileID: to.Ptr("/providers/Microsoft.Billing/billingAccounts/{billingAccountName}/billingProfiles/{billingProfileName}"), - // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T00:00:00Z"); return t}()), + // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T00:00:00.000Z"); return t}()), // Discount: to.Ptr[float32](0.1), // EffectivePrice: &armbilling.Amount{ // Currency: to.Ptr("USD"), @@ -76,8 +76,8 @@ func ExampleTransactionsClient_NewListByInvoicePager() { // ProductType: to.Ptr("VM Instance"), // ProductTypeID: to.Ptr("A12345"), // Quantity: to.Ptr[int32](1), - // ServicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-09-30T00:00:00Z"); return t}()), - // ServicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T00:00:00Z"); return t}()), + // ServicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-09-30T00:00:00.000Z"); return t}()), + // ServicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T00:00:00.000Z"); return t}()), // SubTotal: &armbilling.Amount{ // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](4500), @@ -109,7 +109,7 @@ func ExampleTransactionsClient_NewListByInvoicePager() { // BillingCurrency: to.Ptr("USD"), // BillingProfileDisplayName: to.Ptr("Contoso operations billing"), // BillingProfileID: to.Ptr("/providers/Microsoft.Billing/billingAccounts/{billingAccountName}/billingProfiles/{billingProfileName}"), - // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-04-01T00:00:00Z"); return t}()), + // Date: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-04-01T00:00:00.000Z"); return t}()), // Discount: to.Ptr[float32](0.1), // EffectivePrice: &armbilling.Amount{ // Currency: to.Ptr("USD"), @@ -130,8 +130,8 @@ func ExampleTransactionsClient_NewListByInvoicePager() { // ProductType: to.Ptr("VM Instance"), // ProductTypeID: to.Ptr("A12345"), // Quantity: to.Ptr[int32](1), - // ServicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-09-30T00:00:00Z"); return t}()), - // ServicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T00:00:00Z"); return t}()), + // ServicePeriodEndDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-09-30T00:00:00.000Z"); return t}()), + // ServicePeriodStartDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2018-05-01T00:00:00.000Z"); return t}()), // SubTotal: &armbilling.Amount{ // Currency: to.Ptr("USD"), // Value: to.Ptr[float32](45), From 8efc7177c91e1b1da64dcf2542cf8544fe69102e Mon Sep 17 00:00:00 2001 From: Alancere <804873052@qq.com> Date: Tue, 21 Nov 2023 16:05:19 +0800 Subject: [PATCH 02/10] [Release] sdk/resourcemanager/billingbenefits/armbillingbenefits/2.1.0 generation from spec commit: 164375e67a1bffb207bcf603772c289dbe42d7b5 --- .../armbillingbenefits/CHANGELOG.md | 6 + .../armbillingbenefits/README.md | 7 + .../armbillingbenefits/autorest.md | 2 +- .../armbillingbenefits/client_factory.go | 27 +- .../armbillingbenefits/constants.go | 7 +- .../armbillingbenefits/date_type.go | 3 +- .../armbillingbenefits/fake/date_type.go | 59 +++ .../armbillingbenefits/fake/internal.go | 83 +++ .../fake/operations_server.go | 96 ++++ .../fake/reservationorderalias_server.go | 150 ++++++ .../armbillingbenefits/fake/rp_server.go | 88 ++++ .../fake/savingsplan_server.go | 345 ++++++++++++ .../fake/savingsplanorder_server.go | 181 +++++++ .../fake/savingsplanorderalias_server.go | 150 ++++++ .../armbillingbenefits/fake/server_factory.go | 106 ++++ .../armbillingbenefits/fake/time_rfc3339.go | 86 +++ .../billingbenefits/armbillingbenefits/go.mod | 20 +- .../billingbenefits/armbillingbenefits/go.sum | 46 +- .../armbillingbenefits/models.go | 494 +++++++----------- .../armbillingbenefits/models_serde.go | 47 +- .../armbillingbenefits/operations_client.go | 26 +- .../armbillingbenefits/options.go | 105 ++++ .../reservationorderalias_client.go | 47 +- .../armbillingbenefits/response_types.go | 13 +- .../armbillingbenefits/rp_client.go | 25 +- .../armbillingbenefits/savingsplan_client.go | 102 ++-- .../savingsplan_client_example_test.go | 32 +- .../savingsplanorder_client.go | 56 +- .../savingsplanorder_client_example_test.go | 6 +- .../savingsplanorderalias_client.go | 47 +- .../armbillingbenefits/time_rfc3339.go | 43 +- 31 files changed, 1975 insertions(+), 530 deletions(-) create mode 100644 sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/date_type.go create mode 100644 sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/internal.go create mode 100644 sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/operations_server.go create mode 100644 sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/reservationorderalias_server.go create mode 100644 sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/rp_server.go create mode 100644 sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/savingsplan_server.go create mode 100644 sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/savingsplanorder_server.go create mode 100644 sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/savingsplanorderalias_server.go create mode 100644 sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/server_factory.go create mode 100644 sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/time_rfc3339.go create mode 100644 sdk/resourcemanager/billingbenefits/armbillingbenefits/options.go diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/CHANGELOG.md b/sdk/resourcemanager/billingbenefits/armbillingbenefits/CHANGELOG.md index 189ef2c8a71e..9c09c44ba906 100644 --- a/sdk/resourcemanager/billingbenefits/armbillingbenefits/CHANGELOG.md +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/CHANGELOG.md @@ -1,5 +1,11 @@ # Release History +## 2.1.0 (2023-11-24) +### Features Added + +- Support for test fakes and OpenTelemetry trace spans. + + ## 2.0.0 (2023-04-03) ### Breaking Changes diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/README.md b/sdk/resourcemanager/billingbenefits/armbillingbenefits/README.md index 07a0d32e2e4a..7db21e94bc8c 100644 --- a/sdk/resourcemanager/billingbenefits/armbillingbenefits/README.md +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/README.md @@ -60,6 +60,13 @@ A client groups a set of related APIs, providing access to its functionality. C client := clientFactory.NewRPClient() ``` +## Fakes + +The fake package contains types used for constructing in-memory fake servers used in unit tests. +This allows writing tests to cover various success/error conditions without the need for connecting to a live service. + +Please see https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/samples/fakes for details and examples on how to use fakes. + ## Provide Feedback If you encounter bugs or have suggestions, please diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/autorest.md b/sdk/resourcemanager/billingbenefits/armbillingbenefits/autorest.md index d3902fa966aa..61d3836fccb3 100644 --- a/sdk/resourcemanager/billingbenefits/armbillingbenefits/autorest.md +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/autorest.md @@ -8,6 +8,6 @@ require: - https://github.com/Azure/azure-rest-api-specs/blob/f790e624d0d080b89d962a3bd19c65bc6a6b2f5e/specification/billingbenefits/resource-manager/readme.md - https://github.com/Azure/azure-rest-api-specs/blob/f790e624d0d080b89d962a3bd19c65bc6a6b2f5e/specification/billingbenefits/resource-manager/readme.go.md license-header: MICROSOFT_MIT_NO_VERSION -module-version: 2.0.0 +module-version: 2.1.0 ``` \ No newline at end of file diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/client_factory.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/client_factory.go index 074fc6fe7838..d19f40addd82 100644 --- a/sdk/resourcemanager/billingbenefits/armbillingbenefits/client_factory.go +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/client_factory.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbillingbenefits @@ -26,7 +25,7 @@ type ClientFactory struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewClientFactory(credential azcore.TokenCredential, options *arm.ClientOptions) (*ClientFactory, error) { - _, err := arm.NewClient(moduleName+".ClientFactory", moduleVersion, credential, options) + _, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -36,32 +35,38 @@ func NewClientFactory(credential azcore.TokenCredential, options *arm.ClientOpti }, nil } +// NewOperationsClient creates a new instance of OperationsClient. func (c *ClientFactory) NewOperationsClient() *OperationsClient { subClient, _ := NewOperationsClient(c.credential, c.options) return subClient } -func (c *ClientFactory) NewSavingsPlanOrderAliasClient() *SavingsPlanOrderAliasClient { - subClient, _ := NewSavingsPlanOrderAliasClient(c.credential, c.options) +// NewRPClient creates a new instance of RPClient. +func (c *ClientFactory) NewRPClient() *RPClient { + subClient, _ := NewRPClient(c.credential, c.options) return subClient } -func (c *ClientFactory) NewSavingsPlanOrderClient() *SavingsPlanOrderClient { - subClient, _ := NewSavingsPlanOrderClient(c.credential, c.options) +// NewReservationOrderAliasClient creates a new instance of ReservationOrderAliasClient. +func (c *ClientFactory) NewReservationOrderAliasClient() *ReservationOrderAliasClient { + subClient, _ := NewReservationOrderAliasClient(c.credential, c.options) return subClient } +// NewSavingsPlanClient creates a new instance of SavingsPlanClient. func (c *ClientFactory) NewSavingsPlanClient() *SavingsPlanClient { subClient, _ := NewSavingsPlanClient(c.credential, c.options) return subClient } -func (c *ClientFactory) NewRPClient() *RPClient { - subClient, _ := NewRPClient(c.credential, c.options) +// NewSavingsPlanOrderAliasClient creates a new instance of SavingsPlanOrderAliasClient. +func (c *ClientFactory) NewSavingsPlanOrderAliasClient() *SavingsPlanOrderAliasClient { + subClient, _ := NewSavingsPlanOrderAliasClient(c.credential, c.options) return subClient } -func (c *ClientFactory) NewReservationOrderAliasClient() *ReservationOrderAliasClient { - subClient, _ := NewReservationOrderAliasClient(c.credential, c.options) +// NewSavingsPlanOrderClient creates a new instance of SavingsPlanOrderClient. +func (c *ClientFactory) NewSavingsPlanOrderClient() *SavingsPlanOrderClient { + subClient, _ := NewSavingsPlanOrderClient(c.credential, c.options) return subClient } diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/constants.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/constants.go index e7d23ba6ad87..4148b8b6579d 100644 --- a/sdk/resourcemanager/billingbenefits/armbillingbenefits/constants.go +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/constants.go @@ -3,15 +3,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbillingbenefits const ( - moduleName = "armbillingbenefits" - moduleVersion = "v2.0.0" + moduleName = "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billingbenefits/armbillingbenefits" + moduleVersion = "v2.1.0" ) // ActionType - Enum. Indicates the action type. "Internal" refers to actions that are for internal only APIs. diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/date_type.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/date_type.go index d64d5c418f6d..d3689b9bd621 100644 --- a/sdk/resourcemanager/billingbenefits/armbillingbenefits/date_type.go +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/date_type.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbillingbenefits diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/date_type.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/date_type.go new file mode 100644 index 000000000000..efb0b705ae45 --- /dev/null +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/date_type.go @@ -0,0 +1,59 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "encoding/json" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "reflect" + "strings" + "time" +) + +const ( + fullDateJSON = `"2006-01-02"` + jsonFormat = `"%04d-%02d-%02d"` +) + +type dateType time.Time + +func (t dateType) MarshalJSON() ([]byte, error) { + return []byte(fmt.Sprintf(jsonFormat, time.Time(t).Year(), time.Time(t).Month(), time.Time(t).Day())), nil +} + +func (d *dateType) UnmarshalJSON(data []byte) (err error) { + t, err := time.Parse(fullDateJSON, string(data)) + *d = (dateType)(t) + return err +} + +func populateDateType(m map[string]any, k string, t *time.Time) { + if t == nil { + return + } else if azcore.IsNullValue(t) { + m[k] = nil + return + } else if reflect.ValueOf(t).IsNil() { + return + } + m[k] = (*dateType)(t) +} + +func unpopulateDateType(data json.RawMessage, fn string, t **time.Time) error { + if data == nil || strings.EqualFold(string(data), "null") { + return nil + } + var aux dateType + if err := json.Unmarshal(data, &aux); err != nil { + return fmt.Errorf("struct field %s: %v", fn, err) + } + *t = (*time.Time)(&aux) + return nil +} diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/internal.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/internal.go new file mode 100644 index 000000000000..7d2f89ba4bb2 --- /dev/null +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/internal.go @@ -0,0 +1,83 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "net/http" + "reflect" + "sync" +) + +type nonRetriableError struct { + error +} + +func (nonRetriableError) NonRetriable() { + // marker method +} + +func contains[T comparable](s []T, v T) bool { + for _, vv := range s { + if vv == v { + return true + } + } + return false +} + +func getOptional[T any](v T) *T { + if reflect.ValueOf(v).IsZero() { + return nil + } + return &v +} + +func parseOptional[T any](v string, parse func(v string) (T, error)) (*T, error) { + if v == "" { + return nil, nil + } + t, err := parse(v) + if err != nil { + return nil, err + } + return &t, err +} + +func newTracker[T any]() *tracker[T] { + return &tracker[T]{ + items: map[string]*T{}, + } +} + +type tracker[T any] struct { + items map[string]*T + mu sync.Mutex +} + +func (p *tracker[T]) get(req *http.Request) *T { + p.mu.Lock() + defer p.mu.Unlock() + if item, ok := p.items[server.SanitizePagerPollerPath(req.URL.Path)]; ok { + return item + } + return nil +} + +func (p *tracker[T]) add(req *http.Request, item *T) { + p.mu.Lock() + defer p.mu.Unlock() + p.items[server.SanitizePagerPollerPath(req.URL.Path)] = item +} + +func (p *tracker[T]) remove(req *http.Request) { + p.mu.Lock() + defer p.mu.Unlock() + delete(p.items, server.SanitizePagerPollerPath(req.URL.Path)) +} diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/operations_server.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/operations_server.go new file mode 100644 index 000000000000..8160f63a5bc4 --- /dev/null +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/operations_server.go @@ -0,0 +1,96 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billingbenefits/armbillingbenefits/v2" + "net/http" +) + +// OperationsServer is a fake server for instances of the armbillingbenefits.OperationsClient type. +type OperationsServer struct { + // NewListPager is the fake for method OperationsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armbillingbenefits.OperationsClientListOptions) (resp azfake.PagerResponder[armbillingbenefits.OperationsClientListResponse]) +} + +// NewOperationsServerTransport creates a new instance of OperationsServerTransport with the provided implementation. +// The returned OperationsServerTransport instance is connected to an instance of armbillingbenefits.OperationsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewOperationsServerTransport(srv *OperationsServer) *OperationsServerTransport { + return &OperationsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armbillingbenefits.OperationsClientListResponse]](), + } +} + +// OperationsServerTransport connects instances of armbillingbenefits.OperationsClient to instances of OperationsServer. +// Don't use this type directly, use NewOperationsServerTransport instead. +type OperationsServerTransport struct { + srv *OperationsServer + newListPager *tracker[azfake.PagerResponder[armbillingbenefits.OperationsClientListResponse]] +} + +// Do implements the policy.Transporter interface for OperationsServerTransport. +func (o *OperationsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "OperationsClient.NewListPager": + resp, err = o.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (o *OperationsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if o.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := o.newListPager.get(req) + if newListPager == nil { + resp := o.srv.NewListPager(nil) + newListPager = &resp + o.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armbillingbenefits.OperationsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + o.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + o.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/reservationorderalias_server.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/reservationorderalias_server.go new file mode 100644 index 000000000000..25ceb09c5d33 --- /dev/null +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/reservationorderalias_server.go @@ -0,0 +1,150 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billingbenefits/armbillingbenefits/v2" + "net/http" + "net/url" + "regexp" +) + +// ReservationOrderAliasServer is a fake server for instances of the armbillingbenefits.ReservationOrderAliasClient type. +type ReservationOrderAliasServer struct { + // BeginCreate is the fake for method ReservationOrderAliasClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + BeginCreate func(ctx context.Context, reservationOrderAliasName string, body armbillingbenefits.ReservationOrderAliasRequest, options *armbillingbenefits.ReservationOrderAliasClientBeginCreateOptions) (resp azfake.PollerResponder[armbillingbenefits.ReservationOrderAliasClientCreateResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method ReservationOrderAliasClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, reservationOrderAliasName string, options *armbillingbenefits.ReservationOrderAliasClientGetOptions) (resp azfake.Responder[armbillingbenefits.ReservationOrderAliasClientGetResponse], errResp azfake.ErrorResponder) +} + +// NewReservationOrderAliasServerTransport creates a new instance of ReservationOrderAliasServerTransport with the provided implementation. +// The returned ReservationOrderAliasServerTransport instance is connected to an instance of armbillingbenefits.ReservationOrderAliasClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewReservationOrderAliasServerTransport(srv *ReservationOrderAliasServer) *ReservationOrderAliasServerTransport { + return &ReservationOrderAliasServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armbillingbenefits.ReservationOrderAliasClientCreateResponse]](), + } +} + +// ReservationOrderAliasServerTransport connects instances of armbillingbenefits.ReservationOrderAliasClient to instances of ReservationOrderAliasServer. +// Don't use this type directly, use NewReservationOrderAliasServerTransport instead. +type ReservationOrderAliasServerTransport struct { + srv *ReservationOrderAliasServer + beginCreate *tracker[azfake.PollerResponder[armbillingbenefits.ReservationOrderAliasClientCreateResponse]] +} + +// Do implements the policy.Transporter interface for ReservationOrderAliasServerTransport. +func (r *ReservationOrderAliasServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "ReservationOrderAliasClient.BeginCreate": + resp, err = r.dispatchBeginCreate(req) + case "ReservationOrderAliasClient.Get": + resp, err = r.dispatchGet(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (r *ReservationOrderAliasServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if r.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := r.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/providers/Microsoft\.BillingBenefits/reservationOrderAliases/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbillingbenefits.ReservationOrderAliasRequest](req) + if err != nil { + return nil, err + } + reservationOrderAliasNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("reservationOrderAliasName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.BeginCreate(req.Context(), reservationOrderAliasNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + r.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated}, resp.StatusCode) { + r.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + r.beginCreate.remove(req) + } + + return resp, nil +} + +func (r *ReservationOrderAliasServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if r.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/providers/Microsoft\.BillingBenefits/reservationOrderAliases/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + reservationOrderAliasNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("reservationOrderAliasName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.Get(req.Context(), reservationOrderAliasNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ReservationOrderAliasResponse, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/rp_server.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/rp_server.go new file mode 100644 index 000000000000..e5cad4633aa6 --- /dev/null +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/rp_server.go @@ -0,0 +1,88 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billingbenefits/armbillingbenefits/v2" + "net/http" +) + +// RPServer is a fake server for instances of the armbillingbenefits.RPClient type. +type RPServer struct { + // ValidatePurchase is the fake for method RPClient.ValidatePurchase + // HTTP status codes to indicate success: http.StatusOK + ValidatePurchase func(ctx context.Context, body armbillingbenefits.SavingsPlanPurchaseValidateRequest, options *armbillingbenefits.RPClientValidatePurchaseOptions) (resp azfake.Responder[armbillingbenefits.RPClientValidatePurchaseResponse], errResp azfake.ErrorResponder) +} + +// NewRPServerTransport creates a new instance of RPServerTransport with the provided implementation. +// The returned RPServerTransport instance is connected to an instance of armbillingbenefits.RPClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewRPServerTransport(srv *RPServer) *RPServerTransport { + return &RPServerTransport{srv: srv} +} + +// RPServerTransport connects instances of armbillingbenefits.RPClient to instances of RPServer. +// Don't use this type directly, use NewRPServerTransport instead. +type RPServerTransport struct { + srv *RPServer +} + +// Do implements the policy.Transporter interface for RPServerTransport. +func (r *RPServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "RPClient.ValidatePurchase": + resp, err = r.dispatchValidatePurchase(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (r *RPServerTransport) dispatchValidatePurchase(req *http.Request) (*http.Response, error) { + if r.srv.ValidatePurchase == nil { + return nil, &nonRetriableError{errors.New("fake for method ValidatePurchase not implemented")} + } + body, err := server.UnmarshalRequestAsJSON[armbillingbenefits.SavingsPlanPurchaseValidateRequest](req) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.ValidatePurchase(req.Context(), body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).SavingsPlanValidateResponse, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/savingsplan_server.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/savingsplan_server.go new file mode 100644 index 000000000000..cc3054a919a3 --- /dev/null +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/savingsplan_server.go @@ -0,0 +1,345 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billingbenefits/armbillingbenefits/v2" + "net/http" + "net/url" + "regexp" + "strconv" +) + +// SavingsPlanServer is a fake server for instances of the armbillingbenefits.SavingsPlanClient type. +type SavingsPlanServer struct { + // Get is the fake for method SavingsPlanClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, savingsPlanOrderID string, savingsPlanID string, options *armbillingbenefits.SavingsPlanClientGetOptions) (resp azfake.Responder[armbillingbenefits.SavingsPlanClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method SavingsPlanClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(savingsPlanOrderID string, options *armbillingbenefits.SavingsPlanClientListOptions) (resp azfake.PagerResponder[armbillingbenefits.SavingsPlanClientListResponse]) + + // NewListAllPager is the fake for method SavingsPlanClient.NewListAllPager + // HTTP status codes to indicate success: http.StatusOK + NewListAllPager func(options *armbillingbenefits.SavingsPlanClientListAllOptions) (resp azfake.PagerResponder[armbillingbenefits.SavingsPlanClientListAllResponse]) + + // Update is the fake for method SavingsPlanClient.Update + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + Update func(ctx context.Context, savingsPlanOrderID string, savingsPlanID string, body armbillingbenefits.SavingsPlanUpdateRequest, options *armbillingbenefits.SavingsPlanClientUpdateOptions) (resp azfake.Responder[armbillingbenefits.SavingsPlanClientUpdateResponse], errResp azfake.ErrorResponder) + + // ValidateUpdate is the fake for method SavingsPlanClient.ValidateUpdate + // HTTP status codes to indicate success: http.StatusOK + ValidateUpdate func(ctx context.Context, savingsPlanOrderID string, savingsPlanID string, body armbillingbenefits.SavingsPlanUpdateValidateRequest, options *armbillingbenefits.SavingsPlanClientValidateUpdateOptions) (resp azfake.Responder[armbillingbenefits.SavingsPlanClientValidateUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewSavingsPlanServerTransport creates a new instance of SavingsPlanServerTransport with the provided implementation. +// The returned SavingsPlanServerTransport instance is connected to an instance of armbillingbenefits.SavingsPlanClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewSavingsPlanServerTransport(srv *SavingsPlanServer) *SavingsPlanServerTransport { + return &SavingsPlanServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armbillingbenefits.SavingsPlanClientListResponse]](), + newListAllPager: newTracker[azfake.PagerResponder[armbillingbenefits.SavingsPlanClientListAllResponse]](), + } +} + +// SavingsPlanServerTransport connects instances of armbillingbenefits.SavingsPlanClient to instances of SavingsPlanServer. +// Don't use this type directly, use NewSavingsPlanServerTransport instead. +type SavingsPlanServerTransport struct { + srv *SavingsPlanServer + newListPager *tracker[azfake.PagerResponder[armbillingbenefits.SavingsPlanClientListResponse]] + newListAllPager *tracker[azfake.PagerResponder[armbillingbenefits.SavingsPlanClientListAllResponse]] +} + +// Do implements the policy.Transporter interface for SavingsPlanServerTransport. +func (s *SavingsPlanServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "SavingsPlanClient.Get": + resp, err = s.dispatchGet(req) + case "SavingsPlanClient.NewListPager": + resp, err = s.dispatchNewListPager(req) + case "SavingsPlanClient.NewListAllPager": + resp, err = s.dispatchNewListAllPager(req) + case "SavingsPlanClient.Update": + resp, err = s.dispatchUpdate(req) + case "SavingsPlanClient.ValidateUpdate": + resp, err = s.dispatchValidateUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (s *SavingsPlanServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if s.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/providers/Microsoft\.BillingBenefits/savingsPlanOrders/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/savingsPlans/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + savingsPlanOrderIDParam, err := url.PathUnescape(matches[regex.SubexpIndex("savingsPlanOrderId")]) + if err != nil { + return nil, err + } + savingsPlanIDParam, err := url.PathUnescape(matches[regex.SubexpIndex("savingsPlanId")]) + if err != nil { + return nil, err + } + expandUnescaped, err := url.QueryUnescape(qp.Get("$expand")) + if err != nil { + return nil, err + } + expandParam := getOptional(expandUnescaped) + var options *armbillingbenefits.SavingsPlanClientGetOptions + if expandParam != nil { + options = &armbillingbenefits.SavingsPlanClientGetOptions{ + Expand: expandParam, + } + } + respr, errRespr := s.srv.Get(req.Context(), savingsPlanOrderIDParam, savingsPlanIDParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).SavingsPlanModel, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (s *SavingsPlanServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if s.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := s.newListPager.get(req) + if newListPager == nil { + const regexStr = `/providers/Microsoft\.BillingBenefits/savingsPlanOrders/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/savingsPlans` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + savingsPlanOrderIDParam, err := url.PathUnescape(matches[regex.SubexpIndex("savingsPlanOrderId")]) + if err != nil { + return nil, err + } + resp := s.srv.NewListPager(savingsPlanOrderIDParam, nil) + newListPager = &resp + s.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armbillingbenefits.SavingsPlanClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + s.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + s.newListPager.remove(req) + } + return resp, nil +} + +func (s *SavingsPlanServerTransport) dispatchNewListAllPager(req *http.Request) (*http.Response, error) { + if s.srv.NewListAllPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListAllPager not implemented")} + } + newListAllPager := s.newListAllPager.get(req) + if newListAllPager == nil { + qp := req.URL.Query() + filterUnescaped, err := url.QueryUnescape(qp.Get("$filter")) + if err != nil { + return nil, err + } + filterParam := getOptional(filterUnescaped) + orderbyUnescaped, err := url.QueryUnescape(qp.Get("$orderby")) + if err != nil { + return nil, err + } + orderbyParam := getOptional(orderbyUnescaped) + refreshSummaryUnescaped, err := url.QueryUnescape(qp.Get("refreshSummary")) + if err != nil { + return nil, err + } + refreshSummaryParam := getOptional(refreshSummaryUnescaped) + skiptokenUnescaped, err := url.QueryUnescape(qp.Get("$skiptoken")) + if err != nil { + return nil, err + } + skiptokenParam, err := parseOptional(skiptokenUnescaped, func(v string) (float32, error) { + p, parseErr := strconv.ParseFloat(v, 32) + if parseErr != nil { + return 0, parseErr + } + return float32(p), nil + }) + if err != nil { + return nil, err + } + selectedStateUnescaped, err := url.QueryUnescape(qp.Get("selectedState")) + if err != nil { + return nil, err + } + selectedStateParam := getOptional(selectedStateUnescaped) + takeUnescaped, err := url.QueryUnescape(qp.Get("take")) + if err != nil { + return nil, err + } + takeParam, err := parseOptional(takeUnescaped, func(v string) (float32, error) { + p, parseErr := strconv.ParseFloat(v, 32) + if parseErr != nil { + return 0, parseErr + } + return float32(p), nil + }) + if err != nil { + return nil, err + } + var options *armbillingbenefits.SavingsPlanClientListAllOptions + if filterParam != nil || orderbyParam != nil || refreshSummaryParam != nil || skiptokenParam != nil || selectedStateParam != nil || takeParam != nil { + options = &armbillingbenefits.SavingsPlanClientListAllOptions{ + Filter: filterParam, + Orderby: orderbyParam, + RefreshSummary: refreshSummaryParam, + Skiptoken: skiptokenParam, + SelectedState: selectedStateParam, + Take: takeParam, + } + } + resp := s.srv.NewListAllPager(options) + newListAllPager = &resp + s.newListAllPager.add(req, newListAllPager) + server.PagerResponderInjectNextLinks(newListAllPager, req, func(page *armbillingbenefits.SavingsPlanClientListAllResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListAllPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + s.newListAllPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListAllPager) { + s.newListAllPager.remove(req) + } + return resp, nil +} + +func (s *SavingsPlanServerTransport) dispatchUpdate(req *http.Request) (*http.Response, error) { + if s.srv.Update == nil { + return nil, &nonRetriableError{errors.New("fake for method Update not implemented")} + } + const regexStr = `/providers/Microsoft\.BillingBenefits/savingsPlanOrders/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/savingsPlans/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbillingbenefits.SavingsPlanUpdateRequest](req) + if err != nil { + return nil, err + } + savingsPlanOrderIDParam, err := url.PathUnescape(matches[regex.SubexpIndex("savingsPlanOrderId")]) + if err != nil { + return nil, err + } + savingsPlanIDParam, err := url.PathUnescape(matches[regex.SubexpIndex("savingsPlanId")]) + if err != nil { + return nil, err + } + respr, errRespr := s.srv.Update(req.Context(), savingsPlanOrderIDParam, savingsPlanIDParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK, http.StatusAccepted}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).SavingsPlanModel, req) + if err != nil { + return nil, err + } + if val := server.GetResponse(respr).Location; val != nil { + resp.Header.Set("Location", *val) + } + return resp, nil +} + +func (s *SavingsPlanServerTransport) dispatchValidateUpdate(req *http.Request) (*http.Response, error) { + if s.srv.ValidateUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method ValidateUpdate not implemented")} + } + const regexStr = `/providers/Microsoft\.BillingBenefits/savingsPlanOrders/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/savingsPlans/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/validate` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbillingbenefits.SavingsPlanUpdateValidateRequest](req) + if err != nil { + return nil, err + } + savingsPlanOrderIDParam, err := url.PathUnescape(matches[regex.SubexpIndex("savingsPlanOrderId")]) + if err != nil { + return nil, err + } + savingsPlanIDParam, err := url.PathUnescape(matches[regex.SubexpIndex("savingsPlanId")]) + if err != nil { + return nil, err + } + respr, errRespr := s.srv.ValidateUpdate(req.Context(), savingsPlanOrderIDParam, savingsPlanIDParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).SavingsPlanValidateResponse, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/savingsplanorder_server.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/savingsplanorder_server.go new file mode 100644 index 000000000000..2498a1038021 --- /dev/null +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/savingsplanorder_server.go @@ -0,0 +1,181 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billingbenefits/armbillingbenefits/v2" + "net/http" + "net/url" + "regexp" +) + +// SavingsPlanOrderServer is a fake server for instances of the armbillingbenefits.SavingsPlanOrderClient type. +type SavingsPlanOrderServer struct { + // Elevate is the fake for method SavingsPlanOrderClient.Elevate + // HTTP status codes to indicate success: http.StatusOK + Elevate func(ctx context.Context, savingsPlanOrderID string, options *armbillingbenefits.SavingsPlanOrderClientElevateOptions) (resp azfake.Responder[armbillingbenefits.SavingsPlanOrderClientElevateResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method SavingsPlanOrderClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, savingsPlanOrderID string, options *armbillingbenefits.SavingsPlanOrderClientGetOptions) (resp azfake.Responder[armbillingbenefits.SavingsPlanOrderClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method SavingsPlanOrderClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armbillingbenefits.SavingsPlanOrderClientListOptions) (resp azfake.PagerResponder[armbillingbenefits.SavingsPlanOrderClientListResponse]) +} + +// NewSavingsPlanOrderServerTransport creates a new instance of SavingsPlanOrderServerTransport with the provided implementation. +// The returned SavingsPlanOrderServerTransport instance is connected to an instance of armbillingbenefits.SavingsPlanOrderClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewSavingsPlanOrderServerTransport(srv *SavingsPlanOrderServer) *SavingsPlanOrderServerTransport { + return &SavingsPlanOrderServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armbillingbenefits.SavingsPlanOrderClientListResponse]](), + } +} + +// SavingsPlanOrderServerTransport connects instances of armbillingbenefits.SavingsPlanOrderClient to instances of SavingsPlanOrderServer. +// Don't use this type directly, use NewSavingsPlanOrderServerTransport instead. +type SavingsPlanOrderServerTransport struct { + srv *SavingsPlanOrderServer + newListPager *tracker[azfake.PagerResponder[armbillingbenefits.SavingsPlanOrderClientListResponse]] +} + +// Do implements the policy.Transporter interface for SavingsPlanOrderServerTransport. +func (s *SavingsPlanOrderServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "SavingsPlanOrderClient.Elevate": + resp, err = s.dispatchElevate(req) + case "SavingsPlanOrderClient.Get": + resp, err = s.dispatchGet(req) + case "SavingsPlanOrderClient.NewListPager": + resp, err = s.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (s *SavingsPlanOrderServerTransport) dispatchElevate(req *http.Request) (*http.Response, error) { + if s.srv.Elevate == nil { + return nil, &nonRetriableError{errors.New("fake for method Elevate not implemented")} + } + const regexStr = `/providers/Microsoft\.BillingBenefits/savingsPlanOrders/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/elevate` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + savingsPlanOrderIDParam, err := url.PathUnescape(matches[regex.SubexpIndex("savingsPlanOrderId")]) + if err != nil { + return nil, err + } + respr, errRespr := s.srv.Elevate(req.Context(), savingsPlanOrderIDParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).RoleAssignmentEntity, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (s *SavingsPlanOrderServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if s.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/providers/Microsoft\.BillingBenefits/savingsPlanOrders/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + savingsPlanOrderIDParam, err := url.PathUnescape(matches[regex.SubexpIndex("savingsPlanOrderId")]) + if err != nil { + return nil, err + } + expandUnescaped, err := url.QueryUnescape(qp.Get("$expand")) + if err != nil { + return nil, err + } + expandParam := getOptional(expandUnescaped) + var options *armbillingbenefits.SavingsPlanOrderClientGetOptions + if expandParam != nil { + options = &armbillingbenefits.SavingsPlanOrderClientGetOptions{ + Expand: expandParam, + } + } + respr, errRespr := s.srv.Get(req.Context(), savingsPlanOrderIDParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).SavingsPlanOrderModel, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (s *SavingsPlanOrderServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if s.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := s.newListPager.get(req) + if newListPager == nil { + resp := s.srv.NewListPager(nil) + newListPager = &resp + s.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armbillingbenefits.SavingsPlanOrderClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + s.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + s.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/savingsplanorderalias_server.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/savingsplanorderalias_server.go new file mode 100644 index 000000000000..cb2fb24822b7 --- /dev/null +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/savingsplanorderalias_server.go @@ -0,0 +1,150 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billingbenefits/armbillingbenefits/v2" + "net/http" + "net/url" + "regexp" +) + +// SavingsPlanOrderAliasServer is a fake server for instances of the armbillingbenefits.SavingsPlanOrderAliasClient type. +type SavingsPlanOrderAliasServer struct { + // BeginCreate is the fake for method SavingsPlanOrderAliasClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + BeginCreate func(ctx context.Context, savingsPlanOrderAliasName string, body armbillingbenefits.SavingsPlanOrderAliasModel, options *armbillingbenefits.SavingsPlanOrderAliasClientBeginCreateOptions) (resp azfake.PollerResponder[armbillingbenefits.SavingsPlanOrderAliasClientCreateResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method SavingsPlanOrderAliasClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, savingsPlanOrderAliasName string, options *armbillingbenefits.SavingsPlanOrderAliasClientGetOptions) (resp azfake.Responder[armbillingbenefits.SavingsPlanOrderAliasClientGetResponse], errResp azfake.ErrorResponder) +} + +// NewSavingsPlanOrderAliasServerTransport creates a new instance of SavingsPlanOrderAliasServerTransport with the provided implementation. +// The returned SavingsPlanOrderAliasServerTransport instance is connected to an instance of armbillingbenefits.SavingsPlanOrderAliasClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewSavingsPlanOrderAliasServerTransport(srv *SavingsPlanOrderAliasServer) *SavingsPlanOrderAliasServerTransport { + return &SavingsPlanOrderAliasServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armbillingbenefits.SavingsPlanOrderAliasClientCreateResponse]](), + } +} + +// SavingsPlanOrderAliasServerTransport connects instances of armbillingbenefits.SavingsPlanOrderAliasClient to instances of SavingsPlanOrderAliasServer. +// Don't use this type directly, use NewSavingsPlanOrderAliasServerTransport instead. +type SavingsPlanOrderAliasServerTransport struct { + srv *SavingsPlanOrderAliasServer + beginCreate *tracker[azfake.PollerResponder[armbillingbenefits.SavingsPlanOrderAliasClientCreateResponse]] +} + +// Do implements the policy.Transporter interface for SavingsPlanOrderAliasServerTransport. +func (s *SavingsPlanOrderAliasServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "SavingsPlanOrderAliasClient.BeginCreate": + resp, err = s.dispatchBeginCreate(req) + case "SavingsPlanOrderAliasClient.Get": + resp, err = s.dispatchGet(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (s *SavingsPlanOrderAliasServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if s.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := s.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/providers/Microsoft\.BillingBenefits/savingsPlanOrderAliases/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbillingbenefits.SavingsPlanOrderAliasModel](req) + if err != nil { + return nil, err + } + savingsPlanOrderAliasNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("savingsPlanOrderAliasName")]) + if err != nil { + return nil, err + } + respr, errRespr := s.srv.BeginCreate(req.Context(), savingsPlanOrderAliasNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + s.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated}, resp.StatusCode) { + s.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + s.beginCreate.remove(req) + } + + return resp, nil +} + +func (s *SavingsPlanOrderAliasServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if s.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/providers/Microsoft\.BillingBenefits/savingsPlanOrderAliases/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + savingsPlanOrderAliasNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("savingsPlanOrderAliasName")]) + if err != nil { + return nil, err + } + respr, errRespr := s.srv.Get(req.Context(), savingsPlanOrderAliasNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).SavingsPlanOrderAliasModel, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/server_factory.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/server_factory.go new file mode 100644 index 000000000000..99915d6d87ea --- /dev/null +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/server_factory.go @@ -0,0 +1,106 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "net/http" + "strings" + "sync" +) + +// ServerFactory is a fake server for instances of the armbillingbenefits.ClientFactory type. +type ServerFactory struct { + OperationsServer OperationsServer + RPServer RPServer + ReservationOrderAliasServer ReservationOrderAliasServer + SavingsPlanServer SavingsPlanServer + SavingsPlanOrderAliasServer SavingsPlanOrderAliasServer + SavingsPlanOrderServer SavingsPlanOrderServer +} + +// NewServerFactoryTransport creates a new instance of ServerFactoryTransport with the provided implementation. +// The returned ServerFactoryTransport instance is connected to an instance of armbillingbenefits.ClientFactory via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewServerFactoryTransport(srv *ServerFactory) *ServerFactoryTransport { + return &ServerFactoryTransport{ + srv: srv, + } +} + +// ServerFactoryTransport connects instances of armbillingbenefits.ClientFactory to instances of ServerFactory. +// Don't use this type directly, use NewServerFactoryTransport instead. +type ServerFactoryTransport struct { + srv *ServerFactory + trMu sync.Mutex + trOperationsServer *OperationsServerTransport + trRPServer *RPServerTransport + trReservationOrderAliasServer *ReservationOrderAliasServerTransport + trSavingsPlanServer *SavingsPlanServerTransport + trSavingsPlanOrderAliasServer *SavingsPlanOrderAliasServerTransport + trSavingsPlanOrderServer *SavingsPlanOrderServerTransport +} + +// Do implements the policy.Transporter interface for ServerFactoryTransport. +func (s *ServerFactoryTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + client := method[:strings.Index(method, ".")] + var resp *http.Response + var err error + + switch client { + case "OperationsClient": + initServer(s, &s.trOperationsServer, func() *OperationsServerTransport { return NewOperationsServerTransport(&s.srv.OperationsServer) }) + resp, err = s.trOperationsServer.Do(req) + case "RPClient": + initServer(s, &s.trRPServer, func() *RPServerTransport { return NewRPServerTransport(&s.srv.RPServer) }) + resp, err = s.trRPServer.Do(req) + case "ReservationOrderAliasClient": + initServer(s, &s.trReservationOrderAliasServer, func() *ReservationOrderAliasServerTransport { + return NewReservationOrderAliasServerTransport(&s.srv.ReservationOrderAliasServer) + }) + resp, err = s.trReservationOrderAliasServer.Do(req) + case "SavingsPlanClient": + initServer(s, &s.trSavingsPlanServer, func() *SavingsPlanServerTransport { return NewSavingsPlanServerTransport(&s.srv.SavingsPlanServer) }) + resp, err = s.trSavingsPlanServer.Do(req) + case "SavingsPlanOrderAliasClient": + initServer(s, &s.trSavingsPlanOrderAliasServer, func() *SavingsPlanOrderAliasServerTransport { + return NewSavingsPlanOrderAliasServerTransport(&s.srv.SavingsPlanOrderAliasServer) + }) + resp, err = s.trSavingsPlanOrderAliasServer.Do(req) + case "SavingsPlanOrderClient": + initServer(s, &s.trSavingsPlanOrderServer, func() *SavingsPlanOrderServerTransport { + return NewSavingsPlanOrderServerTransport(&s.srv.SavingsPlanOrderServer) + }) + resp, err = s.trSavingsPlanOrderServer.Do(req) + default: + err = fmt.Errorf("unhandled client %s", client) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func initServer[T any](s *ServerFactoryTransport, dst **T, src func() *T) { + s.trMu.Lock() + if *dst == nil { + *dst = src() + } + s.trMu.Unlock() +} diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/time_rfc3339.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/time_rfc3339.go new file mode 100644 index 000000000000..b0535a7b63e6 --- /dev/null +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/fake/time_rfc3339.go @@ -0,0 +1,86 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "encoding/json" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "reflect" + "regexp" + "strings" + "time" +) + +// Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases. +var tzOffsetRegex = regexp.MustCompile(`(Z|z|\+|-)(\d+:\d+)*"*$`) + +const ( + utcDateTimeJSON = `"2006-01-02T15:04:05.999999999"` + utcDateTime = "2006-01-02T15:04:05.999999999" + dateTimeJSON = `"` + time.RFC3339Nano + `"` +) + +type dateTimeRFC3339 time.Time + +func (t dateTimeRFC3339) MarshalJSON() ([]byte, error) { + tt := time.Time(t) + return tt.MarshalJSON() +} + +func (t dateTimeRFC3339) MarshalText() ([]byte, error) { + tt := time.Time(t) + return tt.MarshalText() +} + +func (t *dateTimeRFC3339) UnmarshalJSON(data []byte) error { + layout := utcDateTimeJSON + if tzOffsetRegex.Match(data) { + layout = dateTimeJSON + } + return t.Parse(layout, string(data)) +} + +func (t *dateTimeRFC3339) UnmarshalText(data []byte) error { + layout := utcDateTime + if tzOffsetRegex.Match(data) { + layout = time.RFC3339Nano + } + return t.Parse(layout, string(data)) +} + +func (t *dateTimeRFC3339) Parse(layout, value string) error { + p, err := time.Parse(layout, strings.ToUpper(value)) + *t = dateTimeRFC3339(p) + return err +} + +func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) { + if t == nil { + return + } else if azcore.IsNullValue(t) { + m[k] = nil + return + } else if reflect.ValueOf(t).IsNil() { + return + } + m[k] = (*dateTimeRFC3339)(t) +} + +func unpopulateDateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { + if data == nil || strings.EqualFold(string(data), "null") { + return nil + } + var aux dateTimeRFC3339 + if err := json.Unmarshal(data, &aux); err != nil { + return fmt.Errorf("struct field %s: %v", fn, err) + } + *t = (*time.Time)(&aux) + return nil +} diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/go.mod b/sdk/resourcemanager/billingbenefits/armbillingbenefits/go.mod index 0695e7657921..8b923d074deb 100644 --- a/sdk/resourcemanager/billingbenefits/armbillingbenefits/go.mod +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/go.mod @@ -3,19 +3,19 @@ module github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/billingbenefits/arm go 1.18 require ( - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0 - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2 + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 ) require ( - github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0 // indirect - github.com/golang-jwt/jwt/v4 v4.5.0 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect + github.com/golang-jwt/jwt/v5 v5.0.0 // indirect + github.com/google/uuid v1.3.1 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect - golang.org/x/crypto v0.6.0 // indirect - golang.org/x/net v0.7.0 // indirect - golang.org/x/sys v0.5.0 // indirect - golang.org/x/text v0.7.0 // indirect + golang.org/x/crypto v0.14.0 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect ) diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/go.sum b/sdk/resourcemanager/billingbenefits/armbillingbenefits/go.sum index 8ba445a8c4da..7985f1da436f 100644 --- a/sdk/resourcemanager/billingbenefits/armbillingbenefits/go.sum +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/go.sum @@ -1,31 +1,31 @@ -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0 h1:rTnT/Jrcm+figWlYz4Ixzt0SJVR2cMC8lvZcimipiEY= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0/go.mod h1:ON4tFdPTwRcgWEaVDrN3584Ef+b7GgSJaXxe5fW9t4M= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2 h1:uqM+VoHjVH6zdlkLF2b6O0ZANcHoj3rO0PoQ3jglUJA= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2/go.mod h1:twTKAa1E6hLmSDjLhaCkbTMQKc7p/rNLU40rLxGEOCI= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0 h1:leh5DwKv6Ihwi+h60uHtn6UWAxBbZ0q8DwQVMzf61zw= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= -github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0 h1:UE9n9rkJF62ArLb1F3DEjRt8O3jLwMWdSoypKV4f3MU= -github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 h1:fb8kj/Dh4CSwgsOzHeZY4Xh68cFVbzXx+ONXGMY//4w= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0/go.mod h1:uReU2sSxZExRPBAg3qKzmAucSi51+SP1OhohieR821Q= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 h1:BMAjVKJM0U/CYF27gA0ZMmXGkOcvfFtD0oHVZ1TIPRI= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0/go.mod h1:1fXstnBMas5kzG+S3q8UoJcmyU6nUeunJcMDHcRYHhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 h1:d81/ng9rET2YqdVkVwkb6EXeRrLJIwyGnJcAlAWKwhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0/go.mod h1:s4kgfzA0covAXNicZHDMN58jExvcng2mC/DepXiF1EI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 h1:WpB/QDNLpMw72xHJc34BNNykqSOeEJDAWkhf0u12/Jk= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/dnaeon/go-vcr v1.1.0 h1:ReYa/UBrRyQdant9B4fNHGoCNKw6qh6P0fsdGmZpR7c= -github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= -github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= +github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= +github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= -golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/models.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/models.go index bd3ed351204b..ca40e66711c3 100644 --- a/sdk/resourcemanager/billingbenefits/armbillingbenefits/models.go +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/models.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbillingbenefits @@ -14,796 +13,705 @@ import "time" // AppliedScopeProperties - Properties specific to applied scope type. Not required if not applicable. type AppliedScopeProperties struct { // Display name - DisplayName *string `json:"displayName,omitempty"` + DisplayName *string // Fully-qualified identifier of the management group where the benefit must be applied. - ManagementGroupID *string `json:"managementGroupId,omitempty"` + ManagementGroupID *string // Fully-qualified identifier of the resource group. - ResourceGroupID *string `json:"resourceGroupId,omitempty"` + ResourceGroupID *string // Fully-qualified identifier of the subscription. - SubscriptionID *string `json:"subscriptionId,omitempty"` + SubscriptionID *string // Tenant ID where the benefit is applied. - TenantID *string `json:"tenantId,omitempty"` + TenantID *string } // BillingPlanInformation - Information describing the type of billing plan for this savings plan. type BillingPlanInformation struct { // For recurring billing plans, indicates the date when next payment will be processed. Null when total is paid off. - NextPaymentDueDate *time.Time `json:"nextPaymentDueDate,omitempty"` + NextPaymentDueDate *time.Time // Amount of money to be paid for the Order. Tax is not included. - PricingCurrencyTotal *Price `json:"pricingCurrencyTotal,omitempty"` + PricingCurrencyTotal *Price // Date when the billing plan has started. - StartDate *time.Time `json:"startDate,omitempty"` - Transactions []*PaymentDetail `json:"transactions,omitempty"` + StartDate *time.Time + Transactions []*PaymentDetail } // Commitment towards the benefit. type Commitment struct { - Amount *float64 `json:"amount,omitempty"` + Amount *float64 // The ISO 4217 3-letter currency code for the currency used by this purchase record. - CurrencyCode *string `json:"currencyCode,omitempty"` + CurrencyCode *string // Commitment grain. - Grain *CommitmentGrain `json:"grain,omitempty"` + Grain *CommitmentGrain } type ExtendedStatusInfo struct { // The message giving detailed information about the status code. - Message *string `json:"message,omitempty"` + Message *string // Status code providing additional information. - StatusCode *string `json:"statusCode,omitempty"` + StatusCode *string } // Operation - Details of a REST API operation, returned from the Resource Provider Operations API type Operation struct { // Localized display information for this particular operation. - Display *OperationDisplay `json:"display,omitempty"` + Display *OperationDisplay // READ-ONLY; Enum. Indicates the action type. "Internal" refers to actions that are for internal only APIs. - ActionType *ActionType `json:"actionType,omitempty" azure:"ro"` + ActionType *ActionType // READ-ONLY; Whether the operation applies to data-plane. This is "true" for data-plane operations and "false" for ARM/control-plane // operations. - IsDataAction *bool `json:"isDataAction,omitempty" azure:"ro"` + IsDataAction *bool // READ-ONLY; The name of the operation, as per Resource-Based Access Control (RBAC). Examples: "Microsoft.Compute/virtualMachines/write", // "Microsoft.Compute/virtualMachines/capture/action" - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; The intended executor of the operation; as in Resource Based Access Control (RBAC) and audit logs UX. Default // value is "user,system" - Origin *Origin `json:"origin,omitempty" azure:"ro"` + Origin *Origin } // OperationDisplay - Localized display information for this particular operation. type OperationDisplay struct { // READ-ONLY; The short, localized friendly description of the operation; suitable for tool tips and detailed views. - Description *string `json:"description,omitempty" azure:"ro"` + Description *string // READ-ONLY; The concise, localized friendly name for the operation; suitable for dropdowns. E.g. "Create or Update Virtual // Machine", "Restart Virtual Machine". - Operation *string `json:"operation,omitempty" azure:"ro"` + Operation *string // READ-ONLY; The localized friendly form of the resource provider name, e.g. "Microsoft Monitoring Insights" or "Microsoft // Compute". - Provider *string `json:"provider,omitempty" azure:"ro"` + Provider *string // READ-ONLY; The localized friendly name of the resource type related to this operation. E.g. "Virtual Machines" or "Job // Schedule Collections". - Resource *string `json:"resource,omitempty" azure:"ro"` + Resource *string } // OperationListResult - A list of REST API operations supported by an Azure Resource Provider. It contains an URL link to // get the next set of results. type OperationListResult struct { // READ-ONLY; URL to get the next set of operation list results (if there are any). - NextLink *string `json:"nextLink,omitempty" azure:"ro"` + NextLink *string // READ-ONLY; List of operations supported by the resource provider - Value []*Operation `json:"value,omitempty" azure:"ro"` -} - -// OperationsClientListOptions contains the optional parameters for the OperationsClient.NewListPager method. -type OperationsClientListOptions struct { - // placeholder for future optional parameters + Value []*Operation } // PaymentDetail - Information about payment related to a savings plan order. type PaymentDetail struct { // Billing account - BillingAccount *string `json:"billingAccount,omitempty"` + BillingAccount *string // Amount charged in Billing currency. Tax not included. Is null for future payments - BillingCurrencyTotal *Price `json:"billingCurrencyTotal,omitempty"` + BillingCurrencyTotal *Price // Date when the payment needs to be done. - DueDate *time.Time `json:"dueDate,omitempty"` + DueDate *time.Time // Date when the transaction is completed. Is null when it is scheduled. - PaymentDate *time.Time `json:"paymentDate,omitempty"` + PaymentDate *time.Time // Amount in pricing currency. Tax not included. - PricingCurrencyTotal *Price `json:"pricingCurrencyTotal,omitempty"` + PricingCurrencyTotal *Price // Describes whether the payment is completed, failed, cancelled or scheduled in the future. - Status *PaymentStatus `json:"status,omitempty"` + Status *PaymentStatus // READ-ONLY - ExtendedStatusInfo *ExtendedStatusInfo `json:"extendedStatusInfo,omitempty" azure:"ro"` + ExtendedStatusInfo *ExtendedStatusInfo } type Price struct { - Amount *float64 `json:"amount,omitempty"` + Amount *float64 // The ISO 4217 3-letter currency code for the currency used by this purchase record. - CurrencyCode *string `json:"currencyCode,omitempty"` + CurrencyCode *string } type PurchaseRequest struct { - Properties *PurchaseRequestProperties `json:"properties,omitempty"` + Properties *PurchaseRequestProperties // The SKU to be applied for this resource - SKU *SKU `json:"sku,omitempty"` + SKU *SKU } type PurchaseRequestProperties struct { // Properties specific to applied scope type. Not required if not applicable. - AppliedScopeProperties *AppliedScopeProperties `json:"appliedScopeProperties,omitempty"` + AppliedScopeProperties *AppliedScopeProperties // Type of the Applied Scope. - AppliedScopeType *AppliedScopeType `json:"appliedScopeType,omitempty"` + AppliedScopeType *AppliedScopeType // Represents the billing plan in ISO 8601 format. Required only for monthly billing plans. - BillingPlan *BillingPlan `json:"billingPlan,omitempty"` + BillingPlan *BillingPlan // Subscription that will be charged for purchasing the benefit - BillingScopeID *string `json:"billingScopeId,omitempty"` + BillingScopeID *string // Commitment towards the benefit. - Commitment *Commitment `json:"commitment,omitempty"` + Commitment *Commitment // Friendly name of the savings plan - DisplayName *string `json:"displayName,omitempty"` + DisplayName *string // Setting this to true will automatically purchase a new benefit on the expiration date time. - Renew *bool `json:"renew,omitempty"` + Renew *bool // Represent benefit term in ISO 8601 format. - Term *Term `json:"term,omitempty"` + Term *Term // READ-ONLY; DateTime of the savings plan starts providing benefit from. - EffectiveDateTime *time.Time `json:"effectiveDateTime,omitempty" azure:"ro"` -} - -// RPClientValidatePurchaseOptions contains the optional parameters for the RPClient.ValidatePurchase method. -type RPClientValidatePurchaseOptions struct { - // placeholder for future optional parameters + EffectiveDateTime *time.Time } type RenewProperties struct { - PurchaseProperties *PurchaseRequest `json:"purchaseProperties,omitempty"` -} - -// ReservationOrderAliasClientBeginCreateOptions contains the optional parameters for the ReservationOrderAliasClient.BeginCreate -// method. -type ReservationOrderAliasClientBeginCreateOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// ReservationOrderAliasClientGetOptions contains the optional parameters for the ReservationOrderAliasClient.Get method. -type ReservationOrderAliasClientGetOptions struct { - // placeholder for future optional parameters + PurchaseProperties *PurchaseRequest } // ReservationOrderAliasRequest - Reservation order alias type ReservationOrderAliasRequest struct { // REQUIRED; Reservation order SKU - SKU *SKU `json:"sku,omitempty"` + SKU *SKU // The Azure Region where the reservation benefits are applied to. - Location *string `json:"location,omitempty"` + Location *string // Reservation order alias request properties - Properties *ReservationOrderAliasRequestProperties `json:"properties,omitempty"` + Properties *ReservationOrderAliasRequestProperties // READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; The name of the resource - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information. - SystemData *SystemData `json:"systemData,omitempty" azure:"ro"` + SystemData *SystemData // READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // ReservationOrderAliasRequestProperties - Reservation properties type ReservationOrderAliasRequestProperties struct { // Properties specific to applied scope type. Not required if not applicable. - AppliedScopeProperties *AppliedScopeProperties `json:"appliedScopeProperties,omitempty"` + AppliedScopeProperties *AppliedScopeProperties // Type of the Applied Scope. - AppliedScopeType *AppliedScopeType `json:"appliedScopeType,omitempty"` + AppliedScopeType *AppliedScopeType // Represents the billing plan in ISO 8601 format. Required only for monthly billing plans. - BillingPlan *BillingPlan `json:"billingPlan,omitempty"` + BillingPlan *BillingPlan // Subscription that will be charged for purchasing the benefit - BillingScopeID *string `json:"billingScopeId,omitempty"` + BillingScopeID *string // Display name - DisplayName *string `json:"displayName,omitempty"` + DisplayName *string // Total Quantity of the SKUs purchased in the Reservation. - Quantity *int32 `json:"quantity,omitempty"` + Quantity *int32 // Setting this to true will automatically purchase a new benefit on the expiration date time. - Renew *bool `json:"renew,omitempty"` + Renew *bool // Properties specific to each reserved resource type. Not required if not applicable. - ReservedResourceProperties *ReservationOrderAliasRequestPropertiesReservedResourceProperties `json:"reservedResourceProperties,omitempty"` + ReservedResourceProperties *ReservationOrderAliasRequestPropertiesReservedResourceProperties // The type of the resource that is being reserved. - ReservedResourceType *ReservedResourceType `json:"reservedResourceType,omitempty"` + ReservedResourceType *ReservedResourceType // This is the date-time when the Azure Hybrid Benefit needs to be reviewed. - ReviewDateTime *time.Time `json:"reviewDateTime,omitempty"` + ReviewDateTime *time.Time // Represent benefit term in ISO 8601 format. - Term *Term `json:"term,omitempty"` + Term *Term } // ReservationOrderAliasRequestPropertiesReservedResourceProperties - Properties specific to each reserved resource type. // Not required if not applicable. type ReservationOrderAliasRequestPropertiesReservedResourceProperties struct { // Turning this on will apply the reservation discount to other VMs in the same VM size group. - InstanceFlexibility *InstanceFlexibility `json:"instanceFlexibility,omitempty"` + InstanceFlexibility *InstanceFlexibility } // ReservationOrderAliasResponse - Reservation order alias type ReservationOrderAliasResponse struct { // REQUIRED; Reservation order SKU - SKU *SKU `json:"sku,omitempty"` + SKU *SKU // The Azure Region where the reserved resource lives. - Location *string `json:"location,omitempty"` + Location *string // Reservation order alias response properties - Properties *ReservationOrderAliasResponseProperties `json:"properties,omitempty"` + Properties *ReservationOrderAliasResponseProperties // READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; The name of the resource - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information. - SystemData *SystemData `json:"systemData,omitempty" azure:"ro"` + SystemData *SystemData // READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // ReservationOrderAliasResponseProperties - Reservation properties type ReservationOrderAliasResponseProperties struct { // Properties specific to applied scope type. Not required if not applicable. - AppliedScopeProperties *AppliedScopeProperties `json:"appliedScopeProperties,omitempty"` + AppliedScopeProperties *AppliedScopeProperties // Type of the Applied Scope. - AppliedScopeType *AppliedScopeType `json:"appliedScopeType,omitempty"` + AppliedScopeType *AppliedScopeType // Represents the billing plan in ISO 8601 format. Required only for monthly billing plans. - BillingPlan *BillingPlan `json:"billingPlan,omitempty"` + BillingPlan *BillingPlan // Subscription that will be charged for purchasing the benefit - BillingScopeID *string `json:"billingScopeId,omitempty"` + BillingScopeID *string // Display name - DisplayName *string `json:"displayName,omitempty"` + DisplayName *string // Total Quantity of the SKUs purchased in the Reservation. - Quantity *int32 `json:"quantity,omitempty"` + Quantity *int32 // Setting this to true will automatically purchase a new benefit on the expiration date time. - Renew *bool `json:"renew,omitempty"` + Renew *bool // Properties specific to each reserved resource type. Not required if not applicable. - ReservedResourceProperties *ReservationOrderAliasResponsePropertiesReservedResourceProperties `json:"reservedResourceProperties,omitempty"` + ReservedResourceProperties *ReservationOrderAliasResponsePropertiesReservedResourceProperties // The type of the resource that is being reserved. - ReservedResourceType *ReservedResourceType `json:"reservedResourceType,omitempty"` + ReservedResourceType *ReservedResourceType // This is the date-time when the Reservation needs to be reviewed. - ReviewDateTime *time.Time `json:"reviewDateTime,omitempty"` + ReviewDateTime *time.Time // Represent benefit term in ISO 8601 format. - Term *Term `json:"term,omitempty"` + Term *Term // READ-ONLY; Provisioning state - ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"` + ProvisioningState *ProvisioningState // READ-ONLY; Identifier of the reservation order created - ReservationOrderID *string `json:"reservationOrderId,omitempty" azure:"ro"` + ReservationOrderID *string } // ReservationOrderAliasResponsePropertiesReservedResourceProperties - Properties specific to each reserved resource type. // Not required if not applicable. type ReservationOrderAliasResponsePropertiesReservedResourceProperties struct { // Turning this on will apply the reservation discount to other VMs in the same VM size group. - InstanceFlexibility *InstanceFlexibility `json:"instanceFlexibility,omitempty"` + InstanceFlexibility *InstanceFlexibility } // RoleAssignmentEntity - Role assignment entity type RoleAssignmentEntity struct { // Role assignment entity id - ID *string `json:"id,omitempty"` + ID *string // Role assignment entity name - Name *string `json:"name,omitempty"` + Name *string // Role assignment entity properties - Properties *RoleAssignmentEntityProperties `json:"properties,omitempty"` + Properties *RoleAssignmentEntityProperties } // RoleAssignmentEntityProperties - Role assignment entity properties type RoleAssignmentEntityProperties struct { // Principal Id - PrincipalID *string `json:"principalId,omitempty"` + PrincipalID *string // Role definition id - RoleDefinitionID *string `json:"roleDefinitionId,omitempty"` + RoleDefinitionID *string // Scope of the role assignment entity - Scope *string `json:"scope,omitempty"` + Scope *string } // SKU - The SKU to be applied for this resource type SKU struct { // Name of the SKU to be applied - Name *string `json:"name,omitempty"` -} - -// SavingsPlanClientGetOptions contains the optional parameters for the SavingsPlanClient.Get method. -type SavingsPlanClientGetOptions struct { - // May be used to expand the detail information of some properties. - Expand *string -} - -// SavingsPlanClientListAllOptions contains the optional parameters for the SavingsPlanClient.NewListAllPager method. -type SavingsPlanClientListAllOptions struct { - // May be used to filter by reservation properties. The filter supports 'eq', 'or', and 'and'. It does not currently support - // 'ne', 'gt', 'le', 'ge', or 'not'. Reservation properties include sku/name, - // properties/{appliedScopeType, archived, displayName, displayProvisioningState, effectiveDateTime, expiryDate, provisioningState, - // quantity, renew, reservedResourceType, term, - // userFriendlyAppliedScopeType, userFriendlyRenewState} - Filter *string - // May be used to sort order by reservation properties. - Orderby *string - // To indicate whether to refresh the roll up counts of the savings plans group by provisioning states - RefreshSummary *string - // The selected provisioning state - SelectedState *string - // The number of savings plans to skip from the list before returning results - Skiptoken *float32 - // To number of savings plans to return - Take *float32 -} - -// SavingsPlanClientListOptions contains the optional parameters for the SavingsPlanClient.NewListPager method. -type SavingsPlanClientListOptions struct { - // placeholder for future optional parameters -} - -// SavingsPlanClientUpdateOptions contains the optional parameters for the SavingsPlanClient.Update method. -type SavingsPlanClientUpdateOptions struct { - // placeholder for future optional parameters -} - -// SavingsPlanClientValidateUpdateOptions contains the optional parameters for the SavingsPlanClient.ValidateUpdate method. -type SavingsPlanClientValidateUpdateOptions struct { - // placeholder for future optional parameters + Name *string } // SavingsPlanModel - Savings plan type SavingsPlanModel struct { // REQUIRED; Savings plan SKU - SKU *SKU `json:"sku,omitempty"` + SKU *SKU // Savings plan properties - Properties *SavingsPlanModelProperties `json:"properties,omitempty"` + Properties *SavingsPlanModelProperties // READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; The name of the resource - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information. - SystemData *SystemData `json:"systemData,omitempty" azure:"ro"` + SystemData *SystemData // READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } type SavingsPlanModelList struct { // Url to get the next page. - NextLink *string `json:"nextLink,omitempty"` - Value []*SavingsPlanModel `json:"value,omitempty"` + NextLink *string + Value []*SavingsPlanModel } type SavingsPlanModelListResult struct { // READ-ONLY; The roll out count summary of the savings plans - AdditionalProperties []*SavingsPlanSummary `json:"additionalProperties,omitempty" azure:"ro"` + AdditionalProperties []*SavingsPlanSummary // READ-ONLY; Url to get the next page. - NextLink *string `json:"nextLink,omitempty" azure:"ro"` + NextLink *string // READ-ONLY; The list of savings plans. - Value []*SavingsPlanModel `json:"value,omitempty" azure:"ro"` + Value []*SavingsPlanModel } // SavingsPlanModelProperties - Savings plan properties type SavingsPlanModelProperties struct { // Properties specific to applied scope type. Not required if not applicable. - AppliedScopeProperties *AppliedScopeProperties `json:"appliedScopeProperties,omitempty"` + AppliedScopeProperties *AppliedScopeProperties // Type of the Applied Scope. - AppliedScopeType *AppliedScopeType `json:"appliedScopeType,omitempty"` + AppliedScopeType *AppliedScopeType // This is the DateTime when the savings plan benefit started. - BenefitStartTime *time.Time `json:"benefitStartTime,omitempty"` + BenefitStartTime *time.Time // Represents the billing plan in ISO 8601 format. Required only for monthly billing plans. - BillingPlan *BillingPlan `json:"billingPlan,omitempty"` + BillingPlan *BillingPlan // Subscription that will be charged for purchasing the benefit - BillingScopeID *string `json:"billingScopeId,omitempty"` + BillingScopeID *string // Commitment towards the benefit. - Commitment *Commitment `json:"commitment,omitempty"` + Commitment *Commitment // Display name - DisplayName *string `json:"displayName,omitempty"` + DisplayName *string // Setting this to true will automatically purchase a new benefit on the expiration date time. - Renew *bool `json:"renew,omitempty"` + Renew *bool // SavingsPlan Id of the SavingsPlan which is purchased because of renew. - RenewDestination *string `json:"renewDestination,omitempty"` - RenewProperties *RenewProperties `json:"renewProperties,omitempty"` + RenewDestination *string + RenewProperties *RenewProperties // SavingsPlan Id of the SavingsPlan from which this SavingsPlan is renewed. - RenewSource *string `json:"renewSource,omitempty"` + RenewSource *string // Represent benefit term in ISO 8601 format. - Term *Term `json:"term,omitempty"` + Term *Term // READ-ONLY; Fully-qualified identifier of the billing account where the savings plan is applied. Present only for Enterprise // Agreement customers. - BillingAccountID *string `json:"billingAccountId,omitempty" azure:"ro"` + BillingAccountID *string // READ-ONLY; Fully-qualified identifier of the billing profile where the savings plan is applied. Present only for Field-led // or Customer-led customers. - BillingProfileID *string `json:"billingProfileId,omitempty" azure:"ro"` + BillingProfileID *string // READ-ONLY; Fully-qualified identifier of the customer where the savings plan is applied. Present only for Partner-led customers. - CustomerID *string `json:"customerId,omitempty" azure:"ro"` + CustomerID *string // READ-ONLY; The provisioning state of the savings plan for display, e.g. Succeeded - DisplayProvisioningState *string `json:"displayProvisioningState,omitempty" azure:"ro"` + DisplayProvisioningState *string // READ-ONLY; DateTime of the savings plan starts providing benefit from. - EffectiveDateTime *time.Time `json:"effectiveDateTime,omitempty" azure:"ro"` + EffectiveDateTime *time.Time // READ-ONLY; Expiry date time - ExpiryDateTime *time.Time `json:"expiryDateTime,omitempty" azure:"ro"` + ExpiryDateTime *time.Time // READ-ONLY - ExtendedStatusInfo *ExtendedStatusInfo `json:"extendedStatusInfo,omitempty" azure:"ro"` + ExtendedStatusInfo *ExtendedStatusInfo // READ-ONLY; Provisioning state - ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"` + ProvisioningState *ProvisioningState // READ-ONLY; Date time when the savings plan was purchased - PurchaseDateTime *time.Time `json:"purchaseDateTime,omitempty" azure:"ro"` + PurchaseDateTime *time.Time // READ-ONLY; The applied scope type of the savings plan for display, e.g. Shared - UserFriendlyAppliedScopeType *string `json:"userFriendlyAppliedScopeType,omitempty" azure:"ro"` + UserFriendlyAppliedScopeType *string // READ-ONLY; Savings plan utilization - Utilization *Utilization `json:"utilization,omitempty" azure:"ro"` -} - -// SavingsPlanOrderAliasClientBeginCreateOptions contains the optional parameters for the SavingsPlanOrderAliasClient.BeginCreate -// method. -type SavingsPlanOrderAliasClientBeginCreateOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// SavingsPlanOrderAliasClientGetOptions contains the optional parameters for the SavingsPlanOrderAliasClient.Get method. -type SavingsPlanOrderAliasClientGetOptions struct { - // placeholder for future optional parameters + Utilization *Utilization } // SavingsPlanOrderAliasModel - Savings plan order alias type SavingsPlanOrderAliasModel struct { // REQUIRED; Savings plan SKU - SKU *SKU `json:"sku,omitempty"` + SKU *SKU // Resource provider kind - Kind *string `json:"kind,omitempty"` + Kind *string // Savings plan order alias properties - Properties *SavingsPlanOrderAliasProperties `json:"properties,omitempty"` + Properties *SavingsPlanOrderAliasProperties // READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; The name of the resource - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information. - SystemData *SystemData `json:"systemData,omitempty" azure:"ro"` + SystemData *SystemData // READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // SavingsPlanOrderAliasProperties - Savings plan properties type SavingsPlanOrderAliasProperties struct { // Properties specific to applied scope type. Not required if not applicable. - AppliedScopeProperties *AppliedScopeProperties `json:"appliedScopeProperties,omitempty"` + AppliedScopeProperties *AppliedScopeProperties // Type of the Applied Scope. - AppliedScopeType *AppliedScopeType `json:"appliedScopeType,omitempty"` + AppliedScopeType *AppliedScopeType // Represents the billing plan in ISO 8601 format. Required only for monthly billing plans. - BillingPlan *BillingPlan `json:"billingPlan,omitempty"` + BillingPlan *BillingPlan // Subscription that will be charged for purchasing the benefit - BillingScopeID *string `json:"billingScopeId,omitempty"` + BillingScopeID *string // Commitment towards the benefit. - Commitment *Commitment `json:"commitment,omitempty"` + Commitment *Commitment // Display name - DisplayName *string `json:"displayName,omitempty"` + DisplayName *string // Represent benefit term in ISO 8601 format. - Term *Term `json:"term,omitempty"` + Term *Term // READ-ONLY; Provisioning state - ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"` + ProvisioningState *ProvisioningState // READ-ONLY; Identifier of the savings plan created - SavingsPlanOrderID *string `json:"savingsPlanOrderId,omitempty" azure:"ro"` -} - -// SavingsPlanOrderClientElevateOptions contains the optional parameters for the SavingsPlanOrderClient.Elevate method. -type SavingsPlanOrderClientElevateOptions struct { - // placeholder for future optional parameters -} - -// SavingsPlanOrderClientGetOptions contains the optional parameters for the SavingsPlanOrderClient.Get method. -type SavingsPlanOrderClientGetOptions struct { - // May be used to expand the detail information of some properties. - Expand *string -} - -// SavingsPlanOrderClientListOptions contains the optional parameters for the SavingsPlanOrderClient.NewListPager method. -type SavingsPlanOrderClientListOptions struct { - // placeholder for future optional parameters + SavingsPlanOrderID *string } // SavingsPlanOrderModel - Savings plan order type SavingsPlanOrderModel struct { // REQUIRED; Savings plan SKU - SKU *SKU `json:"sku,omitempty"` + SKU *SKU // Savings plan order properties - Properties *SavingsPlanOrderModelProperties `json:"properties,omitempty"` + Properties *SavingsPlanOrderModelProperties // READ-ONLY; Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName} - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; The name of the resource - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; Azure Resource Manager metadata containing createdBy and modifiedBy information. - SystemData *SystemData `json:"systemData,omitempty" azure:"ro"` + SystemData *SystemData // READ-ONLY; The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts" - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } type SavingsPlanOrderModelList struct { // Url to get the next page. - NextLink *string `json:"nextLink,omitempty"` - Value []*SavingsPlanOrderModel `json:"value,omitempty"` + NextLink *string + Value []*SavingsPlanOrderModel } // SavingsPlanOrderModelProperties - Savings plan order properties type SavingsPlanOrderModelProperties struct { // This is the DateTime when the savings plan benefit started. - BenefitStartTime *time.Time `json:"benefitStartTime,omitempty"` + BenefitStartTime *time.Time // Represents the billing plan in ISO 8601 format. Required only for monthly billing plans. - BillingPlan *BillingPlan `json:"billingPlan,omitempty"` + BillingPlan *BillingPlan // Subscription that will be charged for purchasing the benefit - BillingScopeID *string `json:"billingScopeId,omitempty"` + BillingScopeID *string // Display name - DisplayName *string `json:"displayName,omitempty"` + DisplayName *string // Information describing the type of billing plan for this savings plan. - PlanInformation *BillingPlanInformation `json:"planInformation,omitempty"` - SavingsPlans []*string `json:"savingsPlans,omitempty"` + PlanInformation *BillingPlanInformation + SavingsPlans []*string // Represent benefit term in ISO 8601 format. - Term *Term `json:"term,omitempty"` + Term *Term // READ-ONLY; Fully-qualified identifier of the billing account where the savings plan is applied. Present only for Enterprise // Agreement customers. - BillingAccountID *string `json:"billingAccountId,omitempty" azure:"ro"` + BillingAccountID *string // READ-ONLY; Fully-qualified identifier of the billing profile where the savings plan is applied. Present only for Field-led // or Customer-led customers. - BillingProfileID *string `json:"billingProfileId,omitempty" azure:"ro"` + BillingProfileID *string // READ-ONLY; Fully-qualified identifier of the customer where the savings plan is applied. Present only for Partner-led customers. - CustomerID *string `json:"customerId,omitempty" azure:"ro"` + CustomerID *string // READ-ONLY; Expiry date time - ExpiryDateTime *time.Time `json:"expiryDateTime,omitempty" azure:"ro"` + ExpiryDateTime *time.Time // READ-ONLY - ExtendedStatusInfo *ExtendedStatusInfo `json:"extendedStatusInfo,omitempty" azure:"ro"` + ExtendedStatusInfo *ExtendedStatusInfo // READ-ONLY; Provisioning state - ProvisioningState *ProvisioningState `json:"provisioningState,omitempty" azure:"ro"` + ProvisioningState *ProvisioningState } type SavingsPlanPurchaseValidateRequest struct { - Benefits []*SavingsPlanOrderAliasModel `json:"benefits,omitempty"` + Benefits []*SavingsPlanOrderAliasModel } // SavingsPlanSummary - Savings plans list summary type SavingsPlanSummary struct { // The roll up count summary of savings plans in each state - Value *SavingsPlanSummaryCount `json:"value,omitempty"` + Value *SavingsPlanSummaryCount // READ-ONLY; This property has value 'summary' - Name *string `json:"name,omitempty" azure:"ro"` + Name *string } // SavingsPlanSummaryCount - The roll up count summary of savings plans in each state type SavingsPlanSummaryCount struct { // READ-ONLY; The number of savings plans in Cancelled state - CancelledCount *float32 `json:"cancelledCount,omitempty" azure:"ro"` + CancelledCount *float32 // READ-ONLY; The number of savings plans in Expired state - ExpiredCount *float32 `json:"expiredCount,omitempty" azure:"ro"` + ExpiredCount *float32 // READ-ONLY; The number of savings plans in Expiring state - ExpiringCount *float32 `json:"expiringCount,omitempty" azure:"ro"` + ExpiringCount *float32 // READ-ONLY; The number of savings plans in Failed state - FailedCount *float32 `json:"failedCount,omitempty" azure:"ro"` + FailedCount *float32 // READ-ONLY; The number of savings plans in No Benefit state - NoBenefitCount *float32 `json:"noBenefitCount,omitempty" azure:"ro"` + NoBenefitCount *float32 // READ-ONLY; The number of savings plans in Pending state - PendingCount *float32 `json:"pendingCount,omitempty" azure:"ro"` + PendingCount *float32 // READ-ONLY; The number of savings plans in Processing state - ProcessingCount *float32 `json:"processingCount,omitempty" azure:"ro"` + ProcessingCount *float32 // READ-ONLY; The number of savings plans in Succeeded state - SucceededCount *float32 `json:"succeededCount,omitempty" azure:"ro"` + SucceededCount *float32 // READ-ONLY; The number of savings plans in Warning state - WarningCount *float32 `json:"warningCount,omitempty" azure:"ro"` + WarningCount *float32 } // SavingsPlanUpdateRequest - Savings plan patch request type SavingsPlanUpdateRequest struct { // Savings plan patch request - Properties *SavingsPlanUpdateRequestProperties `json:"properties,omitempty"` + Properties *SavingsPlanUpdateRequestProperties } // SavingsPlanUpdateRequestProperties - Savings plan patch request type SavingsPlanUpdateRequestProperties struct { // Properties specific to applied scope type. Not required if not applicable. - AppliedScopeProperties *AppliedScopeProperties `json:"appliedScopeProperties,omitempty"` + AppliedScopeProperties *AppliedScopeProperties // Type of the Applied Scope. - AppliedScopeType *AppliedScopeType `json:"appliedScopeType,omitempty"` + AppliedScopeType *AppliedScopeType // Display name - DisplayName *string `json:"displayName,omitempty"` + DisplayName *string // Setting this to true will automatically purchase a new benefit on the expiration date time. - Renew *bool `json:"renew,omitempty"` - RenewProperties *RenewProperties `json:"renewProperties,omitempty"` + Renew *bool + RenewProperties *RenewProperties } type SavingsPlanUpdateValidateRequest struct { - Benefits []*SavingsPlanUpdateRequestProperties `json:"benefits,omitempty"` + Benefits []*SavingsPlanUpdateRequestProperties } // SavingsPlanValidResponseProperty - Benefit scope response property type SavingsPlanValidResponseProperty struct { // Failure reason if the provided input was invalid - Reason *string `json:"reason,omitempty"` + Reason *string // Failure reason code if the provided input was invalid - ReasonCode *string `json:"reasonCode,omitempty"` + ReasonCode *string // Indicates if the provided input was valid - Valid *bool `json:"valid,omitempty"` + Valid *bool } type SavingsPlanValidateResponse struct { - Benefits []*SavingsPlanValidResponseProperty `json:"benefits,omitempty"` + Benefits []*SavingsPlanValidResponseProperty // Url to get the next page. - NextLink *string `json:"nextLink,omitempty"` + NextLink *string } // SystemData - Metadata pertaining to creation and last modification of the resource. type SystemData struct { // The timestamp of resource creation (UTC). - CreatedAt *time.Time `json:"createdAt,omitempty"` + CreatedAt *time.Time // The identity that created the resource. - CreatedBy *string `json:"createdBy,omitempty"` + CreatedBy *string // The type of identity that created the resource. - CreatedByType *CreatedByType `json:"createdByType,omitempty"` + CreatedByType *CreatedByType // The timestamp of resource last modification (UTC) - LastModifiedAt *time.Time `json:"lastModifiedAt,omitempty"` + LastModifiedAt *time.Time // The identity that last modified the resource. - LastModifiedBy *string `json:"lastModifiedBy,omitempty"` + LastModifiedBy *string // The type of identity that last modified the resource. - LastModifiedByType *CreatedByType `json:"lastModifiedByType,omitempty"` + LastModifiedByType *CreatedByType } // Utilization - Savings plan utilization type Utilization struct { // The array of aggregates of a savings plan's utilization - Aggregates []*UtilizationAggregates `json:"aggregates,omitempty"` + Aggregates []*UtilizationAggregates // READ-ONLY; The number of days trend for a savings plan - Trend *string `json:"trend,omitempty" azure:"ro"` + Trend *string } // UtilizationAggregates - The aggregate values of savings plan utilization type UtilizationAggregates struct { // READ-ONLY; The grain of the aggregate - Grain *float32 `json:"grain,omitempty" azure:"ro"` + Grain *float32 // READ-ONLY; The grain unit of the aggregate - GrainUnit *string `json:"grainUnit,omitempty" azure:"ro"` + GrainUnit *string // READ-ONLY; The aggregate value - Value *float32 `json:"value,omitempty" azure:"ro"` + Value *float32 // READ-ONLY; The aggregate value unit - ValueUnit *string `json:"valueUnit,omitempty" azure:"ro"` + ValueUnit *string } diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/models_serde.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/models_serde.go index a95e4d2ad427..6e2f9c652d06 100644 --- a/sdk/resourcemanager/billingbenefits/armbillingbenefits/models_serde.go +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/models_serde.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbillingbenefits @@ -399,7 +398,7 @@ func (p PurchaseRequestProperties) MarshalJSON() ([]byte, error) { populate(objectMap, "billingScopeId", p.BillingScopeID) populate(objectMap, "commitment", p.Commitment) populate(objectMap, "displayName", p.DisplayName) - populateTimeRFC3339(objectMap, "effectiveDateTime", p.EffectiveDateTime) + populateDateTimeRFC3339(objectMap, "effectiveDateTime", p.EffectiveDateTime) populate(objectMap, "renew", p.Renew) populate(objectMap, "term", p.Term) return json.Marshal(objectMap) @@ -433,7 +432,7 @@ func (p *PurchaseRequestProperties) UnmarshalJSON(data []byte) error { err = unpopulate(val, "DisplayName", &p.DisplayName) delete(rawMsg, key) case "effectiveDateTime": - err = unpopulateTimeRFC3339(val, "EffectiveDateTime", &p.EffectiveDateTime) + err = unpopulateDateTimeRFC3339(val, "EffectiveDateTime", &p.EffectiveDateTime) delete(rawMsg, key) case "renew": err = unpopulate(val, "Renew", &p.Renew) @@ -539,7 +538,7 @@ func (r ReservationOrderAliasRequestProperties) MarshalJSON() ([]byte, error) { populate(objectMap, "renew", r.Renew) populate(objectMap, "reservedResourceProperties", r.ReservedResourceProperties) populate(objectMap, "reservedResourceType", r.ReservedResourceType) - populateTimeRFC3339(objectMap, "reviewDateTime", r.ReviewDateTime) + populateDateTimeRFC3339(objectMap, "reviewDateTime", r.ReviewDateTime) populate(objectMap, "term", r.Term) return json.Marshal(objectMap) } @@ -581,7 +580,7 @@ func (r *ReservationOrderAliasRequestProperties) UnmarshalJSON(data []byte) erro err = unpopulate(val, "ReservedResourceType", &r.ReservedResourceType) delete(rawMsg, key) case "reviewDateTime": - err = unpopulateTimeRFC3339(val, "ReviewDateTime", &r.ReviewDateTime) + err = unpopulateDateTimeRFC3339(val, "ReviewDateTime", &r.ReviewDateTime) delete(rawMsg, key) case "term": err = unpopulate(val, "Term", &r.Term) @@ -686,7 +685,7 @@ func (r ReservationOrderAliasResponseProperties) MarshalJSON() ([]byte, error) { populate(objectMap, "reservationOrderId", r.ReservationOrderID) populate(objectMap, "reservedResourceProperties", r.ReservedResourceProperties) populate(objectMap, "reservedResourceType", r.ReservedResourceType) - populateTimeRFC3339(objectMap, "reviewDateTime", r.ReviewDateTime) + populateDateTimeRFC3339(objectMap, "reviewDateTime", r.ReviewDateTime) populate(objectMap, "term", r.Term) return json.Marshal(objectMap) } @@ -734,7 +733,7 @@ func (r *ReservationOrderAliasResponseProperties) UnmarshalJSON(data []byte) err err = unpopulate(val, "ReservedResourceType", &r.ReservedResourceType) delete(rawMsg, key) case "reviewDateTime": - err = unpopulateTimeRFC3339(val, "ReviewDateTime", &r.ReviewDateTime) + err = unpopulateDateTimeRFC3339(val, "ReviewDateTime", &r.ReviewDateTime) delete(rawMsg, key) case "term": err = unpopulate(val, "Term", &r.Term) @@ -989,7 +988,7 @@ func (s SavingsPlanModelProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "appliedScopeProperties", s.AppliedScopeProperties) populate(objectMap, "appliedScopeType", s.AppliedScopeType) - populateTimeRFC3339(objectMap, "benefitStartTime", s.BenefitStartTime) + populateDateTimeRFC3339(objectMap, "benefitStartTime", s.BenefitStartTime) populate(objectMap, "billingAccountId", s.BillingAccountID) populate(objectMap, "billingPlan", s.BillingPlan) populate(objectMap, "billingProfileId", s.BillingProfileID) @@ -998,11 +997,11 @@ func (s SavingsPlanModelProperties) MarshalJSON() ([]byte, error) { populate(objectMap, "customerId", s.CustomerID) populate(objectMap, "displayName", s.DisplayName) populate(objectMap, "displayProvisioningState", s.DisplayProvisioningState) - populateTimeRFC3339(objectMap, "effectiveDateTime", s.EffectiveDateTime) - populateTimeRFC3339(objectMap, "expiryDateTime", s.ExpiryDateTime) + populateDateTimeRFC3339(objectMap, "effectiveDateTime", s.EffectiveDateTime) + populateDateTimeRFC3339(objectMap, "expiryDateTime", s.ExpiryDateTime) populate(objectMap, "extendedStatusInfo", s.ExtendedStatusInfo) populate(objectMap, "provisioningState", s.ProvisioningState) - populateTimeRFC3339(objectMap, "purchaseDateTime", s.PurchaseDateTime) + populateDateTimeRFC3339(objectMap, "purchaseDateTime", s.PurchaseDateTime) populate(objectMap, "renew", s.Renew) populate(objectMap, "renewDestination", s.RenewDestination) populate(objectMap, "renewProperties", s.RenewProperties) @@ -1029,7 +1028,7 @@ func (s *SavingsPlanModelProperties) UnmarshalJSON(data []byte) error { err = unpopulate(val, "AppliedScopeType", &s.AppliedScopeType) delete(rawMsg, key) case "benefitStartTime": - err = unpopulateTimeRFC3339(val, "BenefitStartTime", &s.BenefitStartTime) + err = unpopulateDateTimeRFC3339(val, "BenefitStartTime", &s.BenefitStartTime) delete(rawMsg, key) case "billingAccountId": err = unpopulate(val, "BillingAccountID", &s.BillingAccountID) @@ -1056,10 +1055,10 @@ func (s *SavingsPlanModelProperties) UnmarshalJSON(data []byte) error { err = unpopulate(val, "DisplayProvisioningState", &s.DisplayProvisioningState) delete(rawMsg, key) case "effectiveDateTime": - err = unpopulateTimeRFC3339(val, "EffectiveDateTime", &s.EffectiveDateTime) + err = unpopulateDateTimeRFC3339(val, "EffectiveDateTime", &s.EffectiveDateTime) delete(rawMsg, key) case "expiryDateTime": - err = unpopulateTimeRFC3339(val, "ExpiryDateTime", &s.ExpiryDateTime) + err = unpopulateDateTimeRFC3339(val, "ExpiryDateTime", &s.ExpiryDateTime) delete(rawMsg, key) case "extendedStatusInfo": err = unpopulate(val, "ExtendedStatusInfo", &s.ExtendedStatusInfo) @@ -1068,7 +1067,7 @@ func (s *SavingsPlanModelProperties) UnmarshalJSON(data []byte) error { err = unpopulate(val, "ProvisioningState", &s.ProvisioningState) delete(rawMsg, key) case "purchaseDateTime": - err = unpopulateTimeRFC3339(val, "PurchaseDateTime", &s.PurchaseDateTime) + err = unpopulateDateTimeRFC3339(val, "PurchaseDateTime", &s.PurchaseDateTime) delete(rawMsg, key) case "renew": err = unpopulate(val, "Renew", &s.Renew) @@ -1290,14 +1289,14 @@ func (s *SavingsPlanOrderModelList) UnmarshalJSON(data []byte) error { // MarshalJSON implements the json.Marshaller interface for type SavingsPlanOrderModelProperties. func (s SavingsPlanOrderModelProperties) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populateTimeRFC3339(objectMap, "benefitStartTime", s.BenefitStartTime) + populateDateTimeRFC3339(objectMap, "benefitStartTime", s.BenefitStartTime) populate(objectMap, "billingAccountId", s.BillingAccountID) populate(objectMap, "billingPlan", s.BillingPlan) populate(objectMap, "billingProfileId", s.BillingProfileID) populate(objectMap, "billingScopeId", s.BillingScopeID) populate(objectMap, "customerId", s.CustomerID) populate(objectMap, "displayName", s.DisplayName) - populateTimeRFC3339(objectMap, "expiryDateTime", s.ExpiryDateTime) + populateDateTimeRFC3339(objectMap, "expiryDateTime", s.ExpiryDateTime) populate(objectMap, "extendedStatusInfo", s.ExtendedStatusInfo) populate(objectMap, "planInformation", s.PlanInformation) populate(objectMap, "provisioningState", s.ProvisioningState) @@ -1316,7 +1315,7 @@ func (s *SavingsPlanOrderModelProperties) UnmarshalJSON(data []byte) error { var err error switch key { case "benefitStartTime": - err = unpopulateTimeRFC3339(val, "BenefitStartTime", &s.BenefitStartTime) + err = unpopulateDateTimeRFC3339(val, "BenefitStartTime", &s.BenefitStartTime) delete(rawMsg, key) case "billingAccountId": err = unpopulate(val, "BillingAccountID", &s.BillingAccountID) @@ -1337,7 +1336,7 @@ func (s *SavingsPlanOrderModelProperties) UnmarshalJSON(data []byte) error { err = unpopulate(val, "DisplayName", &s.DisplayName) delete(rawMsg, key) case "expiryDateTime": - err = unpopulateTimeRFC3339(val, "ExpiryDateTime", &s.ExpiryDateTime) + err = unpopulateDateTimeRFC3339(val, "ExpiryDateTime", &s.ExpiryDateTime) delete(rawMsg, key) case "extendedStatusInfo": err = unpopulate(val, "ExtendedStatusInfo", &s.ExtendedStatusInfo) @@ -1645,10 +1644,10 @@ func (s *SavingsPlanValidateResponse) UnmarshalJSON(data []byte) error { // MarshalJSON implements the json.Marshaller interface for type SystemData. func (s SystemData) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populateTimeRFC3339(objectMap, "createdAt", s.CreatedAt) + populateDateTimeRFC3339(objectMap, "createdAt", s.CreatedAt) populate(objectMap, "createdBy", s.CreatedBy) populate(objectMap, "createdByType", s.CreatedByType) - populateTimeRFC3339(objectMap, "lastModifiedAt", s.LastModifiedAt) + populateDateTimeRFC3339(objectMap, "lastModifiedAt", s.LastModifiedAt) populate(objectMap, "lastModifiedBy", s.LastModifiedBy) populate(objectMap, "lastModifiedByType", s.LastModifiedByType) return json.Marshal(objectMap) @@ -1664,7 +1663,7 @@ func (s *SystemData) UnmarshalJSON(data []byte) error { var err error switch key { case "createdAt": - err = unpopulateTimeRFC3339(val, "CreatedAt", &s.CreatedAt) + err = unpopulateDateTimeRFC3339(val, "CreatedAt", &s.CreatedAt) delete(rawMsg, key) case "createdBy": err = unpopulate(val, "CreatedBy", &s.CreatedBy) @@ -1673,7 +1672,7 @@ func (s *SystemData) UnmarshalJSON(data []byte) error { err = unpopulate(val, "CreatedByType", &s.CreatedByType) delete(rawMsg, key) case "lastModifiedAt": - err = unpopulateTimeRFC3339(val, "LastModifiedAt", &s.LastModifiedAt) + err = unpopulateDateTimeRFC3339(val, "LastModifiedAt", &s.LastModifiedAt) delete(rawMsg, key) case "lastModifiedBy": err = unpopulate(val, "LastModifiedBy", &s.LastModifiedBy) diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/operations_client.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/operations_client.go index 5044696d078c..5ba91ae7ba9d 100644 --- a/sdk/resourcemanager/billingbenefits/armbillingbenefits/operations_client.go +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/operations_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbillingbenefits @@ -28,7 +27,7 @@ type OperationsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewOperationsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*OperationsClient, error) { - cl, err := arm.NewClient(moduleName+".OperationsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -48,25 +47,20 @@ func (client *OperationsClient) NewListPager(options *OperationsClientListOption return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *OperationsClientListResponse) (OperationsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "OperationsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return OperationsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return OperationsClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return OperationsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/options.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/options.go new file mode 100644 index 000000000000..ffd3a44abd73 --- /dev/null +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/options.go @@ -0,0 +1,105 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package armbillingbenefits + +// OperationsClientListOptions contains the optional parameters for the OperationsClient.NewListPager method. +type OperationsClientListOptions struct { + // placeholder for future optional parameters +} + +// RPClientValidatePurchaseOptions contains the optional parameters for the RPClient.ValidatePurchase method. +type RPClientValidatePurchaseOptions struct { + // placeholder for future optional parameters +} + +// ReservationOrderAliasClientBeginCreateOptions contains the optional parameters for the ReservationOrderAliasClient.BeginCreate +// method. +type ReservationOrderAliasClientBeginCreateOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// ReservationOrderAliasClientGetOptions contains the optional parameters for the ReservationOrderAliasClient.Get method. +type ReservationOrderAliasClientGetOptions struct { + // placeholder for future optional parameters +} + +// SavingsPlanClientGetOptions contains the optional parameters for the SavingsPlanClient.Get method. +type SavingsPlanClientGetOptions struct { + // May be used to expand the detail information of some properties. + Expand *string +} + +// SavingsPlanClientListAllOptions contains the optional parameters for the SavingsPlanClient.NewListAllPager method. +type SavingsPlanClientListAllOptions struct { + // May be used to filter by reservation properties. The filter supports 'eq', 'or', and 'and'. It does not currently support + // 'ne', 'gt', 'le', 'ge', or 'not'. Reservation properties include sku/name, + // properties/{appliedScopeType, archived, displayName, displayProvisioningState, effectiveDateTime, expiryDate, provisioningState, + // quantity, renew, reservedResourceType, term, + // userFriendlyAppliedScopeType, userFriendlyRenewState} + Filter *string + + // May be used to sort order by reservation properties. + Orderby *string + + // To indicate whether to refresh the roll up counts of the savings plans group by provisioning states + RefreshSummary *string + + // The selected provisioning state + SelectedState *string + + // The number of savings plans to skip from the list before returning results + Skiptoken *float32 + + // To number of savings plans to return + Take *float32 +} + +// SavingsPlanClientListOptions contains the optional parameters for the SavingsPlanClient.NewListPager method. +type SavingsPlanClientListOptions struct { + // placeholder for future optional parameters +} + +// SavingsPlanClientUpdateOptions contains the optional parameters for the SavingsPlanClient.Update method. +type SavingsPlanClientUpdateOptions struct { + // placeholder for future optional parameters +} + +// SavingsPlanClientValidateUpdateOptions contains the optional parameters for the SavingsPlanClient.ValidateUpdate method. +type SavingsPlanClientValidateUpdateOptions struct { + // placeholder for future optional parameters +} + +// SavingsPlanOrderAliasClientBeginCreateOptions contains the optional parameters for the SavingsPlanOrderAliasClient.BeginCreate +// method. +type SavingsPlanOrderAliasClientBeginCreateOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// SavingsPlanOrderAliasClientGetOptions contains the optional parameters for the SavingsPlanOrderAliasClient.Get method. +type SavingsPlanOrderAliasClientGetOptions struct { + // placeholder for future optional parameters +} + +// SavingsPlanOrderClientElevateOptions contains the optional parameters for the SavingsPlanOrderClient.Elevate method. +type SavingsPlanOrderClientElevateOptions struct { + // placeholder for future optional parameters +} + +// SavingsPlanOrderClientGetOptions contains the optional parameters for the SavingsPlanOrderClient.Get method. +type SavingsPlanOrderClientGetOptions struct { + // May be used to expand the detail information of some properties. + Expand *string +} + +// SavingsPlanOrderClientListOptions contains the optional parameters for the SavingsPlanOrderClient.NewListPager method. +type SavingsPlanOrderClientListOptions struct { + // placeholder for future optional parameters +} diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/reservationorderalias_client.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/reservationorderalias_client.go index 434f9a6ee8ad..2e34b2796497 100644 --- a/sdk/resourcemanager/billingbenefits/armbillingbenefits/reservationorderalias_client.go +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/reservationorderalias_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbillingbenefits @@ -31,7 +30,7 @@ type ReservationOrderAliasClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewReservationOrderAliasClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*ReservationOrderAliasClient, error) { - cl, err := arm.NewClient(moduleName+".ReservationOrderAliasClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -55,11 +54,15 @@ func (client *ReservationOrderAliasClient) BeginCreate(ctx context.Context, rese if err != nil { return nil, err } - return runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[ReservationOrderAliasClientCreateResponse]{ + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[ReservationOrderAliasClientCreateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[ReservationOrderAliasClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[ReservationOrderAliasClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -68,18 +71,24 @@ func (client *ReservationOrderAliasClient) BeginCreate(ctx context.Context, rese // // Generated from API version 2022-11-01 func (client *ReservationOrderAliasClient) create(ctx context.Context, reservationOrderAliasName string, body ReservationOrderAliasRequest, options *ReservationOrderAliasClientBeginCreateOptions) (*http.Response, error) { + var err error + const operationName = "ReservationOrderAliasClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, reservationOrderAliasName, body, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusCreated) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusCreated) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // createCreateRequest creates the Create request. @@ -97,7 +106,10 @@ func (client *ReservationOrderAliasClient) createCreateRequest(ctx context.Conte reqQP.Set("api-version", "2022-11-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, body) + if err := runtime.MarshalAsJSON(req, body); err != nil { + return nil, err + } + return req, nil } // Get - Get a reservation order alias. @@ -108,18 +120,25 @@ func (client *ReservationOrderAliasClient) createCreateRequest(ctx context.Conte // - options - ReservationOrderAliasClientGetOptions contains the optional parameters for the ReservationOrderAliasClient.Get // method. func (client *ReservationOrderAliasClient) Get(ctx context.Context, reservationOrderAliasName string, options *ReservationOrderAliasClientGetOptions) (ReservationOrderAliasClientGetResponse, error) { + var err error + const operationName = "ReservationOrderAliasClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, reservationOrderAliasName, options) if err != nil { return ReservationOrderAliasClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return ReservationOrderAliasClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ReservationOrderAliasClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return ReservationOrderAliasClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/response_types.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/response_types.go index c2e4444e4267..c1fff9452532 100644 --- a/sdk/resourcemanager/billingbenefits/armbillingbenefits/response_types.go +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/response_types.go @@ -3,14 +3,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbillingbenefits // OperationsClientListResponse contains the response from method OperationsClient.NewListPager. type OperationsClientListResponse struct { + // A list of REST API operations supported by an Azure Resource Provider. It contains an URL link to get the next set of results. OperationListResult } @@ -21,16 +21,19 @@ type RPClientValidatePurchaseResponse struct { // ReservationOrderAliasClientCreateResponse contains the response from method ReservationOrderAliasClient.BeginCreate. type ReservationOrderAliasClientCreateResponse struct { + // Reservation order alias ReservationOrderAliasResponse } // ReservationOrderAliasClientGetResponse contains the response from method ReservationOrderAliasClient.Get. type ReservationOrderAliasClientGetResponse struct { + // Reservation order alias ReservationOrderAliasResponse } // SavingsPlanClientGetResponse contains the response from method SavingsPlanClient.Get. type SavingsPlanClientGetResponse struct { + // Savings plan SavingsPlanModel } @@ -46,7 +49,9 @@ type SavingsPlanClientListResponse struct { // SavingsPlanClientUpdateResponse contains the response from method SavingsPlanClient.Update. type SavingsPlanClientUpdateResponse struct { + // Savings plan SavingsPlanModel + // Location contains the information returned from the Location header response. Location *string } @@ -58,21 +63,25 @@ type SavingsPlanClientValidateUpdateResponse struct { // SavingsPlanOrderAliasClientCreateResponse contains the response from method SavingsPlanOrderAliasClient.BeginCreate. type SavingsPlanOrderAliasClientCreateResponse struct { + // Savings plan order alias SavingsPlanOrderAliasModel } // SavingsPlanOrderAliasClientGetResponse contains the response from method SavingsPlanOrderAliasClient.Get. type SavingsPlanOrderAliasClientGetResponse struct { + // Savings plan order alias SavingsPlanOrderAliasModel } // SavingsPlanOrderClientElevateResponse contains the response from method SavingsPlanOrderClient.Elevate. type SavingsPlanOrderClientElevateResponse struct { + // Role assignment entity RoleAssignmentEntity } // SavingsPlanOrderClientGetResponse contains the response from method SavingsPlanOrderClient.Get. type SavingsPlanOrderClientGetResponse struct { + // Savings plan order SavingsPlanOrderModel } diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/rp_client.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/rp_client.go index a3c74fd2d141..36ab52da3413 100644 --- a/sdk/resourcemanager/billingbenefits/armbillingbenefits/rp_client.go +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/rp_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbillingbenefits @@ -28,7 +27,7 @@ type RPClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewRPClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*RPClient, error) { - cl, err := arm.NewClient(moduleName+".RPClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -45,18 +44,25 @@ func NewRPClient(credential azcore.TokenCredential, options *arm.ClientOptions) // - body - Request body for validating the purchase of a savings plan // - options - RPClientValidatePurchaseOptions contains the optional parameters for the RPClient.ValidatePurchase method. func (client *RPClient) ValidatePurchase(ctx context.Context, body SavingsPlanPurchaseValidateRequest, options *RPClientValidatePurchaseOptions) (RPClientValidatePurchaseResponse, error) { + var err error + const operationName = "RPClient.ValidatePurchase" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.validatePurchaseCreateRequest(ctx, body, options) if err != nil { return RPClientValidatePurchaseResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return RPClientValidatePurchaseResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return RPClientValidatePurchaseResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return RPClientValidatePurchaseResponse{}, err } - return client.validatePurchaseHandleResponse(resp) + resp, err := client.validatePurchaseHandleResponse(httpResp) + return resp, err } // validatePurchaseCreateRequest creates the ValidatePurchase request. @@ -70,7 +76,10 @@ func (client *RPClient) validatePurchaseCreateRequest(ctx context.Context, body reqQP.Set("api-version", "2022-11-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, body) + if err := runtime.MarshalAsJSON(req, body); err != nil { + return nil, err + } + return req, nil } // validatePurchaseHandleResponse handles the ValidatePurchase response. diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/savingsplan_client.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/savingsplan_client.go index f81520a2efba..46240f0f4c9e 100644 --- a/sdk/resourcemanager/billingbenefits/armbillingbenefits/savingsplan_client.go +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/savingsplan_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbillingbenefits @@ -32,7 +31,7 @@ type SavingsPlanClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewSavingsPlanClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*SavingsPlanClient, error) { - cl, err := arm.NewClient(moduleName+".SavingsPlanClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -50,18 +49,25 @@ func NewSavingsPlanClient(credential azcore.TokenCredential, options *arm.Client // - savingsPlanID - ID of the savings plan // - options - SavingsPlanClientGetOptions contains the optional parameters for the SavingsPlanClient.Get method. func (client *SavingsPlanClient) Get(ctx context.Context, savingsPlanOrderID string, savingsPlanID string, options *SavingsPlanClientGetOptions) (SavingsPlanClientGetResponse, error) { + var err error + const operationName = "SavingsPlanClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, savingsPlanOrderID, savingsPlanID, options) if err != nil { return SavingsPlanClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return SavingsPlanClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return SavingsPlanClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return SavingsPlanClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -109,25 +115,20 @@ func (client *SavingsPlanClient) NewListPager(savingsPlanOrderID string, options return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *SavingsPlanClientListResponse) (SavingsPlanClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, savingsPlanOrderID, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "SavingsPlanClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, savingsPlanOrderID, options) + }, nil) if err != nil { return SavingsPlanClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return SavingsPlanClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return SavingsPlanClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -168,25 +169,20 @@ func (client *SavingsPlanClient) NewListAllPager(options *SavingsPlanClientListA return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *SavingsPlanClientListAllResponse) (SavingsPlanClientListAllResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listAllCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "SavingsPlanClient.NewListAllPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listAllCreateRequest(ctx, options) + }, nil) if err != nil { return SavingsPlanClientListAllResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return SavingsPlanClientListAllResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return SavingsPlanClientListAllResponse{}, runtime.NewResponseError(resp) - } return client.listAllHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -240,18 +236,25 @@ func (client *SavingsPlanClient) listAllHandleResponse(resp *http.Response) (Sav // - body - Request body for patching a savings plan order alias // - options - SavingsPlanClientUpdateOptions contains the optional parameters for the SavingsPlanClient.Update method. func (client *SavingsPlanClient) Update(ctx context.Context, savingsPlanOrderID string, savingsPlanID string, body SavingsPlanUpdateRequest, options *SavingsPlanClientUpdateOptions) (SavingsPlanClientUpdateResponse, error) { + var err error + const operationName = "SavingsPlanClient.Update" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, savingsPlanOrderID, savingsPlanID, body, options) if err != nil { return SavingsPlanClientUpdateResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return SavingsPlanClientUpdateResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusAccepted) { - return SavingsPlanClientUpdateResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted) { + err = runtime.NewResponseError(httpResp) + return SavingsPlanClientUpdateResponse{}, err } - return client.updateHandleResponse(resp) + resp, err := client.updateHandleResponse(httpResp) + return resp, err } // updateCreateRequest creates the Update request. @@ -273,7 +276,10 @@ func (client *SavingsPlanClient) updateCreateRequest(ctx context.Context, saving reqQP.Set("api-version", "2022-11-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, body) + if err := runtime.MarshalAsJSON(req, body); err != nil { + return nil, err + } + return req, nil } // updateHandleResponse handles the Update response. @@ -298,18 +304,25 @@ func (client *SavingsPlanClient) updateHandleResponse(resp *http.Response) (Savi // - options - SavingsPlanClientValidateUpdateOptions contains the optional parameters for the SavingsPlanClient.ValidateUpdate // method. func (client *SavingsPlanClient) ValidateUpdate(ctx context.Context, savingsPlanOrderID string, savingsPlanID string, body SavingsPlanUpdateValidateRequest, options *SavingsPlanClientValidateUpdateOptions) (SavingsPlanClientValidateUpdateResponse, error) { + var err error + const operationName = "SavingsPlanClient.ValidateUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.validateUpdateCreateRequest(ctx, savingsPlanOrderID, savingsPlanID, body, options) if err != nil { return SavingsPlanClientValidateUpdateResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return SavingsPlanClientValidateUpdateResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return SavingsPlanClientValidateUpdateResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return SavingsPlanClientValidateUpdateResponse{}, err } - return client.validateUpdateHandleResponse(resp) + resp, err := client.validateUpdateHandleResponse(httpResp) + return resp, err } // validateUpdateCreateRequest creates the ValidateUpdate request. @@ -331,7 +344,10 @@ func (client *SavingsPlanClient) validateUpdateCreateRequest(ctx context.Context reqQP.Set("api-version", "2022-11-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, body) + if err := runtime.MarshalAsJSON(req, body); err != nil { + return nil, err + } + return req, nil } // validateUpdateHandleResponse handles the ValidateUpdate response. diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/savingsplan_client_example_test.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/savingsplan_client_example_test.go index b263cc85bf82..fa6d2fa6dcd1 100644 --- a/sdk/resourcemanager/billingbenefits/armbillingbenefits/savingsplan_client_example_test.go +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/savingsplan_client_example_test.go @@ -61,10 +61,10 @@ func ExampleSavingsPlanClient_NewListPager() { // }, // DisplayName: to.Ptr("Compute_SavingsPlan_10-24-2022_15-44"), // DisplayProvisioningState: to.Ptr("Succeeded"), - // EffectiveDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2022-10-24T22:47:04.8539493Z"); return t}()), - // ExpiryDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2023-10-24T22:47:04.6196635Z"); return t}()), + // EffectiveDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2022-10-24T22:47:04.853Z"); return t}()), + // ExpiryDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2023-10-24T22:47:04.619Z"); return t}()), // ProvisioningState: to.Ptr(armbillingbenefits.ProvisioningStateSucceeded), - // PurchaseDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2022-10-24T22:45:13.6202486Z"); return t}()), + // PurchaseDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2022-10-24T22:45:13.620Z"); return t}()), // Renew: to.Ptr(false), // Term: to.Ptr(armbillingbenefits.TermP1Y), // UserFriendlyAppliedScopeType: to.Ptr("ResourceGroup"), @@ -164,10 +164,10 @@ func ExampleSavingsPlanClient_NewListAllPager() { // }, // DisplayName: to.Ptr("Compute_SavingsPlan_10-19-2022_11-03"), // DisplayProvisioningState: to.Ptr("Succeeded"), - // EffectiveDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2022-10-19T18:05:37.1034288Z"); return t}()), - // ExpiryDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2023-10-19T18:05:36.5252231Z"); return t}()), + // EffectiveDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2022-10-19T18:05:37.103Z"); return t}()), + // ExpiryDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2023-10-19T18:05:36.525Z"); return t}()), // ProvisioningState: to.Ptr(armbillingbenefits.ProvisioningStateSucceeded), - // PurchaseDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2022-10-19T18:03:56.4032132Z"); return t}()), + // PurchaseDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2022-10-19T18:03:56.403Z"); return t}()), // Renew: to.Ptr(false), // Term: to.Ptr(armbillingbenefits.TermP1Y), // UserFriendlyAppliedScopeType: to.Ptr("Single"), @@ -237,10 +237,10 @@ func ExampleSavingsPlanClient_Get_savingsPlanItemGet() { // }, // DisplayName: to.Ptr("Compute_SavingsPlan_patch_rename2"), // DisplayProvisioningState: to.Ptr("Succeeded"), - // EffectiveDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2022-10-21T18:15:42.4098626Z"); return t}()), - // ExpiryDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2025-10-18T21:16:13.1854959Z"); return t}()), + // EffectiveDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2022-10-21T18:15:42.409Z"); return t}()), + // ExpiryDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2025-10-18T21:16:13.185Z"); return t}()), // ProvisioningState: to.Ptr(armbillingbenefits.ProvisioningStateSucceeded), - // PurchaseDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2022-10-18T21:14:26.8279361Z"); return t}()), + // PurchaseDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2022-10-18T21:14:26.827Z"); return t}()), // Renew: to.Ptr(true), // Term: to.Ptr(armbillingbenefits.TermP3Y), // UserFriendlyAppliedScopeType: to.Ptr("Shared"), @@ -308,10 +308,10 @@ func ExampleSavingsPlanClient_Get_savingsPlanItemWithExpandedRenewPropertiesGet( // }, // DisplayName: to.Ptr("Compute_SavingsPlan_patch_rename2"), // DisplayProvisioningState: to.Ptr("Succeeded"), - // EffectiveDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2022-10-21T18:15:42.4098626Z"); return t}()), - // ExpiryDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2025-10-18T21:16:13.1854959Z"); return t}()), + // EffectiveDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2022-10-21T18:15:42.409Z"); return t}()), + // ExpiryDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2025-10-18T21:16:13.185Z"); return t}()), // ProvisioningState: to.Ptr(armbillingbenefits.ProvisioningStateSucceeded), - // PurchaseDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2022-10-18T21:14:26.8279361Z"); return t}()), + // PurchaseDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2022-10-18T21:14:26.827Z"); return t}()), // Renew: to.Ptr(true), // RenewProperties: &armbillingbenefits.RenewProperties{ // PurchaseProperties: &armbillingbenefits.PurchaseRequest{ @@ -423,7 +423,7 @@ func ExampleSavingsPlanClient_Update() { // SubscriptionID: to.Ptr("/subscriptions/10000000-0000-0000-0000-000000000000"), // }, // AppliedScopeType: to.Ptr(armbillingbenefits.AppliedScopeTypeSingle), - // BenefitStartTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2022-10-27T00:34:33.6697600Z"); return t}()), + // BenefitStartTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2022-10-27T00:34:33.669Z"); return t}()), // BillingAccountID: to.Ptr("/providers/Microsoft.Billing/billingAccounts/20000000-1000-0000-0000-000000000000:20000000-0000-3000-0000-000000000000_2019-05-31"), // BillingPlan: to.Ptr(armbillingbenefits.BillingPlanP1M), // BillingProfileID: to.Ptr("/providers/Microsoft.Billing/billingAccounts/20000000-1000-0000-0000-000000000000:20000000-0000-3000-0000-000000000000_2019-05-31/billingProfiles/KPSV-DWNE-BG7-TGB"), @@ -435,10 +435,10 @@ func ExampleSavingsPlanClient_Update() { // }, // DisplayName: to.Ptr("riName"), // DisplayProvisioningState: to.Ptr("Succeeded"), - // EffectiveDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2022-11-10T00:12:54.549373Z"); return t}()), - // ExpiryDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2025-10-27T00:34:33.6697600Z"); return t}()), + // EffectiveDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2022-11-10T00:12:54.549Z"); return t}()), + // ExpiryDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2025-10-27T00:34:33.669Z"); return t}()), // ProvisioningState: to.Ptr(armbillingbenefits.ProvisioningStateSucceeded), - // PurchaseDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2022-10-27T00:32:45.5823486Z"); return t}()), + // PurchaseDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2022-10-27T00:32:45.582Z"); return t}()), // Renew: to.Ptr(true), // Term: to.Ptr(armbillingbenefits.TermP3Y), // UserFriendlyAppliedScopeType: to.Ptr("Single"), diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/savingsplanorder_client.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/savingsplanorder_client.go index 674f3bd24d6c..ce89f341c109 100644 --- a/sdk/resourcemanager/billingbenefits/armbillingbenefits/savingsplanorder_client.go +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/savingsplanorder_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbillingbenefits @@ -31,7 +30,7 @@ type SavingsPlanOrderClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewSavingsPlanOrderClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*SavingsPlanOrderClient, error) { - cl, err := arm.NewClient(moduleName+".SavingsPlanOrderClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -49,18 +48,25 @@ func NewSavingsPlanOrderClient(credential azcore.TokenCredential, options *arm.C // - options - SavingsPlanOrderClientElevateOptions contains the optional parameters for the SavingsPlanOrderClient.Elevate // method. func (client *SavingsPlanOrderClient) Elevate(ctx context.Context, savingsPlanOrderID string, options *SavingsPlanOrderClientElevateOptions) (SavingsPlanOrderClientElevateResponse, error) { + var err error + const operationName = "SavingsPlanOrderClient.Elevate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.elevateCreateRequest(ctx, savingsPlanOrderID, options) if err != nil { return SavingsPlanOrderClientElevateResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return SavingsPlanOrderClientElevateResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return SavingsPlanOrderClientElevateResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return SavingsPlanOrderClientElevateResponse{}, err } - return client.elevateHandleResponse(resp) + resp, err := client.elevateHandleResponse(httpResp) + return resp, err } // elevateCreateRequest creates the Elevate request. @@ -97,18 +103,25 @@ func (client *SavingsPlanOrderClient) elevateHandleResponse(resp *http.Response) // - savingsPlanOrderID - Order ID of the savings plan // - options - SavingsPlanOrderClientGetOptions contains the optional parameters for the SavingsPlanOrderClient.Get method. func (client *SavingsPlanOrderClient) Get(ctx context.Context, savingsPlanOrderID string, options *SavingsPlanOrderClientGetOptions) (SavingsPlanOrderClientGetResponse, error) { + var err error + const operationName = "SavingsPlanOrderClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, savingsPlanOrderID, options) if err != nil { return SavingsPlanOrderClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return SavingsPlanOrderClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return SavingsPlanOrderClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return SavingsPlanOrderClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -152,25 +165,20 @@ func (client *SavingsPlanOrderClient) NewListPager(options *SavingsPlanOrderClie return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *SavingsPlanOrderClientListResponse) (SavingsPlanOrderClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return SavingsPlanOrderClientListResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "SavingsPlanOrderClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return SavingsPlanOrderClientListResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return SavingsPlanOrderClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/savingsplanorder_client_example_test.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/savingsplanorder_client_example_test.go index 64efa388a118..56395c67a46d 100644 --- a/sdk/resourcemanager/billingbenefits/armbillingbenefits/savingsplanorder_client_example_test.go +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/savingsplanorder_client_example_test.go @@ -46,7 +46,7 @@ func ExampleSavingsPlanOrderClient_Get_savingsPlanOrderGet() { // BillingProfileID: to.Ptr("/providers/Microsoft.Billing/billingAccounts/20000000-1000-0000-0000-000000000000:20000000-0000-3000-0000-000000000000_2019-05-31/billingProfiles/KPSV-DWNE-BG7-TGB"), // BillingScopeID: to.Ptr("20000000-0000-0000-0000-000000000005"), // DisplayName: to.Ptr("Compute_SavingsPlan_10-19-2022_11-01"), - // ExpiryDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2025-10-19T18:03:55.2519794Z"); return t}()), + // ExpiryDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2025-10-19T18:03:55.251Z"); return t}()), // ProvisioningState: to.Ptr(armbillingbenefits.ProvisioningStateSucceeded), // SavingsPlans: []*string{ // to.Ptr("/providers/Microsoft.BillingBenefits/savingsPlanOrders/20000000-0000-0000-0000-000000000000/savingsPlans/30000000-0000-0000-0000-000000000000")}, @@ -86,7 +86,7 @@ func ExampleSavingsPlanOrderClient_Get_savingsPlanOrderWithExpandedPaymentsGet() // BillingProfileID: to.Ptr("/providers/Microsoft.Billing/billingAccounts/20000000-1000-0000-0000-000000000000:20000000-0000-3000-0000-000000000000_2019-05-31/billingProfiles/KPSV-DWNE-BG7-TGB"), // BillingScopeID: to.Ptr("/providers/Microsoft.Billing/billingAccounts/1234567/billingSubscriptions/30000000-0000-0000-0000-000000000003"), // DisplayName: to.Ptr("Compute_SavingsPlan_10-19-2022_11-01"), - // ExpiryDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2025-10-19T18:03:55.2519794Z"); return t}()), + // ExpiryDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2025-10-19T18:03:55.251Z"); return t}()), // PlanInformation: &armbillingbenefits.BillingPlanInformation{ // NextPaymentDueDate: to.Ptr(func() time.Time { t, _ := time.Parse("2006-01-02", "2022-11-19"); return t}()), // PricingCurrencyTotal: &armbillingbenefits.Price{ @@ -463,7 +463,7 @@ func ExampleSavingsPlanOrderClient_NewListPager() { // BillingProfileID: to.Ptr("/providers/Microsoft.Billing/billingAccounts/20000000-1000-0000-0000-000000000004:20000000-0000-3000-0000-000000000000_2019-05-31/billingProfiles/KPSV-DWNE-BG7-TGB"), // BillingScopeID: to.Ptr("20000000-0000-0000-0000-000000000005"), // DisplayName: to.Ptr("Compute_SavingsPlan_10-28-2022_16-38"), - // ExpiryDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2025-10-28T23:40:30.6028303Z"); return t}()), + // ExpiryDateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2025-10-28T23:40:30.602Z"); return t}()), // ProvisioningState: to.Ptr(armbillingbenefits.ProvisioningStateSucceeded), // SavingsPlans: []*string{ // to.Ptr("/providers/Microsoft.BillingBenefits/savingsPlanOrders/20000000-0000-0000-0000-000000000000/savingsPlans/20000000-0000-0000-0000-000000000001")}, diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/savingsplanorderalias_client.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/savingsplanorderalias_client.go index 126ac00e0675..a83d6c2c225a 100644 --- a/sdk/resourcemanager/billingbenefits/armbillingbenefits/savingsplanorderalias_client.go +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/savingsplanorderalias_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbillingbenefits @@ -31,7 +30,7 @@ type SavingsPlanOrderAliasClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewSavingsPlanOrderAliasClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*SavingsPlanOrderAliasClient, error) { - cl, err := arm.NewClient(moduleName+".SavingsPlanOrderAliasClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -55,11 +54,15 @@ func (client *SavingsPlanOrderAliasClient) BeginCreate(ctx context.Context, savi if err != nil { return nil, err } - return runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[SavingsPlanOrderAliasClientCreateResponse]{ + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[SavingsPlanOrderAliasClientCreateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[SavingsPlanOrderAliasClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[SavingsPlanOrderAliasClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -68,18 +71,24 @@ func (client *SavingsPlanOrderAliasClient) BeginCreate(ctx context.Context, savi // // Generated from API version 2022-11-01 func (client *SavingsPlanOrderAliasClient) create(ctx context.Context, savingsPlanOrderAliasName string, body SavingsPlanOrderAliasModel, options *SavingsPlanOrderAliasClientBeginCreateOptions) (*http.Response, error) { + var err error + const operationName = "SavingsPlanOrderAliasClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, savingsPlanOrderAliasName, body, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusCreated) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusCreated) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // createCreateRequest creates the Create request. @@ -97,7 +106,10 @@ func (client *SavingsPlanOrderAliasClient) createCreateRequest(ctx context.Conte reqQP.Set("api-version", "2022-11-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, body) + if err := runtime.MarshalAsJSON(req, body); err != nil { + return nil, err + } + return req, nil } // Get - Get a savings plan. @@ -108,18 +120,25 @@ func (client *SavingsPlanOrderAliasClient) createCreateRequest(ctx context.Conte // - options - SavingsPlanOrderAliasClientGetOptions contains the optional parameters for the SavingsPlanOrderAliasClient.Get // method. func (client *SavingsPlanOrderAliasClient) Get(ctx context.Context, savingsPlanOrderAliasName string, options *SavingsPlanOrderAliasClientGetOptions) (SavingsPlanOrderAliasClientGetResponse, error) { + var err error + const operationName = "SavingsPlanOrderAliasClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, savingsPlanOrderAliasName, options) if err != nil { return SavingsPlanOrderAliasClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return SavingsPlanOrderAliasClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return SavingsPlanOrderAliasClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return SavingsPlanOrderAliasClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. diff --git a/sdk/resourcemanager/billingbenefits/armbillingbenefits/time_rfc3339.go b/sdk/resourcemanager/billingbenefits/armbillingbenefits/time_rfc3339.go index 9e0aa2f2f945..f1fc4176255a 100644 --- a/sdk/resourcemanager/billingbenefits/armbillingbenefits/time_rfc3339.go +++ b/sdk/resourcemanager/billingbenefits/armbillingbenefits/time_rfc3339.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbillingbenefits @@ -19,50 +18,50 @@ import ( "time" ) -const ( - utcLayoutJSON = `"2006-01-02T15:04:05.999999999"` - utcLayout = "2006-01-02T15:04:05.999999999" - rfc3339JSON = `"` + time.RFC3339Nano + `"` -) - // Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases. var tzOffsetRegex = regexp.MustCompile(`(Z|z|\+|-)(\d+:\d+)*"*$`) -type timeRFC3339 time.Time +const ( + utcDateTimeJSON = `"2006-01-02T15:04:05.999999999"` + utcDateTime = "2006-01-02T15:04:05.999999999" + dateTimeJSON = `"` + time.RFC3339Nano + `"` +) + +type dateTimeRFC3339 time.Time -func (t timeRFC3339) MarshalJSON() (json []byte, err error) { +func (t dateTimeRFC3339) MarshalJSON() ([]byte, error) { tt := time.Time(t) return tt.MarshalJSON() } -func (t timeRFC3339) MarshalText() (text []byte, err error) { +func (t dateTimeRFC3339) MarshalText() ([]byte, error) { tt := time.Time(t) return tt.MarshalText() } -func (t *timeRFC3339) UnmarshalJSON(data []byte) error { - layout := utcLayoutJSON +func (t *dateTimeRFC3339) UnmarshalJSON(data []byte) error { + layout := utcDateTimeJSON if tzOffsetRegex.Match(data) { - layout = rfc3339JSON + layout = dateTimeJSON } return t.Parse(layout, string(data)) } -func (t *timeRFC3339) UnmarshalText(data []byte) (err error) { - layout := utcLayout +func (t *dateTimeRFC3339) UnmarshalText(data []byte) error { + layout := utcDateTime if tzOffsetRegex.Match(data) { layout = time.RFC3339Nano } return t.Parse(layout, string(data)) } -func (t *timeRFC3339) Parse(layout, value string) error { +func (t *dateTimeRFC3339) Parse(layout, value string) error { p, err := time.Parse(layout, strings.ToUpper(value)) - *t = timeRFC3339(p) + *t = dateTimeRFC3339(p) return err } -func populateTimeRFC3339(m map[string]any, k string, t *time.Time) { +func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) { if t == nil { return } else if azcore.IsNullValue(t) { @@ -71,14 +70,14 @@ func populateTimeRFC3339(m map[string]any, k string, t *time.Time) { } else if reflect.ValueOf(t).IsNil() { return } - m[k] = (*timeRFC3339)(t) + m[k] = (*dateTimeRFC3339)(t) } -func unpopulateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { +func unpopulateDateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { if data == nil || strings.EqualFold(string(data), "null") { return nil } - var aux timeRFC3339 + var aux dateTimeRFC3339 if err := json.Unmarshal(data, &aux); err != nil { return fmt.Errorf("struct field %s: %v", fn, err) } From 94d752eee53030ab15695e0ff4b58a8affda9314 Mon Sep 17 00:00:00 2001 From: Alancere <804873052@qq.com> Date: Tue, 21 Nov 2023 16:06:18 +0800 Subject: [PATCH 03/10] [Release] sdk/resourcemanager/blockchain/armblockchain/0.7.0 generation from spec commit: 164375e67a1bffb207bcf603772c289dbe42d7b5 --- .../blockchain/armblockchain/CHANGELOG.md | 6 + .../blockchain/armblockchain/README.md | 7 + .../blockchain/armblockchain/autorest.md | 2 +- .../armblockchain/client_factory.go | 19 +- .../blockchain/armblockchain/constants.go | 7 +- .../blockchain/armblockchain/fake/internal.go | 64 +++ .../armblockchain/fake/locations_server.go | 142 +++++ .../fake/memberoperationresults_server.go | 100 ++++ .../armblockchain/fake/members_server.go | 490 ++++++++++++++++++ .../armblockchain/fake/operations_server.go | 96 ++++ .../armblockchain/fake/server_factory.go | 104 ++++ .../armblockchain/fake/skus_server.go | 91 ++++ .../armblockchain/fake/time_rfc3339.go | 86 +++ .../fake/transactionnodes_server.go | 428 +++++++++++++++ .../blockchain/armblockchain/go.mod | 20 +- .../blockchain/armblockchain/go.sum | 46 +- .../armblockchain/locations_client.go | 40 +- .../memberoperationresults_client.go | 20 +- .../armblockchain/members_client.go | 189 ++++--- .../blockchain/armblockchain/models.go | 321 ++++-------- .../blockchain/armblockchain/models_serde.go | 19 +- .../armblockchain/operations_client.go | 26 +- .../blockchain/armblockchain/options.go | 133 +++++ .../armblockchain/response_types.go | 22 +- .../blockchain/armblockchain/skus_client.go | 20 +- .../blockchain/armblockchain/time_rfc3339.go | 43 +- .../armblockchain/transactionnodes_client.go | 147 ++++-- 27 files changed, 2225 insertions(+), 463 deletions(-) create mode 100644 sdk/resourcemanager/blockchain/armblockchain/fake/internal.go create mode 100644 sdk/resourcemanager/blockchain/armblockchain/fake/locations_server.go create mode 100644 sdk/resourcemanager/blockchain/armblockchain/fake/memberoperationresults_server.go create mode 100644 sdk/resourcemanager/blockchain/armblockchain/fake/members_server.go create mode 100644 sdk/resourcemanager/blockchain/armblockchain/fake/operations_server.go create mode 100644 sdk/resourcemanager/blockchain/armblockchain/fake/server_factory.go create mode 100644 sdk/resourcemanager/blockchain/armblockchain/fake/skus_server.go create mode 100644 sdk/resourcemanager/blockchain/armblockchain/fake/time_rfc3339.go create mode 100644 sdk/resourcemanager/blockchain/armblockchain/fake/transactionnodes_server.go create mode 100644 sdk/resourcemanager/blockchain/armblockchain/options.go diff --git a/sdk/resourcemanager/blockchain/armblockchain/CHANGELOG.md b/sdk/resourcemanager/blockchain/armblockchain/CHANGELOG.md index c0d2eeecc54d..8c1f26393ce3 100644 --- a/sdk/resourcemanager/blockchain/armblockchain/CHANGELOG.md +++ b/sdk/resourcemanager/blockchain/armblockchain/CHANGELOG.md @@ -1,5 +1,11 @@ # Release History +## 0.7.0 (2023-11-24) +### Features Added + +- Support for test fakes and OpenTelemetry trace spans. + + ## 0.6.0 (2023-03-28) ### Features Added diff --git a/sdk/resourcemanager/blockchain/armblockchain/README.md b/sdk/resourcemanager/blockchain/armblockchain/README.md index 541f458259e3..f87894992c7a 100644 --- a/sdk/resourcemanager/blockchain/armblockchain/README.md +++ b/sdk/resourcemanager/blockchain/armblockchain/README.md @@ -60,6 +60,13 @@ A client groups a set of related APIs, providing access to its functionality. C client := clientFactory.NewMembersClient() ``` +## Fakes + +The fake package contains types used for constructing in-memory fake servers used in unit tests. +This allows writing tests to cover various success/error conditions without the need for connecting to a live service. + +Please see https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/samples/fakes for details and examples on how to use fakes. + ## Provide Feedback If you encounter bugs or have suggestions, please diff --git a/sdk/resourcemanager/blockchain/armblockchain/autorest.md b/sdk/resourcemanager/blockchain/armblockchain/autorest.md index dbc5d555da39..8ba5a6524dbe 100644 --- a/sdk/resourcemanager/blockchain/armblockchain/autorest.md +++ b/sdk/resourcemanager/blockchain/armblockchain/autorest.md @@ -8,5 +8,5 @@ require: - https://github.com/Azure/azure-rest-api-specs/blob/7a2ac91de424f271cf91cc8009f3fe9ee8249086/specification/blockchain/resource-manager/readme.md - https://github.com/Azure/azure-rest-api-specs/blob/7a2ac91de424f271cf91cc8009f3fe9ee8249086/specification/blockchain/resource-manager/readme.go.md license-header: MICROSOFT_MIT_NO_VERSION -module-version: 0.6.0 +module-version: 0.7.0 ``` \ No newline at end of file diff --git a/sdk/resourcemanager/blockchain/armblockchain/client_factory.go b/sdk/resourcemanager/blockchain/armblockchain/client_factory.go index d23acd7cc156..5228c3388826 100644 --- a/sdk/resourcemanager/blockchain/armblockchain/client_factory.go +++ b/sdk/resourcemanager/blockchain/armblockchain/client_factory.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblockchain @@ -29,7 +28,7 @@ type ClientFactory struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewClientFactory(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*ClientFactory, error) { - _, err := arm.NewClient(moduleName+".ClientFactory", moduleVersion, credential, options) + _, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -39,31 +38,37 @@ func NewClientFactory(subscriptionID string, credential azcore.TokenCredential, }, nil } -func (c *ClientFactory) NewMembersClient() *MembersClient { - subClient, _ := NewMembersClient(c.subscriptionID, c.credential, c.options) +// NewLocationsClient creates a new instance of LocationsClient. +func (c *ClientFactory) NewLocationsClient() *LocationsClient { + subClient, _ := NewLocationsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewMemberOperationResultsClient creates a new instance of MemberOperationResultsClient. func (c *ClientFactory) NewMemberOperationResultsClient() *MemberOperationResultsClient { subClient, _ := NewMemberOperationResultsClient(c.subscriptionID, c.credential, c.options) return subClient } -func (c *ClientFactory) NewLocationsClient() *LocationsClient { - subClient, _ := NewLocationsClient(c.subscriptionID, c.credential, c.options) +// NewMembersClient creates a new instance of MembersClient. +func (c *ClientFactory) NewMembersClient() *MembersClient { + subClient, _ := NewMembersClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewOperationsClient creates a new instance of OperationsClient. func (c *ClientFactory) NewOperationsClient() *OperationsClient { subClient, _ := NewOperationsClient(c.credential, c.options) return subClient } +// NewSKUsClient creates a new instance of SKUsClient. func (c *ClientFactory) NewSKUsClient() *SKUsClient { subClient, _ := NewSKUsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewTransactionNodesClient creates a new instance of TransactionNodesClient. func (c *ClientFactory) NewTransactionNodesClient() *TransactionNodesClient { subClient, _ := NewTransactionNodesClient(c.subscriptionID, c.credential, c.options) return subClient diff --git a/sdk/resourcemanager/blockchain/armblockchain/constants.go b/sdk/resourcemanager/blockchain/armblockchain/constants.go index 82579a585b1d..ec77b43694d4 100644 --- a/sdk/resourcemanager/blockchain/armblockchain/constants.go +++ b/sdk/resourcemanager/blockchain/armblockchain/constants.go @@ -3,15 +3,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblockchain const ( - moduleName = "armblockchain" - moduleVersion = "v0.6.0" + moduleName = "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/blockchain/armblockchain" + moduleVersion = "v0.7.0" ) // BlockchainMemberProvisioningState - Gets or sets the blockchain member provision state. diff --git a/sdk/resourcemanager/blockchain/armblockchain/fake/internal.go b/sdk/resourcemanager/blockchain/armblockchain/fake/internal.go new file mode 100644 index 000000000000..5f75802a569e --- /dev/null +++ b/sdk/resourcemanager/blockchain/armblockchain/fake/internal.go @@ -0,0 +1,64 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "net/http" + "sync" +) + +type nonRetriableError struct { + error +} + +func (nonRetriableError) NonRetriable() { + // marker method +} + +func contains[T comparable](s []T, v T) bool { + for _, vv := range s { + if vv == v { + return true + } + } + return false +} + +func newTracker[T any]() *tracker[T] { + return &tracker[T]{ + items: map[string]*T{}, + } +} + +type tracker[T any] struct { + items map[string]*T + mu sync.Mutex +} + +func (p *tracker[T]) get(req *http.Request) *T { + p.mu.Lock() + defer p.mu.Unlock() + if item, ok := p.items[server.SanitizePagerPollerPath(req.URL.Path)]; ok { + return item + } + return nil +} + +func (p *tracker[T]) add(req *http.Request, item *T) { + p.mu.Lock() + defer p.mu.Unlock() + p.items[server.SanitizePagerPollerPath(req.URL.Path)] = item +} + +func (p *tracker[T]) remove(req *http.Request) { + p.mu.Lock() + defer p.mu.Unlock() + delete(p.items, server.SanitizePagerPollerPath(req.URL.Path)) +} diff --git a/sdk/resourcemanager/blockchain/armblockchain/fake/locations_server.go b/sdk/resourcemanager/blockchain/armblockchain/fake/locations_server.go new file mode 100644 index 000000000000..c3cd07167a84 --- /dev/null +++ b/sdk/resourcemanager/blockchain/armblockchain/fake/locations_server.go @@ -0,0 +1,142 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/blockchain/armblockchain" + "net/http" + "net/url" + "reflect" + "regexp" +) + +// LocationsServer is a fake server for instances of the armblockchain.LocationsClient type. +type LocationsServer struct { + // CheckNameAvailability is the fake for method LocationsClient.CheckNameAvailability + // HTTP status codes to indicate success: http.StatusOK + CheckNameAvailability func(ctx context.Context, locationName string, options *armblockchain.LocationsClientCheckNameAvailabilityOptions) (resp azfake.Responder[armblockchain.LocationsClientCheckNameAvailabilityResponse], errResp azfake.ErrorResponder) + + // ListConsortiums is the fake for method LocationsClient.ListConsortiums + // HTTP status codes to indicate success: http.StatusOK + ListConsortiums func(ctx context.Context, locationName string, options *armblockchain.LocationsClientListConsortiumsOptions) (resp azfake.Responder[armblockchain.LocationsClientListConsortiumsResponse], errResp azfake.ErrorResponder) +} + +// NewLocationsServerTransport creates a new instance of LocationsServerTransport with the provided implementation. +// The returned LocationsServerTransport instance is connected to an instance of armblockchain.LocationsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewLocationsServerTransport(srv *LocationsServer) *LocationsServerTransport { + return &LocationsServerTransport{srv: srv} +} + +// LocationsServerTransport connects instances of armblockchain.LocationsClient to instances of LocationsServer. +// Don't use this type directly, use NewLocationsServerTransport instead. +type LocationsServerTransport struct { + srv *LocationsServer +} + +// Do implements the policy.Transporter interface for LocationsServerTransport. +func (l *LocationsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "LocationsClient.CheckNameAvailability": + resp, err = l.dispatchCheckNameAvailability(req) + case "LocationsClient.ListConsortiums": + resp, err = l.dispatchListConsortiums(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (l *LocationsServerTransport) dispatchCheckNameAvailability(req *http.Request) (*http.Response, error) { + if l.srv.CheckNameAvailability == nil { + return nil, &nonRetriableError{errors.New("fake for method CheckNameAvailability not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blockchain/locations/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/checkNameAvailability` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armblockchain.NameAvailabilityRequest](req) + if err != nil { + return nil, err + } + locationNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("locationName")]) + if err != nil { + return nil, err + } + var options *armblockchain.LocationsClientCheckNameAvailabilityOptions + if !reflect.ValueOf(body).IsZero() { + options = &armblockchain.LocationsClientCheckNameAvailabilityOptions{ + NameAvailabilityRequest: &body, + } + } + respr, errRespr := l.srv.CheckNameAvailability(req.Context(), locationNameParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).NameAvailability, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (l *LocationsServerTransport) dispatchListConsortiums(req *http.Request) (*http.Response, error) { + if l.srv.ListConsortiums == nil { + return nil, &nonRetriableError{errors.New("fake for method ListConsortiums not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blockchain/locations/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/listConsortiums` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + locationNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("locationName")]) + if err != nil { + return nil, err + } + respr, errRespr := l.srv.ListConsortiums(req.Context(), locationNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ConsortiumCollection, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/blockchain/armblockchain/fake/memberoperationresults_server.go b/sdk/resourcemanager/blockchain/armblockchain/fake/memberoperationresults_server.go new file mode 100644 index 000000000000..d1f0b8dc7981 --- /dev/null +++ b/sdk/resourcemanager/blockchain/armblockchain/fake/memberoperationresults_server.go @@ -0,0 +1,100 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/blockchain/armblockchain" + "net/http" + "net/url" + "regexp" +) + +// MemberOperationResultsServer is a fake server for instances of the armblockchain.MemberOperationResultsClient type. +type MemberOperationResultsServer struct { + // Get is the fake for method MemberOperationResultsClient.Get + // HTTP status codes to indicate success: http.StatusOK, http.StatusNoContent + Get func(ctx context.Context, locationName string, operationID string, options *armblockchain.MemberOperationResultsClientGetOptions) (resp azfake.Responder[armblockchain.MemberOperationResultsClientGetResponse], errResp azfake.ErrorResponder) +} + +// NewMemberOperationResultsServerTransport creates a new instance of MemberOperationResultsServerTransport with the provided implementation. +// The returned MemberOperationResultsServerTransport instance is connected to an instance of armblockchain.MemberOperationResultsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewMemberOperationResultsServerTransport(srv *MemberOperationResultsServer) *MemberOperationResultsServerTransport { + return &MemberOperationResultsServerTransport{srv: srv} +} + +// MemberOperationResultsServerTransport connects instances of armblockchain.MemberOperationResultsClient to instances of MemberOperationResultsServer. +// Don't use this type directly, use NewMemberOperationResultsServerTransport instead. +type MemberOperationResultsServerTransport struct { + srv *MemberOperationResultsServer +} + +// Do implements the policy.Transporter interface for MemberOperationResultsServerTransport. +func (m *MemberOperationResultsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "MemberOperationResultsClient.Get": + resp, err = m.dispatchGet(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (m *MemberOperationResultsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if m.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blockchain/locations/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/blockchainMemberOperationResults/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + locationNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("locationName")]) + if err != nil { + return nil, err + } + operationIDParam, err := url.PathUnescape(matches[regex.SubexpIndex("operationId")]) + if err != nil { + return nil, err + } + respr, errRespr := m.srv.Get(req.Context(), locationNameParam, operationIDParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK, http.StatusNoContent}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusNoContent", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).OperationResult, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/blockchain/armblockchain/fake/members_server.go b/sdk/resourcemanager/blockchain/armblockchain/fake/members_server.go new file mode 100644 index 000000000000..b89c22353a83 --- /dev/null +++ b/sdk/resourcemanager/blockchain/armblockchain/fake/members_server.go @@ -0,0 +1,490 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/blockchain/armblockchain" + "net/http" + "net/url" + "reflect" + "regexp" +) + +// MembersServer is a fake server for instances of the armblockchain.MembersClient type. +type MembersServer struct { + // BeginCreate is the fake for method MembersClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + BeginCreate func(ctx context.Context, blockchainMemberName string, resourceGroupName string, options *armblockchain.MembersClientBeginCreateOptions) (resp azfake.PollerResponder[armblockchain.MembersClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method MembersClient.BeginDelete + // HTTP status codes to indicate success: http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, blockchainMemberName string, resourceGroupName string, options *armblockchain.MembersClientBeginDeleteOptions) (resp azfake.PollerResponder[armblockchain.MembersClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method MembersClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, blockchainMemberName string, resourceGroupName string, options *armblockchain.MembersClientGetOptions) (resp azfake.Responder[armblockchain.MembersClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method MembersClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(resourceGroupName string, options *armblockchain.MembersClientListOptions) (resp azfake.PagerResponder[armblockchain.MembersClientListResponse]) + + // ListAPIKeys is the fake for method MembersClient.ListAPIKeys + // HTTP status codes to indicate success: http.StatusOK + ListAPIKeys func(ctx context.Context, blockchainMemberName string, resourceGroupName string, options *armblockchain.MembersClientListAPIKeysOptions) (resp azfake.Responder[armblockchain.MembersClientListAPIKeysResponse], errResp azfake.ErrorResponder) + + // NewListAllPager is the fake for method MembersClient.NewListAllPager + // HTTP status codes to indicate success: http.StatusOK + NewListAllPager func(options *armblockchain.MembersClientListAllOptions) (resp azfake.PagerResponder[armblockchain.MembersClientListAllResponse]) + + // NewListConsortiumMembersPager is the fake for method MembersClient.NewListConsortiumMembersPager + // HTTP status codes to indicate success: http.StatusOK + NewListConsortiumMembersPager func(blockchainMemberName string, resourceGroupName string, options *armblockchain.MembersClientListConsortiumMembersOptions) (resp azfake.PagerResponder[armblockchain.MembersClientListConsortiumMembersResponse]) + + // ListRegenerateAPIKeys is the fake for method MembersClient.ListRegenerateAPIKeys + // HTTP status codes to indicate success: http.StatusOK + ListRegenerateAPIKeys func(ctx context.Context, blockchainMemberName string, resourceGroupName string, options *armblockchain.MembersClientListRegenerateAPIKeysOptions) (resp azfake.Responder[armblockchain.MembersClientListRegenerateAPIKeysResponse], errResp azfake.ErrorResponder) + + // Update is the fake for method MembersClient.Update + // HTTP status codes to indicate success: http.StatusOK + Update func(ctx context.Context, blockchainMemberName string, resourceGroupName string, options *armblockchain.MembersClientUpdateOptions) (resp azfake.Responder[armblockchain.MembersClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewMembersServerTransport creates a new instance of MembersServerTransport with the provided implementation. +// The returned MembersServerTransport instance is connected to an instance of armblockchain.MembersClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewMembersServerTransport(srv *MembersServer) *MembersServerTransport { + return &MembersServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armblockchain.MembersClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armblockchain.MembersClientDeleteResponse]](), + newListPager: newTracker[azfake.PagerResponder[armblockchain.MembersClientListResponse]](), + newListAllPager: newTracker[azfake.PagerResponder[armblockchain.MembersClientListAllResponse]](), + newListConsortiumMembersPager: newTracker[azfake.PagerResponder[armblockchain.MembersClientListConsortiumMembersResponse]](), + } +} + +// MembersServerTransport connects instances of armblockchain.MembersClient to instances of MembersServer. +// Don't use this type directly, use NewMembersServerTransport instead. +type MembersServerTransport struct { + srv *MembersServer + beginCreate *tracker[azfake.PollerResponder[armblockchain.MembersClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armblockchain.MembersClientDeleteResponse]] + newListPager *tracker[azfake.PagerResponder[armblockchain.MembersClientListResponse]] + newListAllPager *tracker[azfake.PagerResponder[armblockchain.MembersClientListAllResponse]] + newListConsortiumMembersPager *tracker[azfake.PagerResponder[armblockchain.MembersClientListConsortiumMembersResponse]] +} + +// Do implements the policy.Transporter interface for MembersServerTransport. +func (m *MembersServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "MembersClient.BeginCreate": + resp, err = m.dispatchBeginCreate(req) + case "MembersClient.BeginDelete": + resp, err = m.dispatchBeginDelete(req) + case "MembersClient.Get": + resp, err = m.dispatchGet(req) + case "MembersClient.NewListPager": + resp, err = m.dispatchNewListPager(req) + case "MembersClient.ListAPIKeys": + resp, err = m.dispatchListAPIKeys(req) + case "MembersClient.NewListAllPager": + resp, err = m.dispatchNewListAllPager(req) + case "MembersClient.NewListConsortiumMembersPager": + resp, err = m.dispatchNewListConsortiumMembersPager(req) + case "MembersClient.ListRegenerateAPIKeys": + resp, err = m.dispatchListRegenerateAPIKeys(req) + case "MembersClient.Update": + resp, err = m.dispatchUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (m *MembersServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if m.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := m.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blockchain/blockchainMembers/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armblockchain.Member](req) + if err != nil { + return nil, err + } + blockchainMemberNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blockchainMemberName")]) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + var options *armblockchain.MembersClientBeginCreateOptions + if !reflect.ValueOf(body).IsZero() { + options = &armblockchain.MembersClientBeginCreateOptions{ + BlockchainMember: &body, + } + } + respr, errRespr := m.srv.BeginCreate(req.Context(), blockchainMemberNameParam, resourceGroupNameParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + m.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated}, resp.StatusCode) { + m.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + m.beginCreate.remove(req) + } + + return resp, nil +} + +func (m *MembersServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if m.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := m.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blockchain/blockchainMembers/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + blockchainMemberNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blockchainMemberName")]) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + respr, errRespr := m.srv.BeginDelete(req.Context(), blockchainMemberNameParam, resourceGroupNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + m.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + m.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + m.beginDelete.remove(req) + } + + return resp, nil +} + +func (m *MembersServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if m.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blockchain/blockchainMembers/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + blockchainMemberNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blockchainMemberName")]) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + respr, errRespr := m.srv.Get(req.Context(), blockchainMemberNameParam, resourceGroupNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Member, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (m *MembersServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if m.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := m.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blockchain/blockchainMembers` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resp := m.srv.NewListPager(resourceGroupNameParam, nil) + newListPager = &resp + m.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armblockchain.MembersClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + m.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + m.newListPager.remove(req) + } + return resp, nil +} + +func (m *MembersServerTransport) dispatchListAPIKeys(req *http.Request) (*http.Response, error) { + if m.srv.ListAPIKeys == nil { + return nil, &nonRetriableError{errors.New("fake for method ListAPIKeys not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blockchain/blockchainMembers/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/listApiKeys` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + blockchainMemberNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blockchainMemberName")]) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + respr, errRespr := m.srv.ListAPIKeys(req.Context(), blockchainMemberNameParam, resourceGroupNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).APIKeyCollection, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (m *MembersServerTransport) dispatchNewListAllPager(req *http.Request) (*http.Response, error) { + if m.srv.NewListAllPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListAllPager not implemented")} + } + newListAllPager := m.newListAllPager.get(req) + if newListAllPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blockchain/blockchainMembers` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resp := m.srv.NewListAllPager(nil) + newListAllPager = &resp + m.newListAllPager.add(req, newListAllPager) + server.PagerResponderInjectNextLinks(newListAllPager, req, func(page *armblockchain.MembersClientListAllResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListAllPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + m.newListAllPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListAllPager) { + m.newListAllPager.remove(req) + } + return resp, nil +} + +func (m *MembersServerTransport) dispatchNewListConsortiumMembersPager(req *http.Request) (*http.Response, error) { + if m.srv.NewListConsortiumMembersPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListConsortiumMembersPager not implemented")} + } + newListConsortiumMembersPager := m.newListConsortiumMembersPager.get(req) + if newListConsortiumMembersPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blockchain/blockchainMembers/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/consortiumMembers` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + blockchainMemberNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blockchainMemberName")]) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resp := m.srv.NewListConsortiumMembersPager(blockchainMemberNameParam, resourceGroupNameParam, nil) + newListConsortiumMembersPager = &resp + m.newListConsortiumMembersPager.add(req, newListConsortiumMembersPager) + server.PagerResponderInjectNextLinks(newListConsortiumMembersPager, req, func(page *armblockchain.MembersClientListConsortiumMembersResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListConsortiumMembersPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + m.newListConsortiumMembersPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListConsortiumMembersPager) { + m.newListConsortiumMembersPager.remove(req) + } + return resp, nil +} + +func (m *MembersServerTransport) dispatchListRegenerateAPIKeys(req *http.Request) (*http.Response, error) { + if m.srv.ListRegenerateAPIKeys == nil { + return nil, &nonRetriableError{errors.New("fake for method ListRegenerateAPIKeys not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blockchain/blockchainMembers/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/regenerateApiKeys` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armblockchain.APIKey](req) + if err != nil { + return nil, err + } + blockchainMemberNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blockchainMemberName")]) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + var options *armblockchain.MembersClientListRegenerateAPIKeysOptions + if !reflect.ValueOf(body).IsZero() { + options = &armblockchain.MembersClientListRegenerateAPIKeysOptions{ + APIKey: &body, + } + } + respr, errRespr := m.srv.ListRegenerateAPIKeys(req.Context(), blockchainMemberNameParam, resourceGroupNameParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).APIKeyCollection, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (m *MembersServerTransport) dispatchUpdate(req *http.Request) (*http.Response, error) { + if m.srv.Update == nil { + return nil, &nonRetriableError{errors.New("fake for method Update not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blockchain/blockchainMembers/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armblockchain.MemberUpdate](req) + if err != nil { + return nil, err + } + blockchainMemberNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blockchainMemberName")]) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + var options *armblockchain.MembersClientUpdateOptions + if !reflect.ValueOf(body).IsZero() { + options = &armblockchain.MembersClientUpdateOptions{ + BlockchainMember: &body, + } + } + respr, errRespr := m.srv.Update(req.Context(), blockchainMemberNameParam, resourceGroupNameParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Member, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/blockchain/armblockchain/fake/operations_server.go b/sdk/resourcemanager/blockchain/armblockchain/fake/operations_server.go new file mode 100644 index 000000000000..c2624f1c12e7 --- /dev/null +++ b/sdk/resourcemanager/blockchain/armblockchain/fake/operations_server.go @@ -0,0 +1,96 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/blockchain/armblockchain" + "net/http" +) + +// OperationsServer is a fake server for instances of the armblockchain.OperationsClient type. +type OperationsServer struct { + // NewListPager is the fake for method OperationsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armblockchain.OperationsClientListOptions) (resp azfake.PagerResponder[armblockchain.OperationsClientListResponse]) +} + +// NewOperationsServerTransport creates a new instance of OperationsServerTransport with the provided implementation. +// The returned OperationsServerTransport instance is connected to an instance of armblockchain.OperationsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewOperationsServerTransport(srv *OperationsServer) *OperationsServerTransport { + return &OperationsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armblockchain.OperationsClientListResponse]](), + } +} + +// OperationsServerTransport connects instances of armblockchain.OperationsClient to instances of OperationsServer. +// Don't use this type directly, use NewOperationsServerTransport instead. +type OperationsServerTransport struct { + srv *OperationsServer + newListPager *tracker[azfake.PagerResponder[armblockchain.OperationsClientListResponse]] +} + +// Do implements the policy.Transporter interface for OperationsServerTransport. +func (o *OperationsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "OperationsClient.NewListPager": + resp, err = o.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (o *OperationsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if o.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := o.newListPager.get(req) + if newListPager == nil { + resp := o.srv.NewListPager(nil) + newListPager = &resp + o.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armblockchain.OperationsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + o.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + o.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/blockchain/armblockchain/fake/server_factory.go b/sdk/resourcemanager/blockchain/armblockchain/fake/server_factory.go new file mode 100644 index 000000000000..0ced9afb11bf --- /dev/null +++ b/sdk/resourcemanager/blockchain/armblockchain/fake/server_factory.go @@ -0,0 +1,104 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "net/http" + "strings" + "sync" +) + +// ServerFactory is a fake server for instances of the armblockchain.ClientFactory type. +type ServerFactory struct { + LocationsServer LocationsServer + MemberOperationResultsServer MemberOperationResultsServer + MembersServer MembersServer + OperationsServer OperationsServer + SKUsServer SKUsServer + TransactionNodesServer TransactionNodesServer +} + +// NewServerFactoryTransport creates a new instance of ServerFactoryTransport with the provided implementation. +// The returned ServerFactoryTransport instance is connected to an instance of armblockchain.ClientFactory via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewServerFactoryTransport(srv *ServerFactory) *ServerFactoryTransport { + return &ServerFactoryTransport{ + srv: srv, + } +} + +// ServerFactoryTransport connects instances of armblockchain.ClientFactory to instances of ServerFactory. +// Don't use this type directly, use NewServerFactoryTransport instead. +type ServerFactoryTransport struct { + srv *ServerFactory + trMu sync.Mutex + trLocationsServer *LocationsServerTransport + trMemberOperationResultsServer *MemberOperationResultsServerTransport + trMembersServer *MembersServerTransport + trOperationsServer *OperationsServerTransport + trSKUsServer *SKUsServerTransport + trTransactionNodesServer *TransactionNodesServerTransport +} + +// Do implements the policy.Transporter interface for ServerFactoryTransport. +func (s *ServerFactoryTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + client := method[:strings.Index(method, ".")] + var resp *http.Response + var err error + + switch client { + case "LocationsClient": + initServer(s, &s.trLocationsServer, func() *LocationsServerTransport { return NewLocationsServerTransport(&s.srv.LocationsServer) }) + resp, err = s.trLocationsServer.Do(req) + case "MemberOperationResultsClient": + initServer(s, &s.trMemberOperationResultsServer, func() *MemberOperationResultsServerTransport { + return NewMemberOperationResultsServerTransport(&s.srv.MemberOperationResultsServer) + }) + resp, err = s.trMemberOperationResultsServer.Do(req) + case "MembersClient": + initServer(s, &s.trMembersServer, func() *MembersServerTransport { return NewMembersServerTransport(&s.srv.MembersServer) }) + resp, err = s.trMembersServer.Do(req) + case "OperationsClient": + initServer(s, &s.trOperationsServer, func() *OperationsServerTransport { return NewOperationsServerTransport(&s.srv.OperationsServer) }) + resp, err = s.trOperationsServer.Do(req) + case "SKUsClient": + initServer(s, &s.trSKUsServer, func() *SKUsServerTransport { return NewSKUsServerTransport(&s.srv.SKUsServer) }) + resp, err = s.trSKUsServer.Do(req) + case "TransactionNodesClient": + initServer(s, &s.trTransactionNodesServer, func() *TransactionNodesServerTransport { + return NewTransactionNodesServerTransport(&s.srv.TransactionNodesServer) + }) + resp, err = s.trTransactionNodesServer.Do(req) + default: + err = fmt.Errorf("unhandled client %s", client) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func initServer[T any](s *ServerFactoryTransport, dst **T, src func() *T) { + s.trMu.Lock() + if *dst == nil { + *dst = src() + } + s.trMu.Unlock() +} diff --git a/sdk/resourcemanager/blockchain/armblockchain/fake/skus_server.go b/sdk/resourcemanager/blockchain/armblockchain/fake/skus_server.go new file mode 100644 index 000000000000..b36deda8b36d --- /dev/null +++ b/sdk/resourcemanager/blockchain/armblockchain/fake/skus_server.go @@ -0,0 +1,91 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/blockchain/armblockchain" + "net/http" + "regexp" +) + +// SKUsServer is a fake server for instances of the armblockchain.SKUsClient type. +type SKUsServer struct { + // List is the fake for method SKUsClient.List + // HTTP status codes to indicate success: http.StatusOK + List func(ctx context.Context, options *armblockchain.SKUsClientListOptions) (resp azfake.Responder[armblockchain.SKUsClientListResponse], errResp azfake.ErrorResponder) +} + +// NewSKUsServerTransport creates a new instance of SKUsServerTransport with the provided implementation. +// The returned SKUsServerTransport instance is connected to an instance of armblockchain.SKUsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewSKUsServerTransport(srv *SKUsServer) *SKUsServerTransport { + return &SKUsServerTransport{srv: srv} +} + +// SKUsServerTransport connects instances of armblockchain.SKUsClient to instances of SKUsServer. +// Don't use this type directly, use NewSKUsServerTransport instead. +type SKUsServerTransport struct { + srv *SKUsServer +} + +// Do implements the policy.Transporter interface for SKUsServerTransport. +func (s *SKUsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "SKUsClient.List": + resp, err = s.dispatchList(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (s *SKUsServerTransport) dispatchList(req *http.Request) (*http.Response, error) { + if s.srv.List == nil { + return nil, &nonRetriableError{errors.New("fake for method List not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blockchain/skus` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + respr, errRespr := s.srv.List(req.Context(), nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ResourceTypeSKUCollection, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/blockchain/armblockchain/fake/time_rfc3339.go b/sdk/resourcemanager/blockchain/armblockchain/fake/time_rfc3339.go new file mode 100644 index 000000000000..b0535a7b63e6 --- /dev/null +++ b/sdk/resourcemanager/blockchain/armblockchain/fake/time_rfc3339.go @@ -0,0 +1,86 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "encoding/json" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "reflect" + "regexp" + "strings" + "time" +) + +// Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases. +var tzOffsetRegex = regexp.MustCompile(`(Z|z|\+|-)(\d+:\d+)*"*$`) + +const ( + utcDateTimeJSON = `"2006-01-02T15:04:05.999999999"` + utcDateTime = "2006-01-02T15:04:05.999999999" + dateTimeJSON = `"` + time.RFC3339Nano + `"` +) + +type dateTimeRFC3339 time.Time + +func (t dateTimeRFC3339) MarshalJSON() ([]byte, error) { + tt := time.Time(t) + return tt.MarshalJSON() +} + +func (t dateTimeRFC3339) MarshalText() ([]byte, error) { + tt := time.Time(t) + return tt.MarshalText() +} + +func (t *dateTimeRFC3339) UnmarshalJSON(data []byte) error { + layout := utcDateTimeJSON + if tzOffsetRegex.Match(data) { + layout = dateTimeJSON + } + return t.Parse(layout, string(data)) +} + +func (t *dateTimeRFC3339) UnmarshalText(data []byte) error { + layout := utcDateTime + if tzOffsetRegex.Match(data) { + layout = time.RFC3339Nano + } + return t.Parse(layout, string(data)) +} + +func (t *dateTimeRFC3339) Parse(layout, value string) error { + p, err := time.Parse(layout, strings.ToUpper(value)) + *t = dateTimeRFC3339(p) + return err +} + +func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) { + if t == nil { + return + } else if azcore.IsNullValue(t) { + m[k] = nil + return + } else if reflect.ValueOf(t).IsNil() { + return + } + m[k] = (*dateTimeRFC3339)(t) +} + +func unpopulateDateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { + if data == nil || strings.EqualFold(string(data), "null") { + return nil + } + var aux dateTimeRFC3339 + if err := json.Unmarshal(data, &aux); err != nil { + return fmt.Errorf("struct field %s: %v", fn, err) + } + *t = (*time.Time)(&aux) + return nil +} diff --git a/sdk/resourcemanager/blockchain/armblockchain/fake/transactionnodes_server.go b/sdk/resourcemanager/blockchain/armblockchain/fake/transactionnodes_server.go new file mode 100644 index 000000000000..aa1e207678cf --- /dev/null +++ b/sdk/resourcemanager/blockchain/armblockchain/fake/transactionnodes_server.go @@ -0,0 +1,428 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/blockchain/armblockchain" + "net/http" + "net/url" + "reflect" + "regexp" +) + +// TransactionNodesServer is a fake server for instances of the armblockchain.TransactionNodesClient type. +type TransactionNodesServer struct { + // BeginCreate is the fake for method TransactionNodesClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + BeginCreate func(ctx context.Context, blockchainMemberName string, transactionNodeName string, resourceGroupName string, options *armblockchain.TransactionNodesClientBeginCreateOptions) (resp azfake.PollerResponder[armblockchain.TransactionNodesClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method TransactionNodesClient.BeginDelete + // HTTP status codes to indicate success: http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, blockchainMemberName string, transactionNodeName string, resourceGroupName string, options *armblockchain.TransactionNodesClientBeginDeleteOptions) (resp azfake.PollerResponder[armblockchain.TransactionNodesClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method TransactionNodesClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, blockchainMemberName string, transactionNodeName string, resourceGroupName string, options *armblockchain.TransactionNodesClientGetOptions) (resp azfake.Responder[armblockchain.TransactionNodesClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method TransactionNodesClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(blockchainMemberName string, resourceGroupName string, options *armblockchain.TransactionNodesClientListOptions) (resp azfake.PagerResponder[armblockchain.TransactionNodesClientListResponse]) + + // ListAPIKeys is the fake for method TransactionNodesClient.ListAPIKeys + // HTTP status codes to indicate success: http.StatusOK + ListAPIKeys func(ctx context.Context, blockchainMemberName string, transactionNodeName string, resourceGroupName string, options *armblockchain.TransactionNodesClientListAPIKeysOptions) (resp azfake.Responder[armblockchain.TransactionNodesClientListAPIKeysResponse], errResp azfake.ErrorResponder) + + // ListRegenerateAPIKeys is the fake for method TransactionNodesClient.ListRegenerateAPIKeys + // HTTP status codes to indicate success: http.StatusOK + ListRegenerateAPIKeys func(ctx context.Context, blockchainMemberName string, transactionNodeName string, resourceGroupName string, options *armblockchain.TransactionNodesClientListRegenerateAPIKeysOptions) (resp azfake.Responder[armblockchain.TransactionNodesClientListRegenerateAPIKeysResponse], errResp azfake.ErrorResponder) + + // Update is the fake for method TransactionNodesClient.Update + // HTTP status codes to indicate success: http.StatusOK + Update func(ctx context.Context, blockchainMemberName string, transactionNodeName string, resourceGroupName string, options *armblockchain.TransactionNodesClientUpdateOptions) (resp azfake.Responder[armblockchain.TransactionNodesClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewTransactionNodesServerTransport creates a new instance of TransactionNodesServerTransport with the provided implementation. +// The returned TransactionNodesServerTransport instance is connected to an instance of armblockchain.TransactionNodesClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewTransactionNodesServerTransport(srv *TransactionNodesServer) *TransactionNodesServerTransport { + return &TransactionNodesServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armblockchain.TransactionNodesClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armblockchain.TransactionNodesClientDeleteResponse]](), + newListPager: newTracker[azfake.PagerResponder[armblockchain.TransactionNodesClientListResponse]](), + } +} + +// TransactionNodesServerTransport connects instances of armblockchain.TransactionNodesClient to instances of TransactionNodesServer. +// Don't use this type directly, use NewTransactionNodesServerTransport instead. +type TransactionNodesServerTransport struct { + srv *TransactionNodesServer + beginCreate *tracker[azfake.PollerResponder[armblockchain.TransactionNodesClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armblockchain.TransactionNodesClientDeleteResponse]] + newListPager *tracker[azfake.PagerResponder[armblockchain.TransactionNodesClientListResponse]] +} + +// Do implements the policy.Transporter interface for TransactionNodesServerTransport. +func (t *TransactionNodesServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "TransactionNodesClient.BeginCreate": + resp, err = t.dispatchBeginCreate(req) + case "TransactionNodesClient.BeginDelete": + resp, err = t.dispatchBeginDelete(req) + case "TransactionNodesClient.Get": + resp, err = t.dispatchGet(req) + case "TransactionNodesClient.NewListPager": + resp, err = t.dispatchNewListPager(req) + case "TransactionNodesClient.ListAPIKeys": + resp, err = t.dispatchListAPIKeys(req) + case "TransactionNodesClient.ListRegenerateAPIKeys": + resp, err = t.dispatchListRegenerateAPIKeys(req) + case "TransactionNodesClient.Update": + resp, err = t.dispatchUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (t *TransactionNodesServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if t.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := t.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blockchain/blockchainMembers/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/transactionNodes/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armblockchain.TransactionNode](req) + if err != nil { + return nil, err + } + blockchainMemberNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blockchainMemberName")]) + if err != nil { + return nil, err + } + transactionNodeNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("transactionNodeName")]) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + var options *armblockchain.TransactionNodesClientBeginCreateOptions + if !reflect.ValueOf(body).IsZero() { + options = &armblockchain.TransactionNodesClientBeginCreateOptions{ + TransactionNode: &body, + } + } + respr, errRespr := t.srv.BeginCreate(req.Context(), blockchainMemberNameParam, transactionNodeNameParam, resourceGroupNameParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + t.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated}, resp.StatusCode) { + t.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + t.beginCreate.remove(req) + } + + return resp, nil +} + +func (t *TransactionNodesServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if t.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := t.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blockchain/blockchainMembers/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/transactionNodes/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + blockchainMemberNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blockchainMemberName")]) + if err != nil { + return nil, err + } + transactionNodeNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("transactionNodeName")]) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + respr, errRespr := t.srv.BeginDelete(req.Context(), blockchainMemberNameParam, transactionNodeNameParam, resourceGroupNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + t.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + t.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + t.beginDelete.remove(req) + } + + return resp, nil +} + +func (t *TransactionNodesServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if t.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blockchain/blockchainMembers/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/transactionNodes/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + blockchainMemberNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blockchainMemberName")]) + if err != nil { + return nil, err + } + transactionNodeNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("transactionNodeName")]) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + respr, errRespr := t.srv.Get(req.Context(), blockchainMemberNameParam, transactionNodeNameParam, resourceGroupNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).TransactionNode, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (t *TransactionNodesServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if t.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := t.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blockchain/blockchainMembers/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/transactionNodes` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + blockchainMemberNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blockchainMemberName")]) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resp := t.srv.NewListPager(blockchainMemberNameParam, resourceGroupNameParam, nil) + newListPager = &resp + t.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armblockchain.TransactionNodesClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + t.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + t.newListPager.remove(req) + } + return resp, nil +} + +func (t *TransactionNodesServerTransport) dispatchListAPIKeys(req *http.Request) (*http.Response, error) { + if t.srv.ListAPIKeys == nil { + return nil, &nonRetriableError{errors.New("fake for method ListAPIKeys not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blockchain/blockchainMembers/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/transactionNodes/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/listApiKeys` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + blockchainMemberNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blockchainMemberName")]) + if err != nil { + return nil, err + } + transactionNodeNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("transactionNodeName")]) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + respr, errRespr := t.srv.ListAPIKeys(req.Context(), blockchainMemberNameParam, transactionNodeNameParam, resourceGroupNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).APIKeyCollection, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (t *TransactionNodesServerTransport) dispatchListRegenerateAPIKeys(req *http.Request) (*http.Response, error) { + if t.srv.ListRegenerateAPIKeys == nil { + return nil, &nonRetriableError{errors.New("fake for method ListRegenerateAPIKeys not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blockchain/blockchainMembers/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/transactionNodes/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/regenerateApiKeys` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armblockchain.APIKey](req) + if err != nil { + return nil, err + } + blockchainMemberNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blockchainMemberName")]) + if err != nil { + return nil, err + } + transactionNodeNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("transactionNodeName")]) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + var options *armblockchain.TransactionNodesClientListRegenerateAPIKeysOptions + if !reflect.ValueOf(body).IsZero() { + options = &armblockchain.TransactionNodesClientListRegenerateAPIKeysOptions{ + APIKey: &body, + } + } + respr, errRespr := t.srv.ListRegenerateAPIKeys(req.Context(), blockchainMemberNameParam, transactionNodeNameParam, resourceGroupNameParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).APIKeyCollection, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (t *TransactionNodesServerTransport) dispatchUpdate(req *http.Request) (*http.Response, error) { + if t.srv.Update == nil { + return nil, &nonRetriableError{errors.New("fake for method Update not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blockchain/blockchainMembers/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/transactionNodes/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armblockchain.TransactionNodeUpdate](req) + if err != nil { + return nil, err + } + blockchainMemberNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blockchainMemberName")]) + if err != nil { + return nil, err + } + transactionNodeNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("transactionNodeName")]) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + var options *armblockchain.TransactionNodesClientUpdateOptions + if !reflect.ValueOf(body).IsZero() { + options = &armblockchain.TransactionNodesClientUpdateOptions{ + TransactionNode: &body, + } + } + respr, errRespr := t.srv.Update(req.Context(), blockchainMemberNameParam, transactionNodeNameParam, resourceGroupNameParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).TransactionNode, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/blockchain/armblockchain/go.mod b/sdk/resourcemanager/blockchain/armblockchain/go.mod index 0e91c75ec151..9474422b5f51 100644 --- a/sdk/resourcemanager/blockchain/armblockchain/go.mod +++ b/sdk/resourcemanager/blockchain/armblockchain/go.mod @@ -3,19 +3,19 @@ module github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/blockchain/armblock go 1.18 require ( - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0 - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2 + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 ) require ( - github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0 // indirect - github.com/golang-jwt/jwt/v4 v4.5.0 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect + github.com/golang-jwt/jwt/v5 v5.0.0 // indirect + github.com/google/uuid v1.3.1 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect - golang.org/x/crypto v0.6.0 // indirect - golang.org/x/net v0.7.0 // indirect - golang.org/x/sys v0.5.0 // indirect - golang.org/x/text v0.7.0 // indirect + golang.org/x/crypto v0.14.0 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect ) diff --git a/sdk/resourcemanager/blockchain/armblockchain/go.sum b/sdk/resourcemanager/blockchain/armblockchain/go.sum index 8ba445a8c4da..7985f1da436f 100644 --- a/sdk/resourcemanager/blockchain/armblockchain/go.sum +++ b/sdk/resourcemanager/blockchain/armblockchain/go.sum @@ -1,31 +1,31 @@ -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0 h1:rTnT/Jrcm+figWlYz4Ixzt0SJVR2cMC8lvZcimipiEY= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0/go.mod h1:ON4tFdPTwRcgWEaVDrN3584Ef+b7GgSJaXxe5fW9t4M= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2 h1:uqM+VoHjVH6zdlkLF2b6O0ZANcHoj3rO0PoQ3jglUJA= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2/go.mod h1:twTKAa1E6hLmSDjLhaCkbTMQKc7p/rNLU40rLxGEOCI= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0 h1:leh5DwKv6Ihwi+h60uHtn6UWAxBbZ0q8DwQVMzf61zw= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= -github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0 h1:UE9n9rkJF62ArLb1F3DEjRt8O3jLwMWdSoypKV4f3MU= -github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 h1:fb8kj/Dh4CSwgsOzHeZY4Xh68cFVbzXx+ONXGMY//4w= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0/go.mod h1:uReU2sSxZExRPBAg3qKzmAucSi51+SP1OhohieR821Q= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 h1:BMAjVKJM0U/CYF27gA0ZMmXGkOcvfFtD0oHVZ1TIPRI= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0/go.mod h1:1fXstnBMas5kzG+S3q8UoJcmyU6nUeunJcMDHcRYHhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 h1:d81/ng9rET2YqdVkVwkb6EXeRrLJIwyGnJcAlAWKwhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0/go.mod h1:s4kgfzA0covAXNicZHDMN58jExvcng2mC/DepXiF1EI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 h1:WpB/QDNLpMw72xHJc34BNNykqSOeEJDAWkhf0u12/Jk= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/dnaeon/go-vcr v1.1.0 h1:ReYa/UBrRyQdant9B4fNHGoCNKw6qh6P0fsdGmZpR7c= -github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= -github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= +github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= +github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= -golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/sdk/resourcemanager/blockchain/armblockchain/locations_client.go b/sdk/resourcemanager/blockchain/armblockchain/locations_client.go index 3614c377e692..3db619829bf9 100644 --- a/sdk/resourcemanager/blockchain/armblockchain/locations_client.go +++ b/sdk/resourcemanager/blockchain/armblockchain/locations_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblockchain @@ -34,7 +33,7 @@ type LocationsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewLocationsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*LocationsClient, error) { - cl, err := arm.NewClient(moduleName+".LocationsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -53,18 +52,25 @@ func NewLocationsClient(subscriptionID string, credential azcore.TokenCredential // - options - LocationsClientCheckNameAvailabilityOptions contains the optional parameters for the LocationsClient.CheckNameAvailability // method. func (client *LocationsClient) CheckNameAvailability(ctx context.Context, locationName string, options *LocationsClientCheckNameAvailabilityOptions) (LocationsClientCheckNameAvailabilityResponse, error) { + var err error + const operationName = "LocationsClient.CheckNameAvailability" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.checkNameAvailabilityCreateRequest(ctx, locationName, options) if err != nil { return LocationsClientCheckNameAvailabilityResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return LocationsClientCheckNameAvailabilityResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return LocationsClientCheckNameAvailabilityResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return LocationsClientCheckNameAvailabilityResponse{}, err } - return client.checkNameAvailabilityHandleResponse(resp) + resp, err := client.checkNameAvailabilityHandleResponse(httpResp) + return resp, err } // checkNameAvailabilityCreateRequest creates the CheckNameAvailability request. @@ -87,7 +93,10 @@ func (client *LocationsClient) checkNameAvailabilityCreateRequest(ctx context.Co req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} if options != nil && options.NameAvailabilityRequest != nil { - return req, runtime.MarshalAsJSON(req, *options.NameAvailabilityRequest) + if err := runtime.MarshalAsJSON(req, *options.NameAvailabilityRequest); err != nil { + return nil, err + } + return req, nil } return req, nil } @@ -109,18 +118,25 @@ func (client *LocationsClient) checkNameAvailabilityHandleResponse(resp *http.Re // - options - LocationsClientListConsortiumsOptions contains the optional parameters for the LocationsClient.ListConsortiums // method. func (client *LocationsClient) ListConsortiums(ctx context.Context, locationName string, options *LocationsClientListConsortiumsOptions) (LocationsClientListConsortiumsResponse, error) { + var err error + const operationName = "LocationsClient.ListConsortiums" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.listConsortiumsCreateRequest(ctx, locationName, options) if err != nil { return LocationsClientListConsortiumsResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return LocationsClientListConsortiumsResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return LocationsClientListConsortiumsResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return LocationsClientListConsortiumsResponse{}, err } - return client.listConsortiumsHandleResponse(resp) + resp, err := client.listConsortiumsHandleResponse(httpResp) + return resp, err } // listConsortiumsCreateRequest creates the ListConsortiums request. diff --git a/sdk/resourcemanager/blockchain/armblockchain/memberoperationresults_client.go b/sdk/resourcemanager/blockchain/armblockchain/memberoperationresults_client.go index 009f0b52a73d..c1bf3e002d7e 100644 --- a/sdk/resourcemanager/blockchain/armblockchain/memberoperationresults_client.go +++ b/sdk/resourcemanager/blockchain/armblockchain/memberoperationresults_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblockchain @@ -34,7 +33,7 @@ type MemberOperationResultsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewMemberOperationResultsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*MemberOperationResultsClient, error) { - cl, err := arm.NewClient(moduleName+".MemberOperationResultsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -54,18 +53,25 @@ func NewMemberOperationResultsClient(subscriptionID string, credential azcore.To // - options - MemberOperationResultsClientGetOptions contains the optional parameters for the MemberOperationResultsClient.Get // method. func (client *MemberOperationResultsClient) Get(ctx context.Context, locationName string, operationID string, options *MemberOperationResultsClientGetOptions) (MemberOperationResultsClientGetResponse, error) { + var err error + const operationName = "MemberOperationResultsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, locationName, operationID, options) if err != nil { return MemberOperationResultsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return MemberOperationResultsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusNoContent) { - return MemberOperationResultsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusNoContent) { + err = runtime.NewResponseError(httpResp) + return MemberOperationResultsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. diff --git a/sdk/resourcemanager/blockchain/armblockchain/members_client.go b/sdk/resourcemanager/blockchain/armblockchain/members_client.go index a57b7b1b3581..c75018e5de60 100644 --- a/sdk/resourcemanager/blockchain/armblockchain/members_client.go +++ b/sdk/resourcemanager/blockchain/armblockchain/members_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblockchain @@ -34,7 +33,7 @@ type MembersClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewMembersClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*MembersClient, error) { - cl, err := arm.NewClient(moduleName+".MembersClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -59,9 +58,14 @@ func (client *MembersClient) BeginCreate(ctx context.Context, blockchainMemberNa if err != nil { return nil, err } - return runtime.NewPoller[MembersClientCreateResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[MembersClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[MembersClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[MembersClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -70,18 +74,24 @@ func (client *MembersClient) BeginCreate(ctx context.Context, blockchainMemberNa // // Generated from API version 2018-06-01-preview func (client *MembersClient) create(ctx context.Context, blockchainMemberName string, resourceGroupName string, options *MembersClientBeginCreateOptions) (*http.Response, error) { + var err error + const operationName = "MembersClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, blockchainMemberName, resourceGroupName, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusCreated) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusCreated) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // createCreateRequest creates the Create request. @@ -108,7 +118,10 @@ func (client *MembersClient) createCreateRequest(ctx context.Context, blockchain req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} if options != nil && options.BlockchainMember != nil { - return req, runtime.MarshalAsJSON(req, *options.BlockchainMember) + if err := runtime.MarshalAsJSON(req, *options.BlockchainMember); err != nil { + return nil, err + } + return req, nil } return req, nil } @@ -127,9 +140,14 @@ func (client *MembersClient) BeginDelete(ctx context.Context, blockchainMemberNa if err != nil { return nil, err } - return runtime.NewPoller[MembersClientDeleteResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[MembersClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[MembersClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[MembersClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -138,18 +156,24 @@ func (client *MembersClient) BeginDelete(ctx context.Context, blockchainMemberNa // // Generated from API version 2018-06-01-preview func (client *MembersClient) deleteOperation(ctx context.Context, blockchainMemberName string, resourceGroupName string, options *MembersClientBeginDeleteOptions) (*http.Response, error) { + var err error + const operationName = "MembersClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, blockchainMemberName, resourceGroupName, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusAccepted, http.StatusNoContent) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusAccepted, http.StatusNoContent) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // deleteCreateRequest creates the Delete request. @@ -186,18 +210,25 @@ func (client *MembersClient) deleteCreateRequest(ctx context.Context, blockchain // Resource Manager API or the portal. // - options - MembersClientGetOptions contains the optional parameters for the MembersClient.Get method. func (client *MembersClient) Get(ctx context.Context, blockchainMemberName string, resourceGroupName string, options *MembersClientGetOptions) (MembersClientGetResponse, error) { + var err error + const operationName = "MembersClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, blockchainMemberName, resourceGroupName, options) if err != nil { return MembersClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return MembersClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return MembersClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return MembersClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -247,25 +278,20 @@ func (client *MembersClient) NewListPager(resourceGroupName string, options *Mem return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *MembersClientListResponse) (MembersClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, resourceGroupName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return MembersClientListResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "MembersClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, resourceGroupName, options) + }, nil) if err != nil { return MembersClientListResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return MembersClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -309,18 +335,25 @@ func (client *MembersClient) listHandleResponse(resp *http.Response) (MembersCli // Resource Manager API or the portal. // - options - MembersClientListAPIKeysOptions contains the optional parameters for the MembersClient.ListAPIKeys method. func (client *MembersClient) ListAPIKeys(ctx context.Context, blockchainMemberName string, resourceGroupName string, options *MembersClientListAPIKeysOptions) (MembersClientListAPIKeysResponse, error) { + var err error + const operationName = "MembersClient.ListAPIKeys" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.listAPIKeysCreateRequest(ctx, blockchainMemberName, resourceGroupName, options) if err != nil { return MembersClientListAPIKeysResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return MembersClientListAPIKeysResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return MembersClientListAPIKeysResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return MembersClientListAPIKeysResponse{}, err } - return client.listAPIKeysHandleResponse(resp) + resp, err := client.listAPIKeysHandleResponse(httpResp) + return resp, err } // listAPIKeysCreateRequest creates the ListAPIKeys request. @@ -368,25 +401,20 @@ func (client *MembersClient) NewListAllPager(options *MembersClientListAllOption return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *MembersClientListAllResponse) (MembersClientListAllResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listAllCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return MembersClientListAllResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "MembersClient.NewListAllPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listAllCreateRequest(ctx, options) + }, nil) if err != nil { return MembersClientListAllResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return MembersClientListAllResponse{}, runtime.NewResponseError(resp) - } return client.listAllHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -431,25 +459,20 @@ func (client *MembersClient) NewListConsortiumMembersPager(blockchainMemberName return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *MembersClientListConsortiumMembersResponse) (MembersClientListConsortiumMembersResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listConsortiumMembersCreateRequest(ctx, blockchainMemberName, resourceGroupName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return MembersClientListConsortiumMembersResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "MembersClient.NewListConsortiumMembersPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listConsortiumMembersCreateRequest(ctx, blockchainMemberName, resourceGroupName, options) + }, nil) if err != nil { return MembersClientListConsortiumMembersResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return MembersClientListConsortiumMembersResponse{}, runtime.NewResponseError(resp) - } return client.listConsortiumMembersHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -498,18 +521,25 @@ func (client *MembersClient) listConsortiumMembersHandleResponse(resp *http.Resp // - options - MembersClientListRegenerateAPIKeysOptions contains the optional parameters for the MembersClient.ListRegenerateAPIKeys // method. func (client *MembersClient) ListRegenerateAPIKeys(ctx context.Context, blockchainMemberName string, resourceGroupName string, options *MembersClientListRegenerateAPIKeysOptions) (MembersClientListRegenerateAPIKeysResponse, error) { + var err error + const operationName = "MembersClient.ListRegenerateAPIKeys" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.listRegenerateAPIKeysCreateRequest(ctx, blockchainMemberName, resourceGroupName, options) if err != nil { return MembersClientListRegenerateAPIKeysResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return MembersClientListRegenerateAPIKeysResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return MembersClientListRegenerateAPIKeysResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return MembersClientListRegenerateAPIKeysResponse{}, err } - return client.listRegenerateAPIKeysHandleResponse(resp) + resp, err := client.listRegenerateAPIKeysHandleResponse(httpResp) + return resp, err } // listRegenerateAPIKeysCreateRequest creates the ListRegenerateAPIKeys request. @@ -536,7 +566,10 @@ func (client *MembersClient) listRegenerateAPIKeysCreateRequest(ctx context.Cont req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} if options != nil && options.APIKey != nil { - return req, runtime.MarshalAsJSON(req, *options.APIKey) + if err := runtime.MarshalAsJSON(req, *options.APIKey); err != nil { + return nil, err + } + return req, nil } return req, nil } @@ -559,18 +592,25 @@ func (client *MembersClient) listRegenerateAPIKeysHandleResponse(resp *http.Resp // Resource Manager API or the portal. // - options - MembersClientUpdateOptions contains the optional parameters for the MembersClient.Update method. func (client *MembersClient) Update(ctx context.Context, blockchainMemberName string, resourceGroupName string, options *MembersClientUpdateOptions) (MembersClientUpdateResponse, error) { + var err error + const operationName = "MembersClient.Update" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, blockchainMemberName, resourceGroupName, options) if err != nil { return MembersClientUpdateResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return MembersClientUpdateResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return MembersClientUpdateResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return MembersClientUpdateResponse{}, err } - return client.updateHandleResponse(resp) + resp, err := client.updateHandleResponse(httpResp) + return resp, err } // updateCreateRequest creates the Update request. @@ -597,7 +637,10 @@ func (client *MembersClient) updateCreateRequest(ctx context.Context, blockchain req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} if options != nil && options.BlockchainMember != nil { - return req, runtime.MarshalAsJSON(req, *options.BlockchainMember) + if err := runtime.MarshalAsJSON(req, *options.BlockchainMember); err != nil { + return nil, err + } + return req, nil } return req, nil } diff --git a/sdk/resourcemanager/blockchain/armblockchain/models.go b/sdk/resourcemanager/blockchain/armblockchain/models.go index 85db513b9204..8fa31f4ec368 100644 --- a/sdk/resourcemanager/blockchain/armblockchain/models.go +++ b/sdk/resourcemanager/blockchain/armblockchain/models.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblockchain @@ -14,113 +13,101 @@ import "time" // APIKey - API key payload which is exposed in the request/response of the resource provider. type APIKey struct { // Gets or sets the API key name. - KeyName *string `json:"keyName,omitempty"` + KeyName *string // Gets or sets the API key value. - Value *string `json:"value,omitempty"` + Value *string } // APIKeyCollection - Collection of the API key payload which is exposed in the response of the resource provider. type APIKeyCollection struct { // Gets or sets the collection of API key. - Keys []*APIKey `json:"keys,omitempty"` + Keys []*APIKey } // Consortium payload type Consortium struct { // Gets or sets the blockchain member name. - Name *string `json:"name,omitempty"` + Name *string // Gets or sets the protocol for the consortium. - Protocol *BlockchainProtocol `json:"protocol,omitempty"` + Protocol *BlockchainProtocol } // ConsortiumCollection - Collection of the consortium payload. type ConsortiumCollection struct { // Gets or sets the collection of consortiums. - Value []*Consortium `json:"value,omitempty"` + Value []*Consortium } // ConsortiumMember - Consortium approval type ConsortiumMember struct { // Gets the consortium member modified date. - DateModified *time.Time `json:"dateModified,omitempty"` + DateModified *time.Time // Gets the consortium member display name. - DisplayName *string `json:"displayName,omitempty"` + DisplayName *string // Gets the consortium member join date. - JoinDate *time.Time `json:"joinDate,omitempty"` + JoinDate *time.Time // Gets the consortium member name. - Name *string `json:"name,omitempty"` + Name *string // Gets the consortium member role. - Role *string `json:"role,omitempty"` + Role *string // Gets the consortium member status. - Status *string `json:"status,omitempty"` + Status *string // Gets the consortium member subscription id. - SubscriptionID *string `json:"subscriptionId,omitempty"` + SubscriptionID *string } // ConsortiumMemberCollection - Collection of consortium payload. type ConsortiumMemberCollection struct { // Gets or sets the URL, that the client should use to fetch the next page (per server side paging). It's null for now, added // for future use. - NextLink *string `json:"nextLink,omitempty"` + NextLink *string // Gets or sets the collection of consortiums. - Value []*ConsortiumMember `json:"value,omitempty"` + Value []*ConsortiumMember } // FirewallRule - Ip range for firewall rules type FirewallRule struct { // Gets or sets the end IP address of the firewall rule range. - EndIPAddress *string `json:"endIpAddress,omitempty"` + EndIPAddress *string // Gets or sets the name of the firewall rules. - RuleName *string `json:"ruleName,omitempty"` + RuleName *string // Gets or sets the start IP address of the firewall rule range. - StartIPAddress *string `json:"startIpAddress,omitempty"` -} - -// LocationsClientCheckNameAvailabilityOptions contains the optional parameters for the LocationsClient.CheckNameAvailability -// method. -type LocationsClientCheckNameAvailabilityOptions struct { - // Name availability request payload. - NameAvailabilityRequest *NameAvailabilityRequest -} - -// LocationsClientListConsortiumsOptions contains the optional parameters for the LocationsClient.ListConsortiums method. -type LocationsClientListConsortiumsOptions struct { - // placeholder for future optional parameters + StartIPAddress *string } // Member - Payload of the blockchain member which is exposed in the request/response of the resource provider. type Member struct { // The GEO location of the blockchain service. - Location *string `json:"location,omitempty"` + Location *string // Gets or sets the blockchain member properties. - Properties *MemberProperties `json:"properties,omitempty"` + Properties *MemberProperties // Gets or sets the blockchain member Sku. - SKU *SKU `json:"sku,omitempty"` + SKU *SKU // Tags of the service which is a list of key value pairs that describes the resource. - Tags map[string]*string `json:"tags,omitempty"` + Tags map[string]*string // READ-ONLY; Fully qualified resource Id of the resource. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; The name of the resource. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; The type of the service - e.g. "Microsoft.Blockchain" - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // MemberCollection - Collection of the blockchain member payload which is exposed in the request/response of the resource @@ -128,205 +115,142 @@ type Member struct { type MemberCollection struct { // Gets or sets the URL, that the client should use to fetch the next page (per server side paging). It's null for now, added // for future use. - NextLink *string `json:"nextLink,omitempty"` + NextLink *string // Gets or sets the collection of blockchain members. - Value []*Member `json:"value,omitempty"` + Value []*Member } // MemberNodesSKU - Payload of the blockchain member nodes Sku for a blockchain member. type MemberNodesSKU struct { // Gets or sets the nodes capacity. - Capacity *int32 `json:"capacity,omitempty"` -} - -// MemberOperationResultsClientGetOptions contains the optional parameters for the MemberOperationResultsClient.Get method. -type MemberOperationResultsClientGetOptions struct { - // placeholder for future optional parameters + Capacity *int32 } // MemberProperties - Payload of the blockchain member properties for a blockchain member. type MemberProperties struct { // Gets or sets the consortium for the blockchain member. - Consortium *string `json:"consortium,omitempty"` + Consortium *string // Sets the managed consortium management account password. - ConsortiumManagementAccountPassword *string `json:"consortiumManagementAccountPassword,omitempty"` + ConsortiumManagementAccountPassword *string // Gets the display name of the member in the consortium. - ConsortiumMemberDisplayName *string `json:"consortiumMemberDisplayName,omitempty"` + ConsortiumMemberDisplayName *string // Gets the role of the member in the consortium. - ConsortiumRole *string `json:"consortiumRole,omitempty"` + ConsortiumRole *string // Gets or sets firewall rules - FirewallRules []*FirewallRule `json:"firewallRules,omitempty"` + FirewallRules []*FirewallRule // Sets the basic auth password of the blockchain member. - Password *string `json:"password,omitempty"` + Password *string // Gets or sets the blockchain protocol. - Protocol *BlockchainProtocol `json:"protocol,omitempty"` + Protocol *BlockchainProtocol // Gets or sets the blockchain validator nodes Sku. - ValidatorNodesSKU *MemberNodesSKU `json:"validatorNodesSku,omitempty"` + ValidatorNodesSKU *MemberNodesSKU // READ-ONLY; Gets the managed consortium management account address. - ConsortiumManagementAccountAddress *string `json:"consortiumManagementAccountAddress,omitempty" azure:"ro"` + ConsortiumManagementAccountAddress *string // READ-ONLY; Gets the dns endpoint of the blockchain member. - DNS *string `json:"dns,omitempty" azure:"ro"` + DNS *string // READ-ONLY; Gets or sets the blockchain member provision state. - ProvisioningState *BlockchainMemberProvisioningState `json:"provisioningState,omitempty" azure:"ro"` + ProvisioningState *BlockchainMemberProvisioningState // READ-ONLY; Gets the public key of the blockchain member (default transaction node). - PublicKey *string `json:"publicKey,omitempty" azure:"ro"` + PublicKey *string // READ-ONLY; Gets the Ethereum root contract address of the blockchain. - RootContractAddress *string `json:"rootContractAddress,omitempty" azure:"ro"` + RootContractAddress *string // READ-ONLY; Gets the auth user name of the blockchain member. - UserName *string `json:"userName,omitempty" azure:"ro"` + UserName *string } // MemberPropertiesUpdate - Update the payload of the blockchain member properties for a blockchain member. type MemberPropertiesUpdate struct { // Sets the managed consortium management account password. - ConsortiumManagementAccountPassword *string `json:"consortiumManagementAccountPassword,omitempty"` + ConsortiumManagementAccountPassword *string // Gets or sets the firewall rules. - FirewallRules []*FirewallRule `json:"firewallRules,omitempty"` + FirewallRules []*FirewallRule // Sets the transaction node dns endpoint basic auth password. - Password *string `json:"password,omitempty"` + Password *string } // MemberUpdate - Update the payload of the blockchain member which is exposed in the request/response of the resource provider. type MemberUpdate struct { // Gets or sets the blockchain member update properties. - Properties *MemberPropertiesUpdate `json:"properties,omitempty"` + Properties *MemberPropertiesUpdate // Tags of the service which is a list of key value pairs that describes the resource. - Tags map[string]*string `json:"tags,omitempty"` -} - -// MembersClientBeginCreateOptions contains the optional parameters for the MembersClient.BeginCreate method. -type MembersClientBeginCreateOptions struct { - // Payload to create a blockchain member. - BlockchainMember *Member - // Resumes the LRO from the provided token. - ResumeToken string -} - -// MembersClientBeginDeleteOptions contains the optional parameters for the MembersClient.BeginDelete method. -type MembersClientBeginDeleteOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// MembersClientGetOptions contains the optional parameters for the MembersClient.Get method. -type MembersClientGetOptions struct { - // placeholder for future optional parameters -} - -// MembersClientListAPIKeysOptions contains the optional parameters for the MembersClient.ListAPIKeys method. -type MembersClientListAPIKeysOptions struct { - // placeholder for future optional parameters -} - -// MembersClientListAllOptions contains the optional parameters for the MembersClient.NewListAllPager method. -type MembersClientListAllOptions struct { - // placeholder for future optional parameters -} - -// MembersClientListConsortiumMembersOptions contains the optional parameters for the MembersClient.NewListConsortiumMembersPager -// method. -type MembersClientListConsortiumMembersOptions struct { - // placeholder for future optional parameters -} - -// MembersClientListOptions contains the optional parameters for the MembersClient.NewListPager method. -type MembersClientListOptions struct { - // placeholder for future optional parameters -} - -// MembersClientListRegenerateAPIKeysOptions contains the optional parameters for the MembersClient.ListRegenerateAPIKeys -// method. -type MembersClientListRegenerateAPIKeysOptions struct { - // api key to be regenerate - APIKey *APIKey -} - -// MembersClientUpdateOptions contains the optional parameters for the MembersClient.Update method. -type MembersClientUpdateOptions struct { - // Payload to update the blockchain member. - BlockchainMember *MemberUpdate + Tags map[string]*string } // NameAvailability - Name availability payload which is exposed in the response of the resource provider. type NameAvailability struct { // Gets or sets the message. - Message *string `json:"message,omitempty"` + Message *string // Gets or sets the value indicating whether the name is available. - NameAvailable *bool `json:"nameAvailable,omitempty"` + NameAvailable *bool // Gets or sets the name availability reason. - Reason *NameAvailabilityReason `json:"reason,omitempty"` + Reason *NameAvailabilityReason } // NameAvailabilityRequest - Name availability request payload which is exposed in the request of the resource provider. type NameAvailabilityRequest struct { // Gets or sets the name to check. - Name *string `json:"name,omitempty"` + Name *string // Gets or sets the type of the resource to check. - Type *string `json:"type,omitempty"` + Type *string } // OperationResult - Operation result payload which is exposed in the response of the resource provider. type OperationResult struct { // Gets or sets the operation end time. - EndTime *time.Time `json:"endTime,omitempty"` + EndTime *time.Time // Gets or sets the operation name. - Name *string `json:"name,omitempty"` + Name *string // Gets or sets the operation start time. - StartTime *time.Time `json:"startTime,omitempty"` -} - -// OperationsClientListOptions contains the optional parameters for the OperationsClient.NewListPager method. -type OperationsClientListOptions struct { - // placeholder for future optional parameters + StartTime *time.Time } // Resource - The core properties of the resources. type Resource struct { // READ-ONLY; Fully qualified resource Id of the resource. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; The name of the resource. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; The type of the service - e.g. "Microsoft.Blockchain" - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // ResourceProviderOperation - Operation payload which is exposed in the response of the resource provider. type ResourceProviderOperation struct { // Gets or sets operation display - Display *ResourceProviderOperationDisplay `json:"display,omitempty"` + Display *ResourceProviderOperationDisplay // Gets or sets a value indicating whether the operation is a data action or not. - IsDataAction *bool `json:"isDataAction,omitempty"` + IsDataAction *bool // Gets or sets the operation name. - Name *string `json:"name,omitempty"` + Name *string // Gets or sets the origin. - Origin *string `json:"origin,omitempty"` + Origin *string } // ResourceProviderOperationCollection - Collection of operation payload which is exposed in the response of the resource @@ -334,105 +258,100 @@ type ResourceProviderOperation struct { type ResourceProviderOperationCollection struct { // Gets or sets the URL, that the client should use to fetch the next page (per server side paging). It's null for now, added // for future use. - NextLink *string `json:"nextLink,omitempty"` + NextLink *string // Gets or sets the collection of operations. - Value []*ResourceProviderOperation `json:"value,omitempty"` + Value []*ResourceProviderOperation } // ResourceProviderOperationDisplay - Operation display payload which is exposed in the response of the resource provider. type ResourceProviderOperationDisplay struct { // Gets or sets the description of the provider for display purposes. - Description *string `json:"description,omitempty"` + Description *string // Gets or sets the name of the operation for display purposes. - Operation *string `json:"operation,omitempty"` + Operation *string // Gets or sets the name of the provider for display purposes. - Provider *string `json:"provider,omitempty"` + Provider *string // Gets or sets the name of the resource type for display purposes. - Resource *string `json:"resource,omitempty"` + Resource *string } // ResourceTypeSKU - Resource type Sku. type ResourceTypeSKU struct { // Gets or sets the resource type - ResourceType *string `json:"resourceType,omitempty"` + ResourceType *string // Gets or sets the Skus - SKUs []*SKUSetting `json:"skus,omitempty"` + SKUs []*SKUSetting } // ResourceTypeSKUCollection - Collection of the resource type Sku. type ResourceTypeSKUCollection struct { // Gets or sets the collection of resource type Sku. - Value []*ResourceTypeSKU `json:"value,omitempty"` + Value []*ResourceTypeSKU } // SKU - Blockchain member Sku in payload type SKU struct { // Gets or sets Sku name - Name *string `json:"name,omitempty"` + Name *string // Gets or sets Sku tier - Tier *string `json:"tier,omitempty"` + Tier *string } // SKUSetting - Sku Setting. type SKUSetting struct { // Gets or sets the locations. - Locations []*string `json:"locations,omitempty"` + Locations []*string // Gets or sets the Sku name. - Name *string `json:"name,omitempty"` + Name *string // Gets or sets the required features. - RequiredFeatures []*string `json:"requiredFeatures,omitempty"` + RequiredFeatures []*string // Gets or sets the Sku tier. - Tier *string `json:"tier,omitempty"` -} - -// SKUsClientListOptions contains the optional parameters for the SKUsClient.List method. -type SKUsClientListOptions struct { - // placeholder for future optional parameters + Tier *string } // TrackedResource - The resource model definition for a top level resource. type TrackedResource struct { // The GEO location of the blockchain service. - Location *string `json:"location,omitempty"` + Location *string // Tags of the service which is a list of key value pairs that describes the resource. - Tags map[string]*string `json:"tags,omitempty"` + Tags map[string]*string // READ-ONLY; Fully qualified resource Id of the resource. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; The name of the resource. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; The type of the service - e.g. "Microsoft.Blockchain" - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // TransactionNode - Payload of the transaction node which is the request/response of the resource provider. type TransactionNode struct { // Gets or sets the transaction node location. - Location *string `json:"location,omitempty"` + Location *string // Gets or sets the blockchain member properties. - Properties *TransactionNodeProperties `json:"properties,omitempty"` + Properties *TransactionNodeProperties // READ-ONLY; Fully qualified resource Id of the resource. - ID *string `json:"id,omitempty" azure:"ro"` + ID *string // READ-ONLY; The name of the resource. - Name *string `json:"name,omitempty" azure:"ro"` + Name *string // READ-ONLY; The type of the service - e.g. "Microsoft.Blockchain" - Type *string `json:"type,omitempty" azure:"ro"` + Type *string } // TransactionNodeCollection - Collection of transaction node payload which is exposed in the request/response of the resource @@ -440,86 +359,44 @@ type TransactionNode struct { type TransactionNodeCollection struct { // Gets or sets the URL, that the client should use to fetch the next page (per server side paging). It's null for now, added // for future use. - NextLink *string `json:"nextLink,omitempty"` + NextLink *string // Gets or sets the collection of transaction nodes. - Value []*TransactionNode `json:"value,omitempty"` + Value []*TransactionNode } // TransactionNodeProperties - Payload of transaction node properties payload in the transaction node payload. type TransactionNodeProperties struct { // Gets or sets the firewall rules. - FirewallRules []*FirewallRule `json:"firewallRules,omitempty"` + FirewallRules []*FirewallRule // Sets the transaction node dns endpoint basic auth password. - Password *string `json:"password,omitempty"` + Password *string // READ-ONLY; Gets or sets the transaction node dns endpoint. - DNS *string `json:"dns,omitempty" azure:"ro"` + DNS *string // READ-ONLY; Gets or sets the blockchain member provision state. - ProvisioningState *NodeProvisioningState `json:"provisioningState,omitempty" azure:"ro"` + ProvisioningState *NodeProvisioningState // READ-ONLY; Gets or sets the transaction node public key. - PublicKey *string `json:"publicKey,omitempty" azure:"ro"` + PublicKey *string // READ-ONLY; Gets or sets the transaction node dns endpoint basic auth user name. - UserName *string `json:"userName,omitempty" azure:"ro"` + UserName *string } // TransactionNodePropertiesUpdate - Update the payload of the transaction node properties in the transaction node payload. type TransactionNodePropertiesUpdate struct { // Gets or sets the firewall rules. - FirewallRules []*FirewallRule `json:"firewallRules,omitempty"` + FirewallRules []*FirewallRule // Sets the transaction node dns endpoint basic auth password. - Password *string `json:"password,omitempty"` + Password *string } // TransactionNodeUpdate - Update the transaction node payload which is exposed in the request/response of the resource provider. type TransactionNodeUpdate struct { // Gets or sets the transaction node update properties. - Properties *TransactionNodePropertiesUpdate `json:"properties,omitempty"` -} - -// TransactionNodesClientBeginCreateOptions contains the optional parameters for the TransactionNodesClient.BeginCreate method. -type TransactionNodesClientBeginCreateOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string - // Payload to create the transaction node. - TransactionNode *TransactionNode -} - -// TransactionNodesClientBeginDeleteOptions contains the optional parameters for the TransactionNodesClient.BeginDelete method. -type TransactionNodesClientBeginDeleteOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// TransactionNodesClientGetOptions contains the optional parameters for the TransactionNodesClient.Get method. -type TransactionNodesClientGetOptions struct { - // placeholder for future optional parameters -} - -// TransactionNodesClientListAPIKeysOptions contains the optional parameters for the TransactionNodesClient.ListAPIKeys method. -type TransactionNodesClientListAPIKeysOptions struct { - // placeholder for future optional parameters -} - -// TransactionNodesClientListOptions contains the optional parameters for the TransactionNodesClient.NewListPager method. -type TransactionNodesClientListOptions struct { - // placeholder for future optional parameters -} - -// TransactionNodesClientListRegenerateAPIKeysOptions contains the optional parameters for the TransactionNodesClient.ListRegenerateAPIKeys -// method. -type TransactionNodesClientListRegenerateAPIKeysOptions struct { - // api key to be regenerated - APIKey *APIKey -} - -// TransactionNodesClientUpdateOptions contains the optional parameters for the TransactionNodesClient.Update method. -type TransactionNodesClientUpdateOptions struct { - // Payload to create the transaction node. - TransactionNode *TransactionNodeUpdate + Properties *TransactionNodePropertiesUpdate } diff --git a/sdk/resourcemanager/blockchain/armblockchain/models_serde.go b/sdk/resourcemanager/blockchain/armblockchain/models_serde.go index c89c1c867cf5..cc8745cf2882 100644 --- a/sdk/resourcemanager/blockchain/armblockchain/models_serde.go +++ b/sdk/resourcemanager/blockchain/armblockchain/models_serde.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblockchain @@ -135,9 +134,9 @@ func (c *ConsortiumCollection) UnmarshalJSON(data []byte) error { // MarshalJSON implements the json.Marshaller interface for type ConsortiumMember. func (c ConsortiumMember) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populateTimeRFC3339(objectMap, "dateModified", c.DateModified) + populateDateTimeRFC3339(objectMap, "dateModified", c.DateModified) populate(objectMap, "displayName", c.DisplayName) - populateTimeRFC3339(objectMap, "joinDate", c.JoinDate) + populateDateTimeRFC3339(objectMap, "joinDate", c.JoinDate) populate(objectMap, "name", c.Name) populate(objectMap, "role", c.Role) populate(objectMap, "status", c.Status) @@ -155,13 +154,13 @@ func (c *ConsortiumMember) UnmarshalJSON(data []byte) error { var err error switch key { case "dateModified": - err = unpopulateTimeRFC3339(val, "DateModified", &c.DateModified) + err = unpopulateDateTimeRFC3339(val, "DateModified", &c.DateModified) delete(rawMsg, key) case "displayName": err = unpopulate(val, "DisplayName", &c.DisplayName) delete(rawMsg, key) case "joinDate": - err = unpopulateTimeRFC3339(val, "JoinDate", &c.JoinDate) + err = unpopulateDateTimeRFC3339(val, "JoinDate", &c.JoinDate) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &c.Name) @@ -572,9 +571,9 @@ func (n *NameAvailabilityRequest) UnmarshalJSON(data []byte) error { // MarshalJSON implements the json.Marshaller interface for type OperationResult. func (o OperationResult) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populateTimeRFC3339(objectMap, "endTime", o.EndTime) + populateDateTimeRFC3339(objectMap, "endTime", o.EndTime) populate(objectMap, "name", o.Name) - populateTimeRFC3339(objectMap, "startTime", o.StartTime) + populateDateTimeRFC3339(objectMap, "startTime", o.StartTime) return json.Marshal(objectMap) } @@ -588,13 +587,13 @@ func (o *OperationResult) UnmarshalJSON(data []byte) error { var err error switch key { case "endTime": - err = unpopulateTimeRFC3339(val, "EndTime", &o.EndTime) + err = unpopulateDateTimeRFC3339(val, "EndTime", &o.EndTime) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &o.Name) delete(rawMsg, key) case "startTime": - err = unpopulateTimeRFC3339(val, "StartTime", &o.StartTime) + err = unpopulateDateTimeRFC3339(val, "StartTime", &o.StartTime) delete(rawMsg, key) } if err != nil { diff --git a/sdk/resourcemanager/blockchain/armblockchain/operations_client.go b/sdk/resourcemanager/blockchain/armblockchain/operations_client.go index 76d7ffa00661..bac02df959eb 100644 --- a/sdk/resourcemanager/blockchain/armblockchain/operations_client.go +++ b/sdk/resourcemanager/blockchain/armblockchain/operations_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblockchain @@ -28,7 +27,7 @@ type OperationsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewOperationsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*OperationsClient, error) { - cl, err := arm.NewClient(moduleName+".OperationsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -48,25 +47,20 @@ func (client *OperationsClient) NewListPager(options *OperationsClientListOption return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *OperationsClientListResponse) (OperationsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "OperationsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return OperationsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return OperationsClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return OperationsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/blockchain/armblockchain/options.go b/sdk/resourcemanager/blockchain/armblockchain/options.go new file mode 100644 index 000000000000..61a42539fbbb --- /dev/null +++ b/sdk/resourcemanager/blockchain/armblockchain/options.go @@ -0,0 +1,133 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package armblockchain + +// LocationsClientCheckNameAvailabilityOptions contains the optional parameters for the LocationsClient.CheckNameAvailability +// method. +type LocationsClientCheckNameAvailabilityOptions struct { + // Name availability request payload. + NameAvailabilityRequest *NameAvailabilityRequest +} + +// LocationsClientListConsortiumsOptions contains the optional parameters for the LocationsClient.ListConsortiums method. +type LocationsClientListConsortiumsOptions struct { + // placeholder for future optional parameters +} + +// MemberOperationResultsClientGetOptions contains the optional parameters for the MemberOperationResultsClient.Get method. +type MemberOperationResultsClientGetOptions struct { + // placeholder for future optional parameters +} + +// MembersClientBeginCreateOptions contains the optional parameters for the MembersClient.BeginCreate method. +type MembersClientBeginCreateOptions struct { + // Payload to create a blockchain member. + BlockchainMember *Member + + // Resumes the LRO from the provided token. + ResumeToken string +} + +// MembersClientBeginDeleteOptions contains the optional parameters for the MembersClient.BeginDelete method. +type MembersClientBeginDeleteOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// MembersClientGetOptions contains the optional parameters for the MembersClient.Get method. +type MembersClientGetOptions struct { + // placeholder for future optional parameters +} + +// MembersClientListAPIKeysOptions contains the optional parameters for the MembersClient.ListAPIKeys method. +type MembersClientListAPIKeysOptions struct { + // placeholder for future optional parameters +} + +// MembersClientListAllOptions contains the optional parameters for the MembersClient.NewListAllPager method. +type MembersClientListAllOptions struct { + // placeholder for future optional parameters +} + +// MembersClientListConsortiumMembersOptions contains the optional parameters for the MembersClient.NewListConsortiumMembersPager +// method. +type MembersClientListConsortiumMembersOptions struct { + // placeholder for future optional parameters +} + +// MembersClientListOptions contains the optional parameters for the MembersClient.NewListPager method. +type MembersClientListOptions struct { + // placeholder for future optional parameters +} + +// MembersClientListRegenerateAPIKeysOptions contains the optional parameters for the MembersClient.ListRegenerateAPIKeys +// method. +type MembersClientListRegenerateAPIKeysOptions struct { + // api key to be regenerate + APIKey *APIKey +} + +// MembersClientUpdateOptions contains the optional parameters for the MembersClient.Update method. +type MembersClientUpdateOptions struct { + // Payload to update the blockchain member. + BlockchainMember *MemberUpdate +} + +// OperationsClientListOptions contains the optional parameters for the OperationsClient.NewListPager method. +type OperationsClientListOptions struct { + // placeholder for future optional parameters +} + +// SKUsClientListOptions contains the optional parameters for the SKUsClient.List method. +type SKUsClientListOptions struct { + // placeholder for future optional parameters +} + +// TransactionNodesClientBeginCreateOptions contains the optional parameters for the TransactionNodesClient.BeginCreate method. +type TransactionNodesClientBeginCreateOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string + + // Payload to create the transaction node. + TransactionNode *TransactionNode +} + +// TransactionNodesClientBeginDeleteOptions contains the optional parameters for the TransactionNodesClient.BeginDelete method. +type TransactionNodesClientBeginDeleteOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// TransactionNodesClientGetOptions contains the optional parameters for the TransactionNodesClient.Get method. +type TransactionNodesClientGetOptions struct { + // placeholder for future optional parameters +} + +// TransactionNodesClientListAPIKeysOptions contains the optional parameters for the TransactionNodesClient.ListAPIKeys method. +type TransactionNodesClientListAPIKeysOptions struct { + // placeholder for future optional parameters +} + +// TransactionNodesClientListOptions contains the optional parameters for the TransactionNodesClient.NewListPager method. +type TransactionNodesClientListOptions struct { + // placeholder for future optional parameters +} + +// TransactionNodesClientListRegenerateAPIKeysOptions contains the optional parameters for the TransactionNodesClient.ListRegenerateAPIKeys +// method. +type TransactionNodesClientListRegenerateAPIKeysOptions struct { + // api key to be regenerated + APIKey *APIKey +} + +// TransactionNodesClientUpdateOptions contains the optional parameters for the TransactionNodesClient.Update method. +type TransactionNodesClientUpdateOptions struct { + // Payload to create the transaction node. + TransactionNode *TransactionNodeUpdate +} diff --git a/sdk/resourcemanager/blockchain/armblockchain/response_types.go b/sdk/resourcemanager/blockchain/armblockchain/response_types.go index 33fc09bb702a..412c3762bfc4 100644 --- a/sdk/resourcemanager/blockchain/armblockchain/response_types.go +++ b/sdk/resourcemanager/blockchain/armblockchain/response_types.go @@ -3,29 +3,32 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblockchain // LocationsClientCheckNameAvailabilityResponse contains the response from method LocationsClient.CheckNameAvailability. type LocationsClientCheckNameAvailabilityResponse struct { + // Name availability payload which is exposed in the response of the resource provider. NameAvailability } // LocationsClientListConsortiumsResponse contains the response from method LocationsClient.ListConsortiums. type LocationsClientListConsortiumsResponse struct { + // Collection of the consortium payload. ConsortiumCollection } // MemberOperationResultsClientGetResponse contains the response from method MemberOperationResultsClient.Get. type MemberOperationResultsClientGetResponse struct { + // Operation result payload which is exposed in the response of the resource provider. OperationResult } // MembersClientCreateResponse contains the response from method MembersClient.BeginCreate. type MembersClientCreateResponse struct { + // Payload of the blockchain member which is exposed in the request/response of the resource provider. Member } @@ -36,51 +39,61 @@ type MembersClientDeleteResponse struct { // MembersClientGetResponse contains the response from method MembersClient.Get. type MembersClientGetResponse struct { + // Payload of the blockchain member which is exposed in the request/response of the resource provider. Member } // MembersClientListAPIKeysResponse contains the response from method MembersClient.ListAPIKeys. type MembersClientListAPIKeysResponse struct { + // Collection of the API key payload which is exposed in the response of the resource provider. APIKeyCollection } // MembersClientListAllResponse contains the response from method MembersClient.NewListAllPager. type MembersClientListAllResponse struct { + // Collection of the blockchain member payload which is exposed in the request/response of the resource provider. MemberCollection } // MembersClientListConsortiumMembersResponse contains the response from method MembersClient.NewListConsortiumMembersPager. type MembersClientListConsortiumMembersResponse struct { + // Collection of consortium payload. ConsortiumMemberCollection } // MembersClientListRegenerateAPIKeysResponse contains the response from method MembersClient.ListRegenerateAPIKeys. type MembersClientListRegenerateAPIKeysResponse struct { + // Collection of the API key payload which is exposed in the response of the resource provider. APIKeyCollection } // MembersClientListResponse contains the response from method MembersClient.NewListPager. type MembersClientListResponse struct { + // Collection of the blockchain member payload which is exposed in the request/response of the resource provider. MemberCollection } // MembersClientUpdateResponse contains the response from method MembersClient.Update. type MembersClientUpdateResponse struct { + // Payload of the blockchain member which is exposed in the request/response of the resource provider. Member } // OperationsClientListResponse contains the response from method OperationsClient.NewListPager. type OperationsClientListResponse struct { + // Collection of operation payload which is exposed in the response of the resource provider. ResourceProviderOperationCollection } // SKUsClientListResponse contains the response from method SKUsClient.List. type SKUsClientListResponse struct { + // Collection of the resource type Sku. ResourceTypeSKUCollection } // TransactionNodesClientCreateResponse contains the response from method TransactionNodesClient.BeginCreate. type TransactionNodesClientCreateResponse struct { + // Payload of the transaction node which is the request/response of the resource provider. TransactionNode } @@ -91,25 +104,30 @@ type TransactionNodesClientDeleteResponse struct { // TransactionNodesClientGetResponse contains the response from method TransactionNodesClient.Get. type TransactionNodesClientGetResponse struct { + // Payload of the transaction node which is the request/response of the resource provider. TransactionNode } // TransactionNodesClientListAPIKeysResponse contains the response from method TransactionNodesClient.ListAPIKeys. type TransactionNodesClientListAPIKeysResponse struct { + // Collection of the API key payload which is exposed in the response of the resource provider. APIKeyCollection } // TransactionNodesClientListRegenerateAPIKeysResponse contains the response from method TransactionNodesClient.ListRegenerateAPIKeys. type TransactionNodesClientListRegenerateAPIKeysResponse struct { + // Collection of the API key payload which is exposed in the response of the resource provider. APIKeyCollection } // TransactionNodesClientListResponse contains the response from method TransactionNodesClient.NewListPager. type TransactionNodesClientListResponse struct { + // Collection of transaction node payload which is exposed in the request/response of the resource provider. TransactionNodeCollection } // TransactionNodesClientUpdateResponse contains the response from method TransactionNodesClient.Update. type TransactionNodesClientUpdateResponse struct { + // Payload of the transaction node which is the request/response of the resource provider. TransactionNode } diff --git a/sdk/resourcemanager/blockchain/armblockchain/skus_client.go b/sdk/resourcemanager/blockchain/armblockchain/skus_client.go index 5aa7c7e580b0..ebe6029f58f6 100644 --- a/sdk/resourcemanager/blockchain/armblockchain/skus_client.go +++ b/sdk/resourcemanager/blockchain/armblockchain/skus_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblockchain @@ -34,7 +33,7 @@ type SKUsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewSKUsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*SKUsClient, error) { - cl, err := arm.NewClient(moduleName+".SKUsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -51,18 +50,25 @@ func NewSKUsClient(subscriptionID string, credential azcore.TokenCredential, opt // Generated from API version 2018-06-01-preview // - options - SKUsClientListOptions contains the optional parameters for the SKUsClient.List method. func (client *SKUsClient) List(ctx context.Context, options *SKUsClientListOptions) (SKUsClientListResponse, error) { + var err error + const operationName = "SKUsClient.List" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.listCreateRequest(ctx, options) if err != nil { return SKUsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return SKUsClientListResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return SKUsClientListResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return SKUsClientListResponse{}, err } - return client.listHandleResponse(resp) + resp, err := client.listHandleResponse(httpResp) + return resp, err } // listCreateRequest creates the List request. diff --git a/sdk/resourcemanager/blockchain/armblockchain/time_rfc3339.go b/sdk/resourcemanager/blockchain/armblockchain/time_rfc3339.go index 6aeeec844b4c..41c2bc55e4ed 100644 --- a/sdk/resourcemanager/blockchain/armblockchain/time_rfc3339.go +++ b/sdk/resourcemanager/blockchain/armblockchain/time_rfc3339.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblockchain @@ -19,50 +18,50 @@ import ( "time" ) -const ( - utcLayoutJSON = `"2006-01-02T15:04:05.999999999"` - utcLayout = "2006-01-02T15:04:05.999999999" - rfc3339JSON = `"` + time.RFC3339Nano + `"` -) - // Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases. var tzOffsetRegex = regexp.MustCompile(`(Z|z|\+|-)(\d+:\d+)*"*$`) -type timeRFC3339 time.Time +const ( + utcDateTimeJSON = `"2006-01-02T15:04:05.999999999"` + utcDateTime = "2006-01-02T15:04:05.999999999" + dateTimeJSON = `"` + time.RFC3339Nano + `"` +) + +type dateTimeRFC3339 time.Time -func (t timeRFC3339) MarshalJSON() (json []byte, err error) { +func (t dateTimeRFC3339) MarshalJSON() ([]byte, error) { tt := time.Time(t) return tt.MarshalJSON() } -func (t timeRFC3339) MarshalText() (text []byte, err error) { +func (t dateTimeRFC3339) MarshalText() ([]byte, error) { tt := time.Time(t) return tt.MarshalText() } -func (t *timeRFC3339) UnmarshalJSON(data []byte) error { - layout := utcLayoutJSON +func (t *dateTimeRFC3339) UnmarshalJSON(data []byte) error { + layout := utcDateTimeJSON if tzOffsetRegex.Match(data) { - layout = rfc3339JSON + layout = dateTimeJSON } return t.Parse(layout, string(data)) } -func (t *timeRFC3339) UnmarshalText(data []byte) (err error) { - layout := utcLayout +func (t *dateTimeRFC3339) UnmarshalText(data []byte) error { + layout := utcDateTime if tzOffsetRegex.Match(data) { layout = time.RFC3339Nano } return t.Parse(layout, string(data)) } -func (t *timeRFC3339) Parse(layout, value string) error { +func (t *dateTimeRFC3339) Parse(layout, value string) error { p, err := time.Parse(layout, strings.ToUpper(value)) - *t = timeRFC3339(p) + *t = dateTimeRFC3339(p) return err } -func populateTimeRFC3339(m map[string]any, k string, t *time.Time) { +func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) { if t == nil { return } else if azcore.IsNullValue(t) { @@ -71,14 +70,14 @@ func populateTimeRFC3339(m map[string]any, k string, t *time.Time) { } else if reflect.ValueOf(t).IsNil() { return } - m[k] = (*timeRFC3339)(t) + m[k] = (*dateTimeRFC3339)(t) } -func unpopulateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { +func unpopulateDateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { if data == nil || strings.EqualFold(string(data), "null") { return nil } - var aux timeRFC3339 + var aux dateTimeRFC3339 if err := json.Unmarshal(data, &aux); err != nil { return fmt.Errorf("struct field %s: %v", fn, err) } diff --git a/sdk/resourcemanager/blockchain/armblockchain/transactionnodes_client.go b/sdk/resourcemanager/blockchain/armblockchain/transactionnodes_client.go index d6614a74732a..f8d631a9e1ef 100644 --- a/sdk/resourcemanager/blockchain/armblockchain/transactionnodes_client.go +++ b/sdk/resourcemanager/blockchain/armblockchain/transactionnodes_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblockchain @@ -34,7 +33,7 @@ type TransactionNodesClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewTransactionNodesClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*TransactionNodesClient, error) { - cl, err := arm.NewClient(moduleName+".TransactionNodesClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -61,9 +60,14 @@ func (client *TransactionNodesClient) BeginCreate(ctx context.Context, blockchai if err != nil { return nil, err } - return runtime.NewPoller[TransactionNodesClientCreateResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[TransactionNodesClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[TransactionNodesClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[TransactionNodesClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -72,18 +76,24 @@ func (client *TransactionNodesClient) BeginCreate(ctx context.Context, blockchai // // Generated from API version 2018-06-01-preview func (client *TransactionNodesClient) create(ctx context.Context, blockchainMemberName string, transactionNodeName string, resourceGroupName string, options *TransactionNodesClientBeginCreateOptions) (*http.Response, error) { + var err error + const operationName = "TransactionNodesClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, blockchainMemberName, transactionNodeName, resourceGroupName, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusCreated) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusCreated) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // createCreateRequest creates the Create request. @@ -114,7 +124,10 @@ func (client *TransactionNodesClient) createCreateRequest(ctx context.Context, b req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} if options != nil && options.TransactionNode != nil { - return req, runtime.MarshalAsJSON(req, *options.TransactionNode) + if err := runtime.MarshalAsJSON(req, *options.TransactionNode); err != nil { + return nil, err + } + return req, nil } return req, nil } @@ -135,9 +148,14 @@ func (client *TransactionNodesClient) BeginDelete(ctx context.Context, blockchai if err != nil { return nil, err } - return runtime.NewPoller[TransactionNodesClientDeleteResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[TransactionNodesClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[TransactionNodesClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[TransactionNodesClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -146,18 +164,24 @@ func (client *TransactionNodesClient) BeginDelete(ctx context.Context, blockchai // // Generated from API version 2018-06-01-preview func (client *TransactionNodesClient) deleteOperation(ctx context.Context, blockchainMemberName string, transactionNodeName string, resourceGroupName string, options *TransactionNodesClientBeginDeleteOptions) (*http.Response, error) { + var err error + const operationName = "TransactionNodesClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, blockchainMemberName, transactionNodeName, resourceGroupName, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusAccepted, http.StatusNoContent) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusAccepted, http.StatusNoContent) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // deleteCreateRequest creates the Delete request. @@ -199,18 +223,25 @@ func (client *TransactionNodesClient) deleteCreateRequest(ctx context.Context, b // Resource Manager API or the portal. // - options - TransactionNodesClientGetOptions contains the optional parameters for the TransactionNodesClient.Get method. func (client *TransactionNodesClient) Get(ctx context.Context, blockchainMemberName string, transactionNodeName string, resourceGroupName string, options *TransactionNodesClientGetOptions) (TransactionNodesClientGetResponse, error) { + var err error + const operationName = "TransactionNodesClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, blockchainMemberName, transactionNodeName, resourceGroupName, options) if err != nil { return TransactionNodesClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return TransactionNodesClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return TransactionNodesClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return TransactionNodesClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -266,25 +297,20 @@ func (client *TransactionNodesClient) NewListPager(blockchainMemberName string, return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *TransactionNodesClientListResponse) (TransactionNodesClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, blockchainMemberName, resourceGroupName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return TransactionNodesClientListResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "TransactionNodesClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, blockchainMemberName, resourceGroupName, options) + }, nil) if err != nil { return TransactionNodesClientListResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return TransactionNodesClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -334,18 +360,25 @@ func (client *TransactionNodesClient) listHandleResponse(resp *http.Response) (T // - options - TransactionNodesClientListAPIKeysOptions contains the optional parameters for the TransactionNodesClient.ListAPIKeys // method. func (client *TransactionNodesClient) ListAPIKeys(ctx context.Context, blockchainMemberName string, transactionNodeName string, resourceGroupName string, options *TransactionNodesClientListAPIKeysOptions) (TransactionNodesClientListAPIKeysResponse, error) { + var err error + const operationName = "TransactionNodesClient.ListAPIKeys" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.listAPIKeysCreateRequest(ctx, blockchainMemberName, transactionNodeName, resourceGroupName, options) if err != nil { return TransactionNodesClientListAPIKeysResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return TransactionNodesClientListAPIKeysResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return TransactionNodesClientListAPIKeysResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return TransactionNodesClientListAPIKeysResponse{}, err } - return client.listAPIKeysHandleResponse(resp) + resp, err := client.listAPIKeysHandleResponse(httpResp) + return resp, err } // listAPIKeysCreateRequest creates the ListAPIKeys request. @@ -398,18 +431,25 @@ func (client *TransactionNodesClient) listAPIKeysHandleResponse(resp *http.Respo // - options - TransactionNodesClientListRegenerateAPIKeysOptions contains the optional parameters for the TransactionNodesClient.ListRegenerateAPIKeys // method. func (client *TransactionNodesClient) ListRegenerateAPIKeys(ctx context.Context, blockchainMemberName string, transactionNodeName string, resourceGroupName string, options *TransactionNodesClientListRegenerateAPIKeysOptions) (TransactionNodesClientListRegenerateAPIKeysResponse, error) { + var err error + const operationName = "TransactionNodesClient.ListRegenerateAPIKeys" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.listRegenerateAPIKeysCreateRequest(ctx, blockchainMemberName, transactionNodeName, resourceGroupName, options) if err != nil { return TransactionNodesClientListRegenerateAPIKeysResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return TransactionNodesClientListRegenerateAPIKeysResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return TransactionNodesClientListRegenerateAPIKeysResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return TransactionNodesClientListRegenerateAPIKeysResponse{}, err } - return client.listRegenerateAPIKeysHandleResponse(resp) + resp, err := client.listRegenerateAPIKeysHandleResponse(httpResp) + return resp, err } // listRegenerateAPIKeysCreateRequest creates the ListRegenerateAPIKeys request. @@ -440,7 +480,10 @@ func (client *TransactionNodesClient) listRegenerateAPIKeysCreateRequest(ctx con req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} if options != nil && options.APIKey != nil { - return req, runtime.MarshalAsJSON(req, *options.APIKey) + if err := runtime.MarshalAsJSON(req, *options.APIKey); err != nil { + return nil, err + } + return req, nil } return req, nil } @@ -464,18 +507,25 @@ func (client *TransactionNodesClient) listRegenerateAPIKeysHandleResponse(resp * // Resource Manager API or the portal. // - options - TransactionNodesClientUpdateOptions contains the optional parameters for the TransactionNodesClient.Update method. func (client *TransactionNodesClient) Update(ctx context.Context, blockchainMemberName string, transactionNodeName string, resourceGroupName string, options *TransactionNodesClientUpdateOptions) (TransactionNodesClientUpdateResponse, error) { + var err error + const operationName = "TransactionNodesClient.Update" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, blockchainMemberName, transactionNodeName, resourceGroupName, options) if err != nil { return TransactionNodesClientUpdateResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return TransactionNodesClientUpdateResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return TransactionNodesClientUpdateResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return TransactionNodesClientUpdateResponse{}, err } - return client.updateHandleResponse(resp) + resp, err := client.updateHandleResponse(httpResp) + return resp, err } // updateCreateRequest creates the Update request. @@ -506,7 +556,10 @@ func (client *TransactionNodesClient) updateCreateRequest(ctx context.Context, b req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} if options != nil && options.TransactionNode != nil { - return req, runtime.MarshalAsJSON(req, *options.TransactionNode) + if err := runtime.MarshalAsJSON(req, *options.TransactionNode); err != nil { + return nil, err + } + return req, nil } return req, nil } From 04a1c618d4681d1541f19fc6353aed8c39a468b1 Mon Sep 17 00:00:00 2001 From: Alancere <804873052@qq.com> Date: Tue, 21 Nov 2023 16:07:17 +0800 Subject: [PATCH 04/10] [Release] sdk/resourcemanager/blueprint/armblueprint/0.7.0 generation from spec commit: 164375e67a1bffb207bcf603772c289dbe42d7b5 --- .../blueprint/armblueprint/CHANGELOG.md | 6 + .../blueprint/armblueprint/README.md | 7 + .../armblueprint/artifacts_client.go | 76 +++-- .../assignmentoperations_client.go | 41 +-- .../armblueprint/assignments_client.go | 91 ++++-- .../blueprint/armblueprint/autorest.md | 2 +- .../armblueprint/blueprints_client.go | 76 +++-- .../blueprint/armblueprint/client_factory.go | 35 ++- .../blueprint/armblueprint/constants.go | 7 +- .../armblueprint/fake/artifacts_server.go | 250 ++++++++++++++++ .../fake/assignmentoperations_server.go | 156 ++++++++++ .../armblueprint/fake/assignments_server.go | 281 ++++++++++++++++++ .../armblueprint/fake/blueprints_server.go | 230 ++++++++++++++ .../blueprint/armblueprint/fake/internal.go | 85 ++++++ .../armblueprint/fake/polymorphic_helpers.go | 39 +++ .../fake/publishedartifacts_server.go | 164 ++++++++++ .../fake/publishedblueprints_server.go | 253 ++++++++++++++++ .../armblueprint/fake/server_factory.go | 106 +++++++ .../armblueprint/fake/time_rfc3339.go | 86 ++++++ .../blueprint/armblueprint/go.mod | 20 +- .../blueprint/armblueprint/go.sum | 46 +-- .../blueprint/armblueprint/interfaces.go | 18 ++ .../blueprint/armblueprint/models.go | 132 +------- .../blueprint/armblueprint/models_serde.go | 27 +- .../blueprint/armblueprint/options.go | 117 ++++++++ .../armblueprint/polymorphic_helpers.go | 8 +- .../armblueprint/publishedartifacts_client.go | 41 +-- .../publishedblueprints_client.go | 76 +++-- .../blueprint/armblueprint/response_types.go | 24 +- .../blueprint/armblueprint/time_rfc3339.go | 43 ++- 30 files changed, 2164 insertions(+), 379 deletions(-) create mode 100644 sdk/resourcemanager/blueprint/armblueprint/fake/artifacts_server.go create mode 100644 sdk/resourcemanager/blueprint/armblueprint/fake/assignmentoperations_server.go create mode 100644 sdk/resourcemanager/blueprint/armblueprint/fake/assignments_server.go create mode 100644 sdk/resourcemanager/blueprint/armblueprint/fake/blueprints_server.go create mode 100644 sdk/resourcemanager/blueprint/armblueprint/fake/internal.go create mode 100644 sdk/resourcemanager/blueprint/armblueprint/fake/polymorphic_helpers.go create mode 100644 sdk/resourcemanager/blueprint/armblueprint/fake/publishedartifacts_server.go create mode 100644 sdk/resourcemanager/blueprint/armblueprint/fake/publishedblueprints_server.go create mode 100644 sdk/resourcemanager/blueprint/armblueprint/fake/server_factory.go create mode 100644 sdk/resourcemanager/blueprint/armblueprint/fake/time_rfc3339.go create mode 100644 sdk/resourcemanager/blueprint/armblueprint/interfaces.go create mode 100644 sdk/resourcemanager/blueprint/armblueprint/options.go diff --git a/sdk/resourcemanager/blueprint/armblueprint/CHANGELOG.md b/sdk/resourcemanager/blueprint/armblueprint/CHANGELOG.md index 1cafd3d701ba..b304fc0a6666 100644 --- a/sdk/resourcemanager/blueprint/armblueprint/CHANGELOG.md +++ b/sdk/resourcemanager/blueprint/armblueprint/CHANGELOG.md @@ -1,5 +1,11 @@ # Release History +## 0.7.0 (2023-11-24) +### Features Added + +- Support for test fakes and OpenTelemetry trace spans. + + ## 0.6.1 (2023-04-14) ### Bug Fixes diff --git a/sdk/resourcemanager/blueprint/armblueprint/README.md b/sdk/resourcemanager/blueprint/armblueprint/README.md index 99efec3abc2b..92256b7d6d75 100644 --- a/sdk/resourcemanager/blueprint/armblueprint/README.md +++ b/sdk/resourcemanager/blueprint/armblueprint/README.md @@ -60,6 +60,13 @@ A client groups a set of related APIs, providing access to its functionality. C client := clientFactory.NewBlueprintsClient() ``` +## Fakes + +The fake package contains types used for constructing in-memory fake servers used in unit tests. +This allows writing tests to cover various success/error conditions without the need for connecting to a live service. + +Please see https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/samples/fakes for details and examples on how to use fakes. + ## Provide Feedback If you encounter bugs or have suggestions, please diff --git a/sdk/resourcemanager/blueprint/armblueprint/artifacts_client.go b/sdk/resourcemanager/blueprint/armblueprint/artifacts_client.go index 29a1ded4f7f0..ebee2cca08cc 100644 --- a/sdk/resourcemanager/blueprint/armblueprint/artifacts_client.go +++ b/sdk/resourcemanager/blueprint/armblueprint/artifacts_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblueprint @@ -31,7 +30,7 @@ type ArtifactsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewArtifactsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*ArtifactsClient, error) { - cl, err := arm.NewClient(moduleName+".ArtifactsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -53,18 +52,25 @@ func NewArtifactsClient(credential azcore.TokenCredential, options *arm.ClientOp // - options - ArtifactsClientCreateOrUpdateOptions contains the optional parameters for the ArtifactsClient.CreateOrUpdate // method. func (client *ArtifactsClient) CreateOrUpdate(ctx context.Context, resourceScope string, blueprintName string, artifactName string, artifact ArtifactClassification, options *ArtifactsClientCreateOrUpdateOptions) (ArtifactsClientCreateOrUpdateResponse, error) { + var err error + const operationName = "ArtifactsClient.CreateOrUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createOrUpdateCreateRequest(ctx, resourceScope, blueprintName, artifactName, artifact, options) if err != nil { return ArtifactsClientCreateOrUpdateResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return ArtifactsClientCreateOrUpdateResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusCreated) { - return ArtifactsClientCreateOrUpdateResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusCreated) { + err = runtime.NewResponseError(httpResp) + return ArtifactsClientCreateOrUpdateResponse{}, err } - return client.createOrUpdateHandleResponse(resp) + resp, err := client.createOrUpdateHandleResponse(httpResp) + return resp, err } // createOrUpdateCreateRequest creates the CreateOrUpdate request. @@ -87,7 +93,10 @@ func (client *ArtifactsClient) createOrUpdateCreateRequest(ctx context.Context, reqQP.Set("api-version", "2018-11-01-preview") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, artifact) + if err := runtime.MarshalAsJSON(req, artifact); err != nil { + return nil, err + } + return req, nil } // createOrUpdateHandleResponse handles the CreateOrUpdate response. @@ -109,18 +118,25 @@ func (client *ArtifactsClient) createOrUpdateHandleResponse(resp *http.Response) // - artifactName - Name of the blueprint artifact. // - options - ArtifactsClientDeleteOptions contains the optional parameters for the ArtifactsClient.Delete method. func (client *ArtifactsClient) Delete(ctx context.Context, resourceScope string, blueprintName string, artifactName string, options *ArtifactsClientDeleteOptions) (ArtifactsClientDeleteResponse, error) { + var err error + const operationName = "ArtifactsClient.Delete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceScope, blueprintName, artifactName, options) if err != nil { return ArtifactsClientDeleteResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return ArtifactsClientDeleteResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusNoContent) { - return ArtifactsClientDeleteResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusNoContent) { + err = runtime.NewResponseError(httpResp) + return ArtifactsClientDeleteResponse{}, err } - return client.deleteHandleResponse(resp) + resp, err := client.deleteHandleResponse(httpResp) + return resp, err } // deleteCreateRequest creates the Delete request. @@ -165,18 +181,25 @@ func (client *ArtifactsClient) deleteHandleResponse(resp *http.Response) (Artifa // - artifactName - Name of the blueprint artifact. // - options - ArtifactsClientGetOptions contains the optional parameters for the ArtifactsClient.Get method. func (client *ArtifactsClient) Get(ctx context.Context, resourceScope string, blueprintName string, artifactName string, options *ArtifactsClientGetOptions) (ArtifactsClientGetResponse, error) { + var err error + const operationName = "ArtifactsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceScope, blueprintName, artifactName, options) if err != nil { return ArtifactsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return ArtifactsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ArtifactsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return ArtifactsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -224,25 +247,20 @@ func (client *ArtifactsClient) NewListPager(resourceScope string, blueprintName return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ArtifactsClientListResponse) (ArtifactsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, resourceScope, blueprintName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ArtifactsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, resourceScope, blueprintName, options) + }, nil) if err != nil { return ArtifactsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return ArtifactsClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ArtifactsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/blueprint/armblueprint/assignmentoperations_client.go b/sdk/resourcemanager/blueprint/armblueprint/assignmentoperations_client.go index a2d72cf085f7..065fdd8a8165 100644 --- a/sdk/resourcemanager/blueprint/armblueprint/assignmentoperations_client.go +++ b/sdk/resourcemanager/blueprint/armblueprint/assignmentoperations_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblueprint @@ -31,7 +30,7 @@ type AssignmentOperationsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewAssignmentOperationsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*AssignmentOperationsClient, error) { - cl, err := arm.NewClient(moduleName+".AssignmentOperationsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -52,18 +51,25 @@ func NewAssignmentOperationsClient(credential azcore.TokenCredential, options *a // - options - AssignmentOperationsClientGetOptions contains the optional parameters for the AssignmentOperationsClient.Get // method. func (client *AssignmentOperationsClient) Get(ctx context.Context, resourceScope string, assignmentName string, assignmentOperationName string, options *AssignmentOperationsClientGetOptions) (AssignmentOperationsClientGetResponse, error) { + var err error + const operationName = "AssignmentOperationsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceScope, assignmentName, assignmentOperationName, options) if err != nil { return AssignmentOperationsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return AssignmentOperationsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AssignmentOperationsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return AssignmentOperationsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -112,25 +118,20 @@ func (client *AssignmentOperationsClient) NewListPager(resourceScope string, ass return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *AssignmentOperationsClientListResponse) (AssignmentOperationsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, resourceScope, assignmentName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "AssignmentOperationsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, resourceScope, assignmentName, options) + }, nil) if err != nil { return AssignmentOperationsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return AssignmentOperationsClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AssignmentOperationsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/blueprint/armblueprint/assignments_client.go b/sdk/resourcemanager/blueprint/armblueprint/assignments_client.go index b26ddb4bedb8..6ea8d51f1115 100644 --- a/sdk/resourcemanager/blueprint/armblueprint/assignments_client.go +++ b/sdk/resourcemanager/blueprint/armblueprint/assignments_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblueprint @@ -31,7 +30,7 @@ type AssignmentsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewAssignmentsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*AssignmentsClient, error) { - cl, err := arm.NewClient(moduleName+".AssignmentsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -52,18 +51,25 @@ func NewAssignmentsClient(credential azcore.TokenCredential, options *arm.Client // - options - AssignmentsClientCreateOrUpdateOptions contains the optional parameters for the AssignmentsClient.CreateOrUpdate // method. func (client *AssignmentsClient) CreateOrUpdate(ctx context.Context, resourceScope string, assignmentName string, assignment Assignment, options *AssignmentsClientCreateOrUpdateOptions) (AssignmentsClientCreateOrUpdateResponse, error) { + var err error + const operationName = "AssignmentsClient.CreateOrUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createOrUpdateCreateRequest(ctx, resourceScope, assignmentName, assignment, options) if err != nil { return AssignmentsClientCreateOrUpdateResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return AssignmentsClientCreateOrUpdateResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusCreated) { - return AssignmentsClientCreateOrUpdateResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusCreated) { + err = runtime.NewResponseError(httpResp) + return AssignmentsClientCreateOrUpdateResponse{}, err } - return client.createOrUpdateHandleResponse(resp) + resp, err := client.createOrUpdateHandleResponse(httpResp) + return resp, err } // createOrUpdateCreateRequest creates the CreateOrUpdate request. @@ -82,7 +88,10 @@ func (client *AssignmentsClient) createOrUpdateCreateRequest(ctx context.Context reqQP.Set("api-version", "2018-11-01-preview") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, assignment) + if err := runtime.MarshalAsJSON(req, assignment); err != nil { + return nil, err + } + return req, nil } // createOrUpdateHandleResponse handles the CreateOrUpdate response. @@ -103,18 +112,25 @@ func (client *AssignmentsClient) createOrUpdateHandleResponse(resp *http.Respons // - assignmentName - Name of the blueprint assignment. // - options - AssignmentsClientDeleteOptions contains the optional parameters for the AssignmentsClient.Delete method. func (client *AssignmentsClient) Delete(ctx context.Context, resourceScope string, assignmentName string, options *AssignmentsClientDeleteOptions) (AssignmentsClientDeleteResponse, error) { + var err error + const operationName = "AssignmentsClient.Delete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceScope, assignmentName, options) if err != nil { return AssignmentsClientDeleteResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return AssignmentsClientDeleteResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusAccepted, http.StatusNoContent) { - return AssignmentsClientDeleteResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusAccepted, http.StatusNoContent) { + err = runtime.NewResponseError(httpResp) + return AssignmentsClientDeleteResponse{}, err } - return client.deleteHandleResponse(resp) + resp, err := client.deleteHandleResponse(httpResp) + return resp, err } // deleteCreateRequest creates the Delete request. @@ -157,18 +173,25 @@ func (client *AssignmentsClient) deleteHandleResponse(resp *http.Response) (Assi // - assignmentName - Name of the blueprint assignment. // - options - AssignmentsClientGetOptions contains the optional parameters for the AssignmentsClient.Get method. func (client *AssignmentsClient) Get(ctx context.Context, resourceScope string, assignmentName string, options *AssignmentsClientGetOptions) (AssignmentsClientGetResponse, error) { + var err error + const operationName = "AssignmentsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceScope, assignmentName, options) if err != nil { return AssignmentsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return AssignmentsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AssignmentsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return AssignmentsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -211,25 +234,20 @@ func (client *AssignmentsClient) NewListPager(resourceScope string, options *Ass return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *AssignmentsClientListResponse) (AssignmentsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, resourceScope, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "AssignmentsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, resourceScope, options) + }, nil) if err != nil { return AssignmentsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return AssignmentsClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AssignmentsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -267,18 +285,25 @@ func (client *AssignmentsClient) listHandleResponse(resp *http.Response) (Assign // - options - AssignmentsClientWhoIsBlueprintOptions contains the optional parameters for the AssignmentsClient.WhoIsBlueprint // method. func (client *AssignmentsClient) WhoIsBlueprint(ctx context.Context, resourceScope string, assignmentName string, options *AssignmentsClientWhoIsBlueprintOptions) (AssignmentsClientWhoIsBlueprintResponse, error) { + var err error + const operationName = "AssignmentsClient.WhoIsBlueprint" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.whoIsBlueprintCreateRequest(ctx, resourceScope, assignmentName, options) if err != nil { return AssignmentsClientWhoIsBlueprintResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return AssignmentsClientWhoIsBlueprintResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AssignmentsClientWhoIsBlueprintResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return AssignmentsClientWhoIsBlueprintResponse{}, err } - return client.whoIsBlueprintHandleResponse(resp) + resp, err := client.whoIsBlueprintHandleResponse(httpResp) + return resp, err } // whoIsBlueprintCreateRequest creates the WhoIsBlueprint request. diff --git a/sdk/resourcemanager/blueprint/armblueprint/autorest.md b/sdk/resourcemanager/blueprint/armblueprint/autorest.md index a20acd4071ca..96529abf4139 100644 --- a/sdk/resourcemanager/blueprint/armblueprint/autorest.md +++ b/sdk/resourcemanager/blueprint/armblueprint/autorest.md @@ -8,5 +8,5 @@ require: - https://github.com/Azure/azure-rest-api-specs/blob/f790e624d0d080b89d962a3bd19c65bc6a6b2f5e/specification/blueprint/resource-manager/readme.md - https://github.com/Azure/azure-rest-api-specs/blob/f790e624d0d080b89d962a3bd19c65bc6a6b2f5e/specification/blueprint/resource-manager/readme.go.md license-header: MICROSOFT_MIT_NO_VERSION -module-version: 0.6.1 +module-version: 0.7.0 ``` \ No newline at end of file diff --git a/sdk/resourcemanager/blueprint/armblueprint/blueprints_client.go b/sdk/resourcemanager/blueprint/armblueprint/blueprints_client.go index 0e100696e771..ded72c550e72 100644 --- a/sdk/resourcemanager/blueprint/armblueprint/blueprints_client.go +++ b/sdk/resourcemanager/blueprint/armblueprint/blueprints_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblueprint @@ -31,7 +30,7 @@ type BlueprintsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewBlueprintsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*BlueprintsClient, error) { - cl, err := arm.NewClient(moduleName+".BlueprintsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -52,18 +51,25 @@ func NewBlueprintsClient(credential azcore.TokenCredential, options *arm.ClientO // - options - BlueprintsClientCreateOrUpdateOptions contains the optional parameters for the BlueprintsClient.CreateOrUpdate // method. func (client *BlueprintsClient) CreateOrUpdate(ctx context.Context, resourceScope string, blueprintName string, blueprint Blueprint, options *BlueprintsClientCreateOrUpdateOptions) (BlueprintsClientCreateOrUpdateResponse, error) { + var err error + const operationName = "BlueprintsClient.CreateOrUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createOrUpdateCreateRequest(ctx, resourceScope, blueprintName, blueprint, options) if err != nil { return BlueprintsClientCreateOrUpdateResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return BlueprintsClientCreateOrUpdateResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusCreated) { - return BlueprintsClientCreateOrUpdateResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusCreated) { + err = runtime.NewResponseError(httpResp) + return BlueprintsClientCreateOrUpdateResponse{}, err } - return client.createOrUpdateHandleResponse(resp) + resp, err := client.createOrUpdateHandleResponse(httpResp) + return resp, err } // createOrUpdateCreateRequest creates the CreateOrUpdate request. @@ -82,7 +88,10 @@ func (client *BlueprintsClient) createOrUpdateCreateRequest(ctx context.Context, reqQP.Set("api-version", "2018-11-01-preview") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, blueprint) + if err := runtime.MarshalAsJSON(req, blueprint); err != nil { + return nil, err + } + return req, nil } // createOrUpdateHandleResponse handles the CreateOrUpdate response. @@ -103,18 +112,25 @@ func (client *BlueprintsClient) createOrUpdateHandleResponse(resp *http.Response // - blueprintName - Name of the blueprint definition. // - options - BlueprintsClientDeleteOptions contains the optional parameters for the BlueprintsClient.Delete method. func (client *BlueprintsClient) Delete(ctx context.Context, resourceScope string, blueprintName string, options *BlueprintsClientDeleteOptions) (BlueprintsClientDeleteResponse, error) { + var err error + const operationName = "BlueprintsClient.Delete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceScope, blueprintName, options) if err != nil { return BlueprintsClientDeleteResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return BlueprintsClientDeleteResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusNoContent) { - return BlueprintsClientDeleteResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusNoContent) { + err = runtime.NewResponseError(httpResp) + return BlueprintsClientDeleteResponse{}, err } - return client.deleteHandleResponse(resp) + resp, err := client.deleteHandleResponse(httpResp) + return resp, err } // deleteCreateRequest creates the Delete request. @@ -154,18 +170,25 @@ func (client *BlueprintsClient) deleteHandleResponse(resp *http.Response) (Bluep // - blueprintName - Name of the blueprint definition. // - options - BlueprintsClientGetOptions contains the optional parameters for the BlueprintsClient.Get method. func (client *BlueprintsClient) Get(ctx context.Context, resourceScope string, blueprintName string, options *BlueprintsClientGetOptions) (BlueprintsClientGetResponse, error) { + var err error + const operationName = "BlueprintsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceScope, blueprintName, options) if err != nil { return BlueprintsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return BlueprintsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return BlueprintsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return BlueprintsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -208,25 +231,20 @@ func (client *BlueprintsClient) NewListPager(resourceScope string, options *Blue return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *BlueprintsClientListResponse) (BlueprintsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, resourceScope, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "BlueprintsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, resourceScope, options) + }, nil) if err != nil { return BlueprintsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return BlueprintsClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return BlueprintsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/blueprint/armblueprint/client_factory.go b/sdk/resourcemanager/blueprint/armblueprint/client_factory.go index 49097af03b28..bd875657ef11 100644 --- a/sdk/resourcemanager/blueprint/armblueprint/client_factory.go +++ b/sdk/resourcemanager/blueprint/armblueprint/client_factory.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblueprint @@ -26,7 +25,7 @@ type ClientFactory struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewClientFactory(credential azcore.TokenCredential, options *arm.ClientOptions) (*ClientFactory, error) { - _, err := arm.NewClient(moduleName+".ClientFactory", moduleVersion, credential, options) + _, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -36,32 +35,38 @@ func NewClientFactory(credential azcore.TokenCredential, options *arm.ClientOpti }, nil } -func (c *ClientFactory) NewBlueprintsClient() *BlueprintsClient { - subClient, _ := NewBlueprintsClient(c.credential, c.options) +// NewArtifactsClient creates a new instance of ArtifactsClient. +func (c *ClientFactory) NewArtifactsClient() *ArtifactsClient { + subClient, _ := NewArtifactsClient(c.credential, c.options) return subClient } -func (c *ClientFactory) NewArtifactsClient() *ArtifactsClient { - subClient, _ := NewArtifactsClient(c.credential, c.options) +// NewAssignmentOperationsClient creates a new instance of AssignmentOperationsClient. +func (c *ClientFactory) NewAssignmentOperationsClient() *AssignmentOperationsClient { + subClient, _ := NewAssignmentOperationsClient(c.credential, c.options) return subClient } -func (c *ClientFactory) NewPublishedBlueprintsClient() *PublishedBlueprintsClient { - subClient, _ := NewPublishedBlueprintsClient(c.credential, c.options) +// NewAssignmentsClient creates a new instance of AssignmentsClient. +func (c *ClientFactory) NewAssignmentsClient() *AssignmentsClient { + subClient, _ := NewAssignmentsClient(c.credential, c.options) return subClient } -func (c *ClientFactory) NewPublishedArtifactsClient() *PublishedArtifactsClient { - subClient, _ := NewPublishedArtifactsClient(c.credential, c.options) +// NewBlueprintsClient creates a new instance of BlueprintsClient. +func (c *ClientFactory) NewBlueprintsClient() *BlueprintsClient { + subClient, _ := NewBlueprintsClient(c.credential, c.options) return subClient } -func (c *ClientFactory) NewAssignmentsClient() *AssignmentsClient { - subClient, _ := NewAssignmentsClient(c.credential, c.options) +// NewPublishedArtifactsClient creates a new instance of PublishedArtifactsClient. +func (c *ClientFactory) NewPublishedArtifactsClient() *PublishedArtifactsClient { + subClient, _ := NewPublishedArtifactsClient(c.credential, c.options) return subClient } -func (c *ClientFactory) NewAssignmentOperationsClient() *AssignmentOperationsClient { - subClient, _ := NewAssignmentOperationsClient(c.credential, c.options) +// NewPublishedBlueprintsClient creates a new instance of PublishedBlueprintsClient. +func (c *ClientFactory) NewPublishedBlueprintsClient() *PublishedBlueprintsClient { + subClient, _ := NewPublishedBlueprintsClient(c.credential, c.options) return subClient } diff --git a/sdk/resourcemanager/blueprint/armblueprint/constants.go b/sdk/resourcemanager/blueprint/armblueprint/constants.go index 3da7ac888744..ce733fc4af26 100644 --- a/sdk/resourcemanager/blueprint/armblueprint/constants.go +++ b/sdk/resourcemanager/blueprint/armblueprint/constants.go @@ -3,15 +3,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblueprint const ( - moduleName = "armblueprint" - moduleVersion = "v0.6.1" + moduleName = "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/blueprint/armblueprint" + moduleVersion = "v0.7.0" ) // ArtifactKind - Specifies the kind of blueprint artifact. diff --git a/sdk/resourcemanager/blueprint/armblueprint/fake/artifacts_server.go b/sdk/resourcemanager/blueprint/armblueprint/fake/artifacts_server.go new file mode 100644 index 000000000000..eeb55a2dbd91 --- /dev/null +++ b/sdk/resourcemanager/blueprint/armblueprint/fake/artifacts_server.go @@ -0,0 +1,250 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/blueprint/armblueprint" + "net/http" + "net/url" + "regexp" +) + +// ArtifactsServer is a fake server for instances of the armblueprint.ArtifactsClient type. +type ArtifactsServer struct { + // CreateOrUpdate is the fake for method ArtifactsClient.CreateOrUpdate + // HTTP status codes to indicate success: http.StatusCreated + CreateOrUpdate func(ctx context.Context, resourceScope string, blueprintName string, artifactName string, artifact armblueprint.ArtifactClassification, options *armblueprint.ArtifactsClientCreateOrUpdateOptions) (resp azfake.Responder[armblueprint.ArtifactsClientCreateOrUpdateResponse], errResp azfake.ErrorResponder) + + // Delete is the fake for method ArtifactsClient.Delete + // HTTP status codes to indicate success: http.StatusOK, http.StatusNoContent + Delete func(ctx context.Context, resourceScope string, blueprintName string, artifactName string, options *armblueprint.ArtifactsClientDeleteOptions) (resp azfake.Responder[armblueprint.ArtifactsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method ArtifactsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceScope string, blueprintName string, artifactName string, options *armblueprint.ArtifactsClientGetOptions) (resp azfake.Responder[armblueprint.ArtifactsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method ArtifactsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(resourceScope string, blueprintName string, options *armblueprint.ArtifactsClientListOptions) (resp azfake.PagerResponder[armblueprint.ArtifactsClientListResponse]) +} + +// NewArtifactsServerTransport creates a new instance of ArtifactsServerTransport with the provided implementation. +// The returned ArtifactsServerTransport instance is connected to an instance of armblueprint.ArtifactsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewArtifactsServerTransport(srv *ArtifactsServer) *ArtifactsServerTransport { + return &ArtifactsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armblueprint.ArtifactsClientListResponse]](), + } +} + +// ArtifactsServerTransport connects instances of armblueprint.ArtifactsClient to instances of ArtifactsServer. +// Don't use this type directly, use NewArtifactsServerTransport instead. +type ArtifactsServerTransport struct { + srv *ArtifactsServer + newListPager *tracker[azfake.PagerResponder[armblueprint.ArtifactsClientListResponse]] +} + +// Do implements the policy.Transporter interface for ArtifactsServerTransport. +func (a *ArtifactsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "ArtifactsClient.CreateOrUpdate": + resp, err = a.dispatchCreateOrUpdate(req) + case "ArtifactsClient.Delete": + resp, err = a.dispatchDelete(req) + case "ArtifactsClient.Get": + resp, err = a.dispatchGet(req) + case "ArtifactsClient.NewListPager": + resp, err = a.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (a *ArtifactsServerTransport) dispatchCreateOrUpdate(req *http.Request) (*http.Response, error) { + if a.srv.CreateOrUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method CreateOrUpdate not implemented")} + } + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blueprint/blueprints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/artifacts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + raw, err := readRequestBody(req) + if err != nil { + return nil, err + } + body, err := unmarshalArtifactClassification(raw) + if err != nil { + return nil, err + } + resourceScopeParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceScope")]) + if err != nil { + return nil, err + } + blueprintNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blueprintName")]) + if err != nil { + return nil, err + } + artifactNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("artifactName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.CreateOrUpdate(req.Context(), resourceScopeParam, blueprintNameParam, artifactNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusCreated}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusCreated", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ArtifactClassification, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (a *ArtifactsServerTransport) dispatchDelete(req *http.Request) (*http.Response, error) { + if a.srv.Delete == nil { + return nil, &nonRetriableError{errors.New("fake for method Delete not implemented")} + } + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blueprint/blueprints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/artifacts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceScopeParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceScope")]) + if err != nil { + return nil, err + } + blueprintNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blueprintName")]) + if err != nil { + return nil, err + } + artifactNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("artifactName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.Delete(req.Context(), resourceScopeParam, blueprintNameParam, artifactNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK, http.StatusNoContent}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusNoContent", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ArtifactClassification, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (a *ArtifactsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if a.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blueprint/blueprints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/artifacts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceScopeParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceScope")]) + if err != nil { + return nil, err + } + blueprintNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blueprintName")]) + if err != nil { + return nil, err + } + artifactNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("artifactName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.Get(req.Context(), resourceScopeParam, blueprintNameParam, artifactNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ArtifactClassification, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (a *ArtifactsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if a.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := a.newListPager.get(req) + if newListPager == nil { + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blueprint/blueprints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/artifacts` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceScopeParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceScope")]) + if err != nil { + return nil, err + } + blueprintNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blueprintName")]) + if err != nil { + return nil, err + } + resp := a.srv.NewListPager(resourceScopeParam, blueprintNameParam, nil) + newListPager = &resp + a.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armblueprint.ArtifactsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + a.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + a.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/blueprint/armblueprint/fake/assignmentoperations_server.go b/sdk/resourcemanager/blueprint/armblueprint/fake/assignmentoperations_server.go new file mode 100644 index 000000000000..6f0b786bffb8 --- /dev/null +++ b/sdk/resourcemanager/blueprint/armblueprint/fake/assignmentoperations_server.go @@ -0,0 +1,156 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/blueprint/armblueprint" + "net/http" + "net/url" + "regexp" +) + +// AssignmentOperationsServer is a fake server for instances of the armblueprint.AssignmentOperationsClient type. +type AssignmentOperationsServer struct { + // Get is the fake for method AssignmentOperationsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceScope string, assignmentName string, assignmentOperationName string, options *armblueprint.AssignmentOperationsClientGetOptions) (resp azfake.Responder[armblueprint.AssignmentOperationsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method AssignmentOperationsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(resourceScope string, assignmentName string, options *armblueprint.AssignmentOperationsClientListOptions) (resp azfake.PagerResponder[armblueprint.AssignmentOperationsClientListResponse]) +} + +// NewAssignmentOperationsServerTransport creates a new instance of AssignmentOperationsServerTransport with the provided implementation. +// The returned AssignmentOperationsServerTransport instance is connected to an instance of armblueprint.AssignmentOperationsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewAssignmentOperationsServerTransport(srv *AssignmentOperationsServer) *AssignmentOperationsServerTransport { + return &AssignmentOperationsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armblueprint.AssignmentOperationsClientListResponse]](), + } +} + +// AssignmentOperationsServerTransport connects instances of armblueprint.AssignmentOperationsClient to instances of AssignmentOperationsServer. +// Don't use this type directly, use NewAssignmentOperationsServerTransport instead. +type AssignmentOperationsServerTransport struct { + srv *AssignmentOperationsServer + newListPager *tracker[azfake.PagerResponder[armblueprint.AssignmentOperationsClientListResponse]] +} + +// Do implements the policy.Transporter interface for AssignmentOperationsServerTransport. +func (a *AssignmentOperationsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "AssignmentOperationsClient.Get": + resp, err = a.dispatchGet(req) + case "AssignmentOperationsClient.NewListPager": + resp, err = a.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (a *AssignmentOperationsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if a.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blueprint/blueprintAssignments/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/assignmentOperations/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceScopeParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceScope")]) + if err != nil { + return nil, err + } + assignmentNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("assignmentName")]) + if err != nil { + return nil, err + } + assignmentOperationNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("assignmentOperationName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.Get(req.Context(), resourceScopeParam, assignmentNameParam, assignmentOperationNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).AssignmentOperation, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (a *AssignmentOperationsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if a.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := a.newListPager.get(req) + if newListPager == nil { + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blueprint/blueprintAssignments/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/assignmentOperations` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceScopeParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceScope")]) + if err != nil { + return nil, err + } + assignmentNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("assignmentName")]) + if err != nil { + return nil, err + } + resp := a.srv.NewListPager(resourceScopeParam, assignmentNameParam, nil) + newListPager = &resp + a.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armblueprint.AssignmentOperationsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + a.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + a.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/blueprint/armblueprint/fake/assignments_server.go b/sdk/resourcemanager/blueprint/armblueprint/fake/assignments_server.go new file mode 100644 index 000000000000..63da5917d85a --- /dev/null +++ b/sdk/resourcemanager/blueprint/armblueprint/fake/assignments_server.go @@ -0,0 +1,281 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/blueprint/armblueprint" + "net/http" + "net/url" + "regexp" +) + +// AssignmentsServer is a fake server for instances of the armblueprint.AssignmentsClient type. +type AssignmentsServer struct { + // CreateOrUpdate is the fake for method AssignmentsClient.CreateOrUpdate + // HTTP status codes to indicate success: http.StatusCreated + CreateOrUpdate func(ctx context.Context, resourceScope string, assignmentName string, assignment armblueprint.Assignment, options *armblueprint.AssignmentsClientCreateOrUpdateOptions) (resp azfake.Responder[armblueprint.AssignmentsClientCreateOrUpdateResponse], errResp azfake.ErrorResponder) + + // Delete is the fake for method AssignmentsClient.Delete + // HTTP status codes to indicate success: http.StatusAccepted, http.StatusNoContent + Delete func(ctx context.Context, resourceScope string, assignmentName string, options *armblueprint.AssignmentsClientDeleteOptions) (resp azfake.Responder[armblueprint.AssignmentsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method AssignmentsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceScope string, assignmentName string, options *armblueprint.AssignmentsClientGetOptions) (resp azfake.Responder[armblueprint.AssignmentsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method AssignmentsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(resourceScope string, options *armblueprint.AssignmentsClientListOptions) (resp azfake.PagerResponder[armblueprint.AssignmentsClientListResponse]) + + // WhoIsBlueprint is the fake for method AssignmentsClient.WhoIsBlueprint + // HTTP status codes to indicate success: http.StatusOK + WhoIsBlueprint func(ctx context.Context, resourceScope string, assignmentName string, options *armblueprint.AssignmentsClientWhoIsBlueprintOptions) (resp azfake.Responder[armblueprint.AssignmentsClientWhoIsBlueprintResponse], errResp azfake.ErrorResponder) +} + +// NewAssignmentsServerTransport creates a new instance of AssignmentsServerTransport with the provided implementation. +// The returned AssignmentsServerTransport instance is connected to an instance of armblueprint.AssignmentsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewAssignmentsServerTransport(srv *AssignmentsServer) *AssignmentsServerTransport { + return &AssignmentsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armblueprint.AssignmentsClientListResponse]](), + } +} + +// AssignmentsServerTransport connects instances of armblueprint.AssignmentsClient to instances of AssignmentsServer. +// Don't use this type directly, use NewAssignmentsServerTransport instead. +type AssignmentsServerTransport struct { + srv *AssignmentsServer + newListPager *tracker[azfake.PagerResponder[armblueprint.AssignmentsClientListResponse]] +} + +// Do implements the policy.Transporter interface for AssignmentsServerTransport. +func (a *AssignmentsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "AssignmentsClient.CreateOrUpdate": + resp, err = a.dispatchCreateOrUpdate(req) + case "AssignmentsClient.Delete": + resp, err = a.dispatchDelete(req) + case "AssignmentsClient.Get": + resp, err = a.dispatchGet(req) + case "AssignmentsClient.NewListPager": + resp, err = a.dispatchNewListPager(req) + case "AssignmentsClient.WhoIsBlueprint": + resp, err = a.dispatchWhoIsBlueprint(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (a *AssignmentsServerTransport) dispatchCreateOrUpdate(req *http.Request) (*http.Response, error) { + if a.srv.CreateOrUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method CreateOrUpdate not implemented")} + } + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blueprint/blueprintAssignments/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armblueprint.Assignment](req) + if err != nil { + return nil, err + } + resourceScopeParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceScope")]) + if err != nil { + return nil, err + } + assignmentNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("assignmentName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.CreateOrUpdate(req.Context(), resourceScopeParam, assignmentNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusCreated}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusCreated", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Assignment, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (a *AssignmentsServerTransport) dispatchDelete(req *http.Request) (*http.Response, error) { + if a.srv.Delete == nil { + return nil, &nonRetriableError{errors.New("fake for method Delete not implemented")} + } + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blueprint/blueprintAssignments/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + resourceScopeParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceScope")]) + if err != nil { + return nil, err + } + assignmentNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("assignmentName")]) + if err != nil { + return nil, err + } + deleteBehaviorUnescaped, err := url.QueryUnescape(qp.Get("deleteBehavior")) + if err != nil { + return nil, err + } + deleteBehaviorParam := getOptional(armblueprint.AssignmentDeleteBehavior(deleteBehaviorUnescaped)) + var options *armblueprint.AssignmentsClientDeleteOptions + if deleteBehaviorParam != nil { + options = &armblueprint.AssignmentsClientDeleteOptions{ + DeleteBehavior: deleteBehaviorParam, + } + } + respr, errRespr := a.srv.Delete(req.Context(), resourceScopeParam, assignmentNameParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusAccepted, http.StatusNoContent}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusAccepted, http.StatusNoContent", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Assignment, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (a *AssignmentsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if a.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blueprint/blueprintAssignments/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceScopeParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceScope")]) + if err != nil { + return nil, err + } + assignmentNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("assignmentName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.Get(req.Context(), resourceScopeParam, assignmentNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Assignment, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (a *AssignmentsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if a.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := a.newListPager.get(req) + if newListPager == nil { + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blueprint/blueprintAssignments` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceScopeParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceScope")]) + if err != nil { + return nil, err + } + resp := a.srv.NewListPager(resourceScopeParam, nil) + newListPager = &resp + a.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armblueprint.AssignmentsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + a.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + a.newListPager.remove(req) + } + return resp, nil +} + +func (a *AssignmentsServerTransport) dispatchWhoIsBlueprint(req *http.Request) (*http.Response, error) { + if a.srv.WhoIsBlueprint == nil { + return nil, &nonRetriableError{errors.New("fake for method WhoIsBlueprint not implemented")} + } + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blueprint/blueprintAssignments/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/whoIsBlueprint` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceScopeParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceScope")]) + if err != nil { + return nil, err + } + assignmentNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("assignmentName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.WhoIsBlueprint(req.Context(), resourceScopeParam, assignmentNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).WhoIsBlueprintContract, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/blueprint/armblueprint/fake/blueprints_server.go b/sdk/resourcemanager/blueprint/armblueprint/fake/blueprints_server.go new file mode 100644 index 000000000000..13b31234bf43 --- /dev/null +++ b/sdk/resourcemanager/blueprint/armblueprint/fake/blueprints_server.go @@ -0,0 +1,230 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/blueprint/armblueprint" + "net/http" + "net/url" + "regexp" +) + +// BlueprintsServer is a fake server for instances of the armblueprint.BlueprintsClient type. +type BlueprintsServer struct { + // CreateOrUpdate is the fake for method BlueprintsClient.CreateOrUpdate + // HTTP status codes to indicate success: http.StatusCreated + CreateOrUpdate func(ctx context.Context, resourceScope string, blueprintName string, blueprint armblueprint.Blueprint, options *armblueprint.BlueprintsClientCreateOrUpdateOptions) (resp azfake.Responder[armblueprint.BlueprintsClientCreateOrUpdateResponse], errResp azfake.ErrorResponder) + + // Delete is the fake for method BlueprintsClient.Delete + // HTTP status codes to indicate success: http.StatusOK, http.StatusNoContent + Delete func(ctx context.Context, resourceScope string, blueprintName string, options *armblueprint.BlueprintsClientDeleteOptions) (resp azfake.Responder[armblueprint.BlueprintsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method BlueprintsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceScope string, blueprintName string, options *armblueprint.BlueprintsClientGetOptions) (resp azfake.Responder[armblueprint.BlueprintsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method BlueprintsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(resourceScope string, options *armblueprint.BlueprintsClientListOptions) (resp azfake.PagerResponder[armblueprint.BlueprintsClientListResponse]) +} + +// NewBlueprintsServerTransport creates a new instance of BlueprintsServerTransport with the provided implementation. +// The returned BlueprintsServerTransport instance is connected to an instance of armblueprint.BlueprintsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewBlueprintsServerTransport(srv *BlueprintsServer) *BlueprintsServerTransport { + return &BlueprintsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armblueprint.BlueprintsClientListResponse]](), + } +} + +// BlueprintsServerTransport connects instances of armblueprint.BlueprintsClient to instances of BlueprintsServer. +// Don't use this type directly, use NewBlueprintsServerTransport instead. +type BlueprintsServerTransport struct { + srv *BlueprintsServer + newListPager *tracker[azfake.PagerResponder[armblueprint.BlueprintsClientListResponse]] +} + +// Do implements the policy.Transporter interface for BlueprintsServerTransport. +func (b *BlueprintsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "BlueprintsClient.CreateOrUpdate": + resp, err = b.dispatchCreateOrUpdate(req) + case "BlueprintsClient.Delete": + resp, err = b.dispatchDelete(req) + case "BlueprintsClient.Get": + resp, err = b.dispatchGet(req) + case "BlueprintsClient.NewListPager": + resp, err = b.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (b *BlueprintsServerTransport) dispatchCreateOrUpdate(req *http.Request) (*http.Response, error) { + if b.srv.CreateOrUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method CreateOrUpdate not implemented")} + } + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blueprint/blueprints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armblueprint.Blueprint](req) + if err != nil { + return nil, err + } + resourceScopeParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceScope")]) + if err != nil { + return nil, err + } + blueprintNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blueprintName")]) + if err != nil { + return nil, err + } + respr, errRespr := b.srv.CreateOrUpdate(req.Context(), resourceScopeParam, blueprintNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusCreated}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusCreated", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Blueprint, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (b *BlueprintsServerTransport) dispatchDelete(req *http.Request) (*http.Response, error) { + if b.srv.Delete == nil { + return nil, &nonRetriableError{errors.New("fake for method Delete not implemented")} + } + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blueprint/blueprints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceScopeParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceScope")]) + if err != nil { + return nil, err + } + blueprintNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blueprintName")]) + if err != nil { + return nil, err + } + respr, errRespr := b.srv.Delete(req.Context(), resourceScopeParam, blueprintNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK, http.StatusNoContent}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusNoContent", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Blueprint, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (b *BlueprintsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if b.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blueprint/blueprints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceScopeParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceScope")]) + if err != nil { + return nil, err + } + blueprintNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blueprintName")]) + if err != nil { + return nil, err + } + respr, errRespr := b.srv.Get(req.Context(), resourceScopeParam, blueprintNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Blueprint, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (b *BlueprintsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if b.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := b.newListPager.get(req) + if newListPager == nil { + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blueprint/blueprints` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceScopeParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceScope")]) + if err != nil { + return nil, err + } + resp := b.srv.NewListPager(resourceScopeParam, nil) + newListPager = &resp + b.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armblueprint.BlueprintsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + b.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + b.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/blueprint/armblueprint/fake/internal.go b/sdk/resourcemanager/blueprint/armblueprint/fake/internal.go new file mode 100644 index 000000000000..ff215a58f44d --- /dev/null +++ b/sdk/resourcemanager/blueprint/armblueprint/fake/internal.go @@ -0,0 +1,85 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "io" + "net/http" + "reflect" + "sync" +) + +type nonRetriableError struct { + error +} + +func (nonRetriableError) NonRetriable() { + // marker method +} + +func contains[T comparable](s []T, v T) bool { + for _, vv := range s { + if vv == v { + return true + } + } + return false +} + +func getOptional[T any](v T) *T { + if reflect.ValueOf(v).IsZero() { + return nil + } + return &v +} + +func readRequestBody(req *http.Request) ([]byte, error) { + if req.Body == nil { + return nil, nil + } + body, err := io.ReadAll(req.Body) + if err != nil { + return nil, err + } + req.Body.Close() + return body, nil +} + +func newTracker[T any]() *tracker[T] { + return &tracker[T]{ + items: map[string]*T{}, + } +} + +type tracker[T any] struct { + items map[string]*T + mu sync.Mutex +} + +func (p *tracker[T]) get(req *http.Request) *T { + p.mu.Lock() + defer p.mu.Unlock() + if item, ok := p.items[server.SanitizePagerPollerPath(req.URL.Path)]; ok { + return item + } + return nil +} + +func (p *tracker[T]) add(req *http.Request, item *T) { + p.mu.Lock() + defer p.mu.Unlock() + p.items[server.SanitizePagerPollerPath(req.URL.Path)] = item +} + +func (p *tracker[T]) remove(req *http.Request) { + p.mu.Lock() + defer p.mu.Unlock() + delete(p.items, server.SanitizePagerPollerPath(req.URL.Path)) +} diff --git a/sdk/resourcemanager/blueprint/armblueprint/fake/polymorphic_helpers.go b/sdk/resourcemanager/blueprint/armblueprint/fake/polymorphic_helpers.go new file mode 100644 index 000000000000..afceecc9dcd8 --- /dev/null +++ b/sdk/resourcemanager/blueprint/armblueprint/fake/polymorphic_helpers.go @@ -0,0 +1,39 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "encoding/json" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/blueprint/armblueprint" +) + +func unmarshalArtifactClassification(rawMsg json.RawMessage) (armblueprint.ArtifactClassification, error) { + if rawMsg == nil { + return nil, nil + } + var m map[string]any + if err := json.Unmarshal(rawMsg, &m); err != nil { + return nil, err + } + var b armblueprint.ArtifactClassification + switch m["kind"] { + case string(armblueprint.ArtifactKindPolicyAssignment): + b = &armblueprint.PolicyAssignmentArtifact{} + case string(armblueprint.ArtifactKindRoleAssignment): + b = &armblueprint.RoleAssignmentArtifact{} + case string(armblueprint.ArtifactKindTemplate): + b = &armblueprint.TemplateArtifact{} + default: + b = &armblueprint.Artifact{} + } + if err := json.Unmarshal(rawMsg, b); err != nil { + return nil, err + } + return b, nil +} diff --git a/sdk/resourcemanager/blueprint/armblueprint/fake/publishedartifacts_server.go b/sdk/resourcemanager/blueprint/armblueprint/fake/publishedartifacts_server.go new file mode 100644 index 000000000000..587093e54031 --- /dev/null +++ b/sdk/resourcemanager/blueprint/armblueprint/fake/publishedartifacts_server.go @@ -0,0 +1,164 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/blueprint/armblueprint" + "net/http" + "net/url" + "regexp" +) + +// PublishedArtifactsServer is a fake server for instances of the armblueprint.PublishedArtifactsClient type. +type PublishedArtifactsServer struct { + // Get is the fake for method PublishedArtifactsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceScope string, blueprintName string, versionID string, artifactName string, options *armblueprint.PublishedArtifactsClientGetOptions) (resp azfake.Responder[armblueprint.PublishedArtifactsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method PublishedArtifactsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(resourceScope string, blueprintName string, versionID string, options *armblueprint.PublishedArtifactsClientListOptions) (resp azfake.PagerResponder[armblueprint.PublishedArtifactsClientListResponse]) +} + +// NewPublishedArtifactsServerTransport creates a new instance of PublishedArtifactsServerTransport with the provided implementation. +// The returned PublishedArtifactsServerTransport instance is connected to an instance of armblueprint.PublishedArtifactsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewPublishedArtifactsServerTransport(srv *PublishedArtifactsServer) *PublishedArtifactsServerTransport { + return &PublishedArtifactsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armblueprint.PublishedArtifactsClientListResponse]](), + } +} + +// PublishedArtifactsServerTransport connects instances of armblueprint.PublishedArtifactsClient to instances of PublishedArtifactsServer. +// Don't use this type directly, use NewPublishedArtifactsServerTransport instead. +type PublishedArtifactsServerTransport struct { + srv *PublishedArtifactsServer + newListPager *tracker[azfake.PagerResponder[armblueprint.PublishedArtifactsClientListResponse]] +} + +// Do implements the policy.Transporter interface for PublishedArtifactsServerTransport. +func (p *PublishedArtifactsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "PublishedArtifactsClient.Get": + resp, err = p.dispatchGet(req) + case "PublishedArtifactsClient.NewListPager": + resp, err = p.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (p *PublishedArtifactsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if p.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blueprint/blueprints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/versions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/artifacts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceScopeParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceScope")]) + if err != nil { + return nil, err + } + blueprintNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blueprintName")]) + if err != nil { + return nil, err + } + versionIDParam, err := url.PathUnescape(matches[regex.SubexpIndex("versionId")]) + if err != nil { + return nil, err + } + artifactNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("artifactName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.Get(req.Context(), resourceScopeParam, blueprintNameParam, versionIDParam, artifactNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ArtifactClassification, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (p *PublishedArtifactsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if p.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := p.newListPager.get(req) + if newListPager == nil { + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blueprint/blueprints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/versions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/artifacts` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceScopeParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceScope")]) + if err != nil { + return nil, err + } + blueprintNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blueprintName")]) + if err != nil { + return nil, err + } + versionIDParam, err := url.PathUnescape(matches[regex.SubexpIndex("versionId")]) + if err != nil { + return nil, err + } + resp := p.srv.NewListPager(resourceScopeParam, blueprintNameParam, versionIDParam, nil) + newListPager = &resp + p.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armblueprint.PublishedArtifactsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + p.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + p.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/blueprint/armblueprint/fake/publishedblueprints_server.go b/sdk/resourcemanager/blueprint/armblueprint/fake/publishedblueprints_server.go new file mode 100644 index 000000000000..6c39701a6e64 --- /dev/null +++ b/sdk/resourcemanager/blueprint/armblueprint/fake/publishedblueprints_server.go @@ -0,0 +1,253 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/blueprint/armblueprint" + "net/http" + "net/url" + "reflect" + "regexp" +) + +// PublishedBlueprintsServer is a fake server for instances of the armblueprint.PublishedBlueprintsClient type. +type PublishedBlueprintsServer struct { + // Create is the fake for method PublishedBlueprintsClient.Create + // HTTP status codes to indicate success: http.StatusCreated + Create func(ctx context.Context, resourceScope string, blueprintName string, versionID string, options *armblueprint.PublishedBlueprintsClientCreateOptions) (resp azfake.Responder[armblueprint.PublishedBlueprintsClientCreateResponse], errResp azfake.ErrorResponder) + + // Delete is the fake for method PublishedBlueprintsClient.Delete + // HTTP status codes to indicate success: http.StatusOK, http.StatusNoContent + Delete func(ctx context.Context, resourceScope string, blueprintName string, versionID string, options *armblueprint.PublishedBlueprintsClientDeleteOptions) (resp azfake.Responder[armblueprint.PublishedBlueprintsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method PublishedBlueprintsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceScope string, blueprintName string, versionID string, options *armblueprint.PublishedBlueprintsClientGetOptions) (resp azfake.Responder[armblueprint.PublishedBlueprintsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method PublishedBlueprintsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(resourceScope string, blueprintName string, options *armblueprint.PublishedBlueprintsClientListOptions) (resp azfake.PagerResponder[armblueprint.PublishedBlueprintsClientListResponse]) +} + +// NewPublishedBlueprintsServerTransport creates a new instance of PublishedBlueprintsServerTransport with the provided implementation. +// The returned PublishedBlueprintsServerTransport instance is connected to an instance of armblueprint.PublishedBlueprintsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewPublishedBlueprintsServerTransport(srv *PublishedBlueprintsServer) *PublishedBlueprintsServerTransport { + return &PublishedBlueprintsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armblueprint.PublishedBlueprintsClientListResponse]](), + } +} + +// PublishedBlueprintsServerTransport connects instances of armblueprint.PublishedBlueprintsClient to instances of PublishedBlueprintsServer. +// Don't use this type directly, use NewPublishedBlueprintsServerTransport instead. +type PublishedBlueprintsServerTransport struct { + srv *PublishedBlueprintsServer + newListPager *tracker[azfake.PagerResponder[armblueprint.PublishedBlueprintsClientListResponse]] +} + +// Do implements the policy.Transporter interface for PublishedBlueprintsServerTransport. +func (p *PublishedBlueprintsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "PublishedBlueprintsClient.Create": + resp, err = p.dispatchCreate(req) + case "PublishedBlueprintsClient.Delete": + resp, err = p.dispatchDelete(req) + case "PublishedBlueprintsClient.Get": + resp, err = p.dispatchGet(req) + case "PublishedBlueprintsClient.NewListPager": + resp, err = p.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (p *PublishedBlueprintsServerTransport) dispatchCreate(req *http.Request) (*http.Response, error) { + if p.srv.Create == nil { + return nil, &nonRetriableError{errors.New("fake for method Create not implemented")} + } + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blueprint/blueprints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/versions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armblueprint.PublishedBlueprint](req) + if err != nil { + return nil, err + } + resourceScopeParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceScope")]) + if err != nil { + return nil, err + } + blueprintNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blueprintName")]) + if err != nil { + return nil, err + } + versionIDParam, err := url.PathUnescape(matches[regex.SubexpIndex("versionId")]) + if err != nil { + return nil, err + } + var options *armblueprint.PublishedBlueprintsClientCreateOptions + if !reflect.ValueOf(body).IsZero() { + options = &armblueprint.PublishedBlueprintsClientCreateOptions{ + PublishedBlueprint: &body, + } + } + respr, errRespr := p.srv.Create(req.Context(), resourceScopeParam, blueprintNameParam, versionIDParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusCreated}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusCreated", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).PublishedBlueprint, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (p *PublishedBlueprintsServerTransport) dispatchDelete(req *http.Request) (*http.Response, error) { + if p.srv.Delete == nil { + return nil, &nonRetriableError{errors.New("fake for method Delete not implemented")} + } + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blueprint/blueprints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/versions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceScopeParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceScope")]) + if err != nil { + return nil, err + } + blueprintNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blueprintName")]) + if err != nil { + return nil, err + } + versionIDParam, err := url.PathUnescape(matches[regex.SubexpIndex("versionId")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.Delete(req.Context(), resourceScopeParam, blueprintNameParam, versionIDParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK, http.StatusNoContent}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusNoContent", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).PublishedBlueprint, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (p *PublishedBlueprintsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if p.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blueprint/blueprints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/versions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceScopeParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceScope")]) + if err != nil { + return nil, err + } + blueprintNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blueprintName")]) + if err != nil { + return nil, err + } + versionIDParam, err := url.PathUnescape(matches[regex.SubexpIndex("versionId")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.Get(req.Context(), resourceScopeParam, blueprintNameParam, versionIDParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).PublishedBlueprint, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (p *PublishedBlueprintsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if p.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := p.newListPager.get(req) + if newListPager == nil { + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Blueprint/blueprints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/versions` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceScopeParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceScope")]) + if err != nil { + return nil, err + } + blueprintNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("blueprintName")]) + if err != nil { + return nil, err + } + resp := p.srv.NewListPager(resourceScopeParam, blueprintNameParam, nil) + newListPager = &resp + p.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armblueprint.PublishedBlueprintsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + p.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + p.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/blueprint/armblueprint/fake/server_factory.go b/sdk/resourcemanager/blueprint/armblueprint/fake/server_factory.go new file mode 100644 index 000000000000..0d64c75c739e --- /dev/null +++ b/sdk/resourcemanager/blueprint/armblueprint/fake/server_factory.go @@ -0,0 +1,106 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "net/http" + "strings" + "sync" +) + +// ServerFactory is a fake server for instances of the armblueprint.ClientFactory type. +type ServerFactory struct { + ArtifactsServer ArtifactsServer + AssignmentOperationsServer AssignmentOperationsServer + AssignmentsServer AssignmentsServer + BlueprintsServer BlueprintsServer + PublishedArtifactsServer PublishedArtifactsServer + PublishedBlueprintsServer PublishedBlueprintsServer +} + +// NewServerFactoryTransport creates a new instance of ServerFactoryTransport with the provided implementation. +// The returned ServerFactoryTransport instance is connected to an instance of armblueprint.ClientFactory via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewServerFactoryTransport(srv *ServerFactory) *ServerFactoryTransport { + return &ServerFactoryTransport{ + srv: srv, + } +} + +// ServerFactoryTransport connects instances of armblueprint.ClientFactory to instances of ServerFactory. +// Don't use this type directly, use NewServerFactoryTransport instead. +type ServerFactoryTransport struct { + srv *ServerFactory + trMu sync.Mutex + trArtifactsServer *ArtifactsServerTransport + trAssignmentOperationsServer *AssignmentOperationsServerTransport + trAssignmentsServer *AssignmentsServerTransport + trBlueprintsServer *BlueprintsServerTransport + trPublishedArtifactsServer *PublishedArtifactsServerTransport + trPublishedBlueprintsServer *PublishedBlueprintsServerTransport +} + +// Do implements the policy.Transporter interface for ServerFactoryTransport. +func (s *ServerFactoryTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + client := method[:strings.Index(method, ".")] + var resp *http.Response + var err error + + switch client { + case "ArtifactsClient": + initServer(s, &s.trArtifactsServer, func() *ArtifactsServerTransport { return NewArtifactsServerTransport(&s.srv.ArtifactsServer) }) + resp, err = s.trArtifactsServer.Do(req) + case "AssignmentOperationsClient": + initServer(s, &s.trAssignmentOperationsServer, func() *AssignmentOperationsServerTransport { + return NewAssignmentOperationsServerTransport(&s.srv.AssignmentOperationsServer) + }) + resp, err = s.trAssignmentOperationsServer.Do(req) + case "AssignmentsClient": + initServer(s, &s.trAssignmentsServer, func() *AssignmentsServerTransport { return NewAssignmentsServerTransport(&s.srv.AssignmentsServer) }) + resp, err = s.trAssignmentsServer.Do(req) + case "BlueprintsClient": + initServer(s, &s.trBlueprintsServer, func() *BlueprintsServerTransport { return NewBlueprintsServerTransport(&s.srv.BlueprintsServer) }) + resp, err = s.trBlueprintsServer.Do(req) + case "PublishedArtifactsClient": + initServer(s, &s.trPublishedArtifactsServer, func() *PublishedArtifactsServerTransport { + return NewPublishedArtifactsServerTransport(&s.srv.PublishedArtifactsServer) + }) + resp, err = s.trPublishedArtifactsServer.Do(req) + case "PublishedBlueprintsClient": + initServer(s, &s.trPublishedBlueprintsServer, func() *PublishedBlueprintsServerTransport { + return NewPublishedBlueprintsServerTransport(&s.srv.PublishedBlueprintsServer) + }) + resp, err = s.trPublishedBlueprintsServer.Do(req) + default: + err = fmt.Errorf("unhandled client %s", client) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func initServer[T any](s *ServerFactoryTransport, dst **T, src func() *T) { + s.trMu.Lock() + if *dst == nil { + *dst = src() + } + s.trMu.Unlock() +} diff --git a/sdk/resourcemanager/blueprint/armblueprint/fake/time_rfc3339.go b/sdk/resourcemanager/blueprint/armblueprint/fake/time_rfc3339.go new file mode 100644 index 000000000000..b0535a7b63e6 --- /dev/null +++ b/sdk/resourcemanager/blueprint/armblueprint/fake/time_rfc3339.go @@ -0,0 +1,86 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "encoding/json" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "reflect" + "regexp" + "strings" + "time" +) + +// Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases. +var tzOffsetRegex = regexp.MustCompile(`(Z|z|\+|-)(\d+:\d+)*"*$`) + +const ( + utcDateTimeJSON = `"2006-01-02T15:04:05.999999999"` + utcDateTime = "2006-01-02T15:04:05.999999999" + dateTimeJSON = `"` + time.RFC3339Nano + `"` +) + +type dateTimeRFC3339 time.Time + +func (t dateTimeRFC3339) MarshalJSON() ([]byte, error) { + tt := time.Time(t) + return tt.MarshalJSON() +} + +func (t dateTimeRFC3339) MarshalText() ([]byte, error) { + tt := time.Time(t) + return tt.MarshalText() +} + +func (t *dateTimeRFC3339) UnmarshalJSON(data []byte) error { + layout := utcDateTimeJSON + if tzOffsetRegex.Match(data) { + layout = dateTimeJSON + } + return t.Parse(layout, string(data)) +} + +func (t *dateTimeRFC3339) UnmarshalText(data []byte) error { + layout := utcDateTime + if tzOffsetRegex.Match(data) { + layout = time.RFC3339Nano + } + return t.Parse(layout, string(data)) +} + +func (t *dateTimeRFC3339) Parse(layout, value string) error { + p, err := time.Parse(layout, strings.ToUpper(value)) + *t = dateTimeRFC3339(p) + return err +} + +func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) { + if t == nil { + return + } else if azcore.IsNullValue(t) { + m[k] = nil + return + } else if reflect.ValueOf(t).IsNil() { + return + } + m[k] = (*dateTimeRFC3339)(t) +} + +func unpopulateDateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { + if data == nil || strings.EqualFold(string(data), "null") { + return nil + } + var aux dateTimeRFC3339 + if err := json.Unmarshal(data, &aux); err != nil { + return fmt.Errorf("struct field %s: %v", fn, err) + } + *t = (*time.Time)(&aux) + return nil +} diff --git a/sdk/resourcemanager/blueprint/armblueprint/go.mod b/sdk/resourcemanager/blueprint/armblueprint/go.mod index 2593082f2a32..9186eff5b923 100644 --- a/sdk/resourcemanager/blueprint/armblueprint/go.mod +++ b/sdk/resourcemanager/blueprint/armblueprint/go.mod @@ -3,19 +3,19 @@ module github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/blueprint/armbluepr go 1.18 require ( - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0 - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2 + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 ) require ( - github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0 // indirect - github.com/golang-jwt/jwt/v4 v4.5.0 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect + github.com/golang-jwt/jwt/v5 v5.0.0 // indirect + github.com/google/uuid v1.3.1 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect - golang.org/x/crypto v0.6.0 // indirect - golang.org/x/net v0.7.0 // indirect - golang.org/x/sys v0.5.0 // indirect - golang.org/x/text v0.7.0 // indirect + golang.org/x/crypto v0.14.0 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect ) diff --git a/sdk/resourcemanager/blueprint/armblueprint/go.sum b/sdk/resourcemanager/blueprint/armblueprint/go.sum index 8ba445a8c4da..7985f1da436f 100644 --- a/sdk/resourcemanager/blueprint/armblueprint/go.sum +++ b/sdk/resourcemanager/blueprint/armblueprint/go.sum @@ -1,31 +1,31 @@ -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0 h1:rTnT/Jrcm+figWlYz4Ixzt0SJVR2cMC8lvZcimipiEY= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0/go.mod h1:ON4tFdPTwRcgWEaVDrN3584Ef+b7GgSJaXxe5fW9t4M= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2 h1:uqM+VoHjVH6zdlkLF2b6O0ZANcHoj3rO0PoQ3jglUJA= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2/go.mod h1:twTKAa1E6hLmSDjLhaCkbTMQKc7p/rNLU40rLxGEOCI= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0 h1:leh5DwKv6Ihwi+h60uHtn6UWAxBbZ0q8DwQVMzf61zw= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= -github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0 h1:UE9n9rkJF62ArLb1F3DEjRt8O3jLwMWdSoypKV4f3MU= -github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 h1:fb8kj/Dh4CSwgsOzHeZY4Xh68cFVbzXx+ONXGMY//4w= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0/go.mod h1:uReU2sSxZExRPBAg3qKzmAucSi51+SP1OhohieR821Q= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 h1:BMAjVKJM0U/CYF27gA0ZMmXGkOcvfFtD0oHVZ1TIPRI= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0/go.mod h1:1fXstnBMas5kzG+S3q8UoJcmyU6nUeunJcMDHcRYHhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 h1:d81/ng9rET2YqdVkVwkb6EXeRrLJIwyGnJcAlAWKwhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0/go.mod h1:s4kgfzA0covAXNicZHDMN58jExvcng2mC/DepXiF1EI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 h1:WpB/QDNLpMw72xHJc34BNNykqSOeEJDAWkhf0u12/Jk= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/dnaeon/go-vcr v1.1.0 h1:ReYa/UBrRyQdant9B4fNHGoCNKw6qh6P0fsdGmZpR7c= -github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= -github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= +github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= +github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= -golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/sdk/resourcemanager/blueprint/armblueprint/interfaces.go b/sdk/resourcemanager/blueprint/armblueprint/interfaces.go new file mode 100644 index 000000000000..b6487abba0c6 --- /dev/null +++ b/sdk/resourcemanager/blueprint/armblueprint/interfaces.go @@ -0,0 +1,18 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package armblueprint + +// ArtifactClassification provides polymorphic access to related types. +// Call the interface's GetArtifact() method to access the common type. +// Use a type switch to determine the concrete type. The possible types are: +// - *Artifact, *PolicyAssignmentArtifact, *RoleAssignmentArtifact, *TemplateArtifact +type ArtifactClassification interface { + // GetArtifact returns the Artifact content of the underlying type. + GetArtifact() *Artifact +} diff --git a/sdk/resourcemanager/blueprint/armblueprint/models.go b/sdk/resourcemanager/blueprint/armblueprint/models.go index fc48e8276b1f..0753d7dd5515 100644 --- a/sdk/resourcemanager/blueprint/armblueprint/models.go +++ b/sdk/resourcemanager/blueprint/armblueprint/models.go @@ -3,23 +3,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblueprint import "time" -// ArtifactClassification provides polymorphic access to related types. -// Call the interface's GetArtifact() method to access the common type. -// Use a type switch to determine the concrete type. The possible types are: -// - *Artifact, *PolicyAssignmentArtifact, *RoleAssignmentArtifact, *TemplateArtifact -type ArtifactClassification interface { - // GetArtifact returns the Artifact content of the underlying type. - GetArtifact() *Artifact -} - // Artifact - Represents a blueprint artifact. type Artifact struct { // REQUIRED; Specifies the kind of blueprint artifact. @@ -47,26 +37,6 @@ type ArtifactList struct { NextLink *string } -// ArtifactsClientCreateOrUpdateOptions contains the optional parameters for the ArtifactsClient.CreateOrUpdate method. -type ArtifactsClientCreateOrUpdateOptions struct { - // placeholder for future optional parameters -} - -// ArtifactsClientDeleteOptions contains the optional parameters for the ArtifactsClient.Delete method. -type ArtifactsClientDeleteOptions struct { - // placeholder for future optional parameters -} - -// ArtifactsClientGetOptions contains the optional parameters for the ArtifactsClient.Get method. -type ArtifactsClientGetOptions struct { - // placeholder for future optional parameters -} - -// ArtifactsClientListOptions contains the optional parameters for the ArtifactsClient.NewListPager method. -type ArtifactsClientListOptions struct { - // placeholder for future optional parameters -} - // Assignment - Represents a blueprint assignment. type Assignment struct { // REQUIRED; Managed identity for this blueprint assignment. @@ -207,17 +177,6 @@ type AssignmentOperationProperties struct { TimeStarted *string } -// AssignmentOperationsClientGetOptions contains the optional parameters for the AssignmentOperationsClient.Get method. -type AssignmentOperationsClientGetOptions struct { - // placeholder for future optional parameters -} - -// AssignmentOperationsClientListOptions contains the optional parameters for the AssignmentOperationsClient.NewListPager -// method. -type AssignmentOperationsClientListOptions struct { - // placeholder for future optional parameters -} - // AssignmentProperties - Detailed properties for a blueprint assignment. type AssignmentProperties struct { // REQUIRED; Blueprint assignment parameter values. @@ -261,32 +220,6 @@ type AssignmentStatus struct { TimeCreated *time.Time } -// AssignmentsClientCreateOrUpdateOptions contains the optional parameters for the AssignmentsClient.CreateOrUpdate method. -type AssignmentsClientCreateOrUpdateOptions struct { - // placeholder for future optional parameters -} - -// AssignmentsClientDeleteOptions contains the optional parameters for the AssignmentsClient.Delete method. -type AssignmentsClientDeleteOptions struct { - // When deleteBehavior=all, the resources that were created by the blueprint assignment will be deleted. - DeleteBehavior *AssignmentDeleteBehavior -} - -// AssignmentsClientGetOptions contains the optional parameters for the AssignmentsClient.Get method. -type AssignmentsClientGetOptions struct { - // placeholder for future optional parameters -} - -// AssignmentsClientListOptions contains the optional parameters for the AssignmentsClient.NewListPager method. -type AssignmentsClientListOptions struct { - // placeholder for future optional parameters -} - -// AssignmentsClientWhoIsBlueprintOptions contains the optional parameters for the AssignmentsClient.WhoIsBlueprint method. -type AssignmentsClientWhoIsBlueprintOptions struct { - // placeholder for future optional parameters -} - // AzureResourceBase - Common properties for all Azure resources. type AzureResourceBase struct { // READ-ONLY; String Id used to locate any resource on Azure. @@ -323,26 +256,6 @@ type Blueprint struct { Type *string } -// BlueprintsClientCreateOrUpdateOptions contains the optional parameters for the BlueprintsClient.CreateOrUpdate method. -type BlueprintsClientCreateOrUpdateOptions struct { - // placeholder for future optional parameters -} - -// BlueprintsClientDeleteOptions contains the optional parameters for the BlueprintsClient.Delete method. -type BlueprintsClientDeleteOptions struct { - // placeholder for future optional parameters -} - -// BlueprintsClientGetOptions contains the optional parameters for the BlueprintsClient.Get method. -type BlueprintsClientGetOptions struct { - // placeholder for future optional parameters -} - -// BlueprintsClientListOptions contains the optional parameters for the BlueprintsClient.NewListPager method. -type BlueprintsClientListOptions struct { - // placeholder for future optional parameters -} - // ErrorAdditionalInfo - The resource management error additional info. type ErrorAdditionalInfo struct { // READ-ONLY; The additional info. @@ -460,10 +373,10 @@ type PolicyAssignmentArtifact struct { // GetArtifact implements the ArtifactClassification interface for type PolicyAssignmentArtifact. func (p *PolicyAssignmentArtifact) GetArtifact() *Artifact { return &Artifact{ - Kind: p.Kind, ID: p.ID, - Type: p.Type, + Kind: p.Kind, Name: p.Name, + Type: p.Type, } } @@ -515,16 +428,6 @@ type Properties struct { Status *Status } -// PublishedArtifactsClientGetOptions contains the optional parameters for the PublishedArtifactsClient.Get method. -type PublishedArtifactsClientGetOptions struct { - // placeholder for future optional parameters -} - -// PublishedArtifactsClientListOptions contains the optional parameters for the PublishedArtifactsClient.NewListPager method. -type PublishedArtifactsClientListOptions struct { - // placeholder for future optional parameters -} - // PublishedBlueprint - Represents a published blueprint. type PublishedBlueprint struct { // REQUIRED; Detailed properties for published blueprint. @@ -576,27 +479,6 @@ type PublishedBlueprintProperties struct { Status *Status } -// PublishedBlueprintsClientCreateOptions contains the optional parameters for the PublishedBlueprintsClient.Create method. -type PublishedBlueprintsClientCreateOptions struct { - // Published Blueprint to create or update. - PublishedBlueprint *PublishedBlueprint -} - -// PublishedBlueprintsClientDeleteOptions contains the optional parameters for the PublishedBlueprintsClient.Delete method. -type PublishedBlueprintsClientDeleteOptions struct { - // placeholder for future optional parameters -} - -// PublishedBlueprintsClientGetOptions contains the optional parameters for the PublishedBlueprintsClient.Get method. -type PublishedBlueprintsClientGetOptions struct { - // placeholder for future optional parameters -} - -// PublishedBlueprintsClientListOptions contains the optional parameters for the PublishedBlueprintsClient.NewListPager method. -type PublishedBlueprintsClientListOptions struct { - // placeholder for future optional parameters -} - // ResourceGroupDefinition - Represents an Azure resource group in a blueprint definition. type ResourceGroupDefinition struct { // Artifacts which need to be deployed before this resource group. @@ -684,10 +566,10 @@ type RoleAssignmentArtifact struct { // GetArtifact implements the ArtifactClassification interface for type RoleAssignmentArtifact. func (r *RoleAssignmentArtifact) GetArtifact() *Artifact { return &Artifact{ - Kind: r.Kind, ID: r.ID, - Type: r.Type, + Kind: r.Kind, Name: r.Name, + Type: r.Type, } } @@ -754,10 +636,10 @@ type TemplateArtifact struct { // GetArtifact implements the ArtifactClassification interface for type TemplateArtifact. func (t *TemplateArtifact) GetArtifact() *Artifact { return &Artifact{ - Kind: t.Kind, ID: t.ID, - Type: t.Type, + Kind: t.Kind, Name: t.Name, + Type: t.Type, } } diff --git a/sdk/resourcemanager/blueprint/armblueprint/models_serde.go b/sdk/resourcemanager/blueprint/armblueprint/models_serde.go index 4c96c76d8767..e37e200b22ac 100644 --- a/sdk/resourcemanager/blueprint/armblueprint/models_serde.go +++ b/sdk/resourcemanager/blueprint/armblueprint/models_serde.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblueprint @@ -499,9 +498,9 @@ func (a *AssignmentProperties) UnmarshalJSON(data []byte) error { // MarshalJSON implements the json.Marshaller interface for type AssignmentStatus. func (a AssignmentStatus) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populateTimeRFC3339(objectMap, "lastModified", a.LastModified) + populateDateTimeRFC3339(objectMap, "lastModified", a.LastModified) populate(objectMap, "managedResources", a.ManagedResources) - populateTimeRFC3339(objectMap, "timeCreated", a.TimeCreated) + populateDateTimeRFC3339(objectMap, "timeCreated", a.TimeCreated) return json.Marshal(objectMap) } @@ -515,13 +514,13 @@ func (a *AssignmentStatus) UnmarshalJSON(data []byte) error { var err error switch key { case "lastModified": - err = unpopulateTimeRFC3339(val, "LastModified", &a.LastModified) + err = unpopulateDateTimeRFC3339(val, "LastModified", &a.LastModified) delete(rawMsg, key) case "managedResources": err = unpopulate(val, "ManagedResources", &a.ManagedResources) delete(rawMsg, key) case "timeCreated": - err = unpopulateTimeRFC3339(val, "TimeCreated", &a.TimeCreated) + err = unpopulateDateTimeRFC3339(val, "TimeCreated", &a.TimeCreated) delete(rawMsg, key) } if err != nil { @@ -1356,8 +1355,8 @@ func (r *ResourceProviderOperationList) UnmarshalJSON(data []byte) error { // MarshalJSON implements the json.Marshaller interface for type ResourceStatusBase. func (r ResourceStatusBase) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populateTimeRFC3339(objectMap, "lastModified", r.LastModified) - populateTimeRFC3339(objectMap, "timeCreated", r.TimeCreated) + populateDateTimeRFC3339(objectMap, "lastModified", r.LastModified) + populateDateTimeRFC3339(objectMap, "timeCreated", r.TimeCreated) return json.Marshal(objectMap) } @@ -1371,10 +1370,10 @@ func (r *ResourceStatusBase) UnmarshalJSON(data []byte) error { var err error switch key { case "lastModified": - err = unpopulateTimeRFC3339(val, "LastModified", &r.LastModified) + err = unpopulateDateTimeRFC3339(val, "LastModified", &r.LastModified) delete(rawMsg, key) case "timeCreated": - err = unpopulateTimeRFC3339(val, "TimeCreated", &r.TimeCreated) + err = unpopulateDateTimeRFC3339(val, "TimeCreated", &r.TimeCreated) delete(rawMsg, key) } if err != nil { @@ -1512,8 +1511,8 @@ func (s *SecretValueReference) UnmarshalJSON(data []byte) error { // MarshalJSON implements the json.Marshaller interface for type Status. func (s Status) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populateTimeRFC3339(objectMap, "lastModified", s.LastModified) - populateTimeRFC3339(objectMap, "timeCreated", s.TimeCreated) + populateDateTimeRFC3339(objectMap, "lastModified", s.LastModified) + populateDateTimeRFC3339(objectMap, "timeCreated", s.TimeCreated) return json.Marshal(objectMap) } @@ -1527,10 +1526,10 @@ func (s *Status) UnmarshalJSON(data []byte) error { var err error switch key { case "lastModified": - err = unpopulateTimeRFC3339(val, "LastModified", &s.LastModified) + err = unpopulateDateTimeRFC3339(val, "LastModified", &s.LastModified) delete(rawMsg, key) case "timeCreated": - err = unpopulateTimeRFC3339(val, "TimeCreated", &s.TimeCreated) + err = unpopulateDateTimeRFC3339(val, "TimeCreated", &s.TimeCreated) delete(rawMsg, key) } if err != nil { diff --git a/sdk/resourcemanager/blueprint/armblueprint/options.go b/sdk/resourcemanager/blueprint/armblueprint/options.go new file mode 100644 index 000000000000..2775b1d1fc43 --- /dev/null +++ b/sdk/resourcemanager/blueprint/armblueprint/options.go @@ -0,0 +1,117 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package armblueprint + +// ArtifactsClientCreateOrUpdateOptions contains the optional parameters for the ArtifactsClient.CreateOrUpdate method. +type ArtifactsClientCreateOrUpdateOptions struct { + // placeholder for future optional parameters +} + +// ArtifactsClientDeleteOptions contains the optional parameters for the ArtifactsClient.Delete method. +type ArtifactsClientDeleteOptions struct { + // placeholder for future optional parameters +} + +// ArtifactsClientGetOptions contains the optional parameters for the ArtifactsClient.Get method. +type ArtifactsClientGetOptions struct { + // placeholder for future optional parameters +} + +// ArtifactsClientListOptions contains the optional parameters for the ArtifactsClient.NewListPager method. +type ArtifactsClientListOptions struct { + // placeholder for future optional parameters +} + +// AssignmentOperationsClientGetOptions contains the optional parameters for the AssignmentOperationsClient.Get method. +type AssignmentOperationsClientGetOptions struct { + // placeholder for future optional parameters +} + +// AssignmentOperationsClientListOptions contains the optional parameters for the AssignmentOperationsClient.NewListPager +// method. +type AssignmentOperationsClientListOptions struct { + // placeholder for future optional parameters +} + +// AssignmentsClientCreateOrUpdateOptions contains the optional parameters for the AssignmentsClient.CreateOrUpdate method. +type AssignmentsClientCreateOrUpdateOptions struct { + // placeholder for future optional parameters +} + +// AssignmentsClientDeleteOptions contains the optional parameters for the AssignmentsClient.Delete method. +type AssignmentsClientDeleteOptions struct { + // When deleteBehavior=all, the resources that were created by the blueprint assignment will be deleted. + DeleteBehavior *AssignmentDeleteBehavior +} + +// AssignmentsClientGetOptions contains the optional parameters for the AssignmentsClient.Get method. +type AssignmentsClientGetOptions struct { + // placeholder for future optional parameters +} + +// AssignmentsClientListOptions contains the optional parameters for the AssignmentsClient.NewListPager method. +type AssignmentsClientListOptions struct { + // placeholder for future optional parameters +} + +// AssignmentsClientWhoIsBlueprintOptions contains the optional parameters for the AssignmentsClient.WhoIsBlueprint method. +type AssignmentsClientWhoIsBlueprintOptions struct { + // placeholder for future optional parameters +} + +// BlueprintsClientCreateOrUpdateOptions contains the optional parameters for the BlueprintsClient.CreateOrUpdate method. +type BlueprintsClientCreateOrUpdateOptions struct { + // placeholder for future optional parameters +} + +// BlueprintsClientDeleteOptions contains the optional parameters for the BlueprintsClient.Delete method. +type BlueprintsClientDeleteOptions struct { + // placeholder for future optional parameters +} + +// BlueprintsClientGetOptions contains the optional parameters for the BlueprintsClient.Get method. +type BlueprintsClientGetOptions struct { + // placeholder for future optional parameters +} + +// BlueprintsClientListOptions contains the optional parameters for the BlueprintsClient.NewListPager method. +type BlueprintsClientListOptions struct { + // placeholder for future optional parameters +} + +// PublishedArtifactsClientGetOptions contains the optional parameters for the PublishedArtifactsClient.Get method. +type PublishedArtifactsClientGetOptions struct { + // placeholder for future optional parameters +} + +// PublishedArtifactsClientListOptions contains the optional parameters for the PublishedArtifactsClient.NewListPager method. +type PublishedArtifactsClientListOptions struct { + // placeholder for future optional parameters +} + +// PublishedBlueprintsClientCreateOptions contains the optional parameters for the PublishedBlueprintsClient.Create method. +type PublishedBlueprintsClientCreateOptions struct { + // Published Blueprint to create or update. + PublishedBlueprint *PublishedBlueprint +} + +// PublishedBlueprintsClientDeleteOptions contains the optional parameters for the PublishedBlueprintsClient.Delete method. +type PublishedBlueprintsClientDeleteOptions struct { + // placeholder for future optional parameters +} + +// PublishedBlueprintsClientGetOptions contains the optional parameters for the PublishedBlueprintsClient.Get method. +type PublishedBlueprintsClientGetOptions struct { + // placeholder for future optional parameters +} + +// PublishedBlueprintsClientListOptions contains the optional parameters for the PublishedBlueprintsClient.NewListPager method. +type PublishedBlueprintsClientListOptions struct { + // placeholder for future optional parameters +} diff --git a/sdk/resourcemanager/blueprint/armblueprint/polymorphic_helpers.go b/sdk/resourcemanager/blueprint/armblueprint/polymorphic_helpers.go index 38e807dda7d6..5d108a8a2265 100644 --- a/sdk/resourcemanager/blueprint/armblueprint/polymorphic_helpers.go +++ b/sdk/resourcemanager/blueprint/armblueprint/polymorphic_helpers.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblueprint @@ -30,7 +29,10 @@ func unmarshalArtifactClassification(rawMsg json.RawMessage) (ArtifactClassifica default: b = &Artifact{} } - return b, json.Unmarshal(rawMsg, b) + if err := json.Unmarshal(rawMsg, b); err != nil { + return nil, err + } + return b, nil } func unmarshalArtifactClassificationArray(rawMsg json.RawMessage) ([]ArtifactClassification, error) { diff --git a/sdk/resourcemanager/blueprint/armblueprint/publishedartifacts_client.go b/sdk/resourcemanager/blueprint/armblueprint/publishedartifacts_client.go index edb4e64091c6..2756f4df5a55 100644 --- a/sdk/resourcemanager/blueprint/armblueprint/publishedartifacts_client.go +++ b/sdk/resourcemanager/blueprint/armblueprint/publishedartifacts_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblueprint @@ -31,7 +30,7 @@ type PublishedArtifactsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewPublishedArtifactsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*PublishedArtifactsClient, error) { - cl, err := arm.NewClient(moduleName+".PublishedArtifactsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -52,18 +51,25 @@ func NewPublishedArtifactsClient(credential azcore.TokenCredential, options *arm // - artifactName - Name of the blueprint artifact. // - options - PublishedArtifactsClientGetOptions contains the optional parameters for the PublishedArtifactsClient.Get method. func (client *PublishedArtifactsClient) Get(ctx context.Context, resourceScope string, blueprintName string, versionID string, artifactName string, options *PublishedArtifactsClientGetOptions) (PublishedArtifactsClientGetResponse, error) { + var err error + const operationName = "PublishedArtifactsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceScope, blueprintName, versionID, artifactName, options) if err != nil { return PublishedArtifactsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return PublishedArtifactsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PublishedArtifactsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return PublishedArtifactsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -117,25 +123,20 @@ func (client *PublishedArtifactsClient) NewListPager(resourceScope string, bluep return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *PublishedArtifactsClientListResponse) (PublishedArtifactsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, resourceScope, blueprintName, versionID, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "PublishedArtifactsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, resourceScope, blueprintName, versionID, options) + }, nil) if err != nil { return PublishedArtifactsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return PublishedArtifactsClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PublishedArtifactsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/blueprint/armblueprint/publishedblueprints_client.go b/sdk/resourcemanager/blueprint/armblueprint/publishedblueprints_client.go index 0ab4f3cbe29d..5ca5bbafd779 100644 --- a/sdk/resourcemanager/blueprint/armblueprint/publishedblueprints_client.go +++ b/sdk/resourcemanager/blueprint/armblueprint/publishedblueprints_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblueprint @@ -31,7 +30,7 @@ type PublishedBlueprintsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewPublishedBlueprintsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*PublishedBlueprintsClient, error) { - cl, err := arm.NewClient(moduleName+".PublishedBlueprintsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -53,18 +52,25 @@ func NewPublishedBlueprintsClient(credential azcore.TokenCredential, options *ar // - options - PublishedBlueprintsClientCreateOptions contains the optional parameters for the PublishedBlueprintsClient.Create // method. func (client *PublishedBlueprintsClient) Create(ctx context.Context, resourceScope string, blueprintName string, versionID string, options *PublishedBlueprintsClientCreateOptions) (PublishedBlueprintsClientCreateResponse, error) { + var err error + const operationName = "PublishedBlueprintsClient.Create" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceScope, blueprintName, versionID, options) if err != nil { return PublishedBlueprintsClientCreateResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return PublishedBlueprintsClientCreateResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusCreated) { - return PublishedBlueprintsClientCreateResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusCreated) { + err = runtime.NewResponseError(httpResp) + return PublishedBlueprintsClientCreateResponse{}, err } - return client.createHandleResponse(resp) + resp, err := client.createHandleResponse(httpResp) + return resp, err } // createCreateRequest creates the Create request. @@ -88,7 +94,10 @@ func (client *PublishedBlueprintsClient) createCreateRequest(ctx context.Context req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} if options != nil && options.PublishedBlueprint != nil { - return req, runtime.MarshalAsJSON(req, *options.PublishedBlueprint) + if err := runtime.MarshalAsJSON(req, *options.PublishedBlueprint); err != nil { + return nil, err + } + return req, nil } return req, nil } @@ -113,18 +122,25 @@ func (client *PublishedBlueprintsClient) createHandleResponse(resp *http.Respons // - options - PublishedBlueprintsClientDeleteOptions contains the optional parameters for the PublishedBlueprintsClient.Delete // method. func (client *PublishedBlueprintsClient) Delete(ctx context.Context, resourceScope string, blueprintName string, versionID string, options *PublishedBlueprintsClientDeleteOptions) (PublishedBlueprintsClientDeleteResponse, error) { + var err error + const operationName = "PublishedBlueprintsClient.Delete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceScope, blueprintName, versionID, options) if err != nil { return PublishedBlueprintsClientDeleteResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return PublishedBlueprintsClientDeleteResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusNoContent) { - return PublishedBlueprintsClientDeleteResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusNoContent) { + err = runtime.NewResponseError(httpResp) + return PublishedBlueprintsClientDeleteResponse{}, err } - return client.deleteHandleResponse(resp) + resp, err := client.deleteHandleResponse(httpResp) + return resp, err } // deleteCreateRequest creates the Delete request. @@ -169,18 +185,25 @@ func (client *PublishedBlueprintsClient) deleteHandleResponse(resp *http.Respons // - versionID - Version of the published blueprint definition. // - options - PublishedBlueprintsClientGetOptions contains the optional parameters for the PublishedBlueprintsClient.Get method. func (client *PublishedBlueprintsClient) Get(ctx context.Context, resourceScope string, blueprintName string, versionID string, options *PublishedBlueprintsClientGetOptions) (PublishedBlueprintsClientGetResponse, error) { + var err error + const operationName = "PublishedBlueprintsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceScope, blueprintName, versionID, options) if err != nil { return PublishedBlueprintsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return PublishedBlueprintsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PublishedBlueprintsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return PublishedBlueprintsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -229,25 +252,20 @@ func (client *PublishedBlueprintsClient) NewListPager(resourceScope string, blue return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *PublishedBlueprintsClientListResponse) (PublishedBlueprintsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, resourceScope, blueprintName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "PublishedBlueprintsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, resourceScope, blueprintName, options) + }, nil) if err != nil { return PublishedBlueprintsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return PublishedBlueprintsClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PublishedBlueprintsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/blueprint/armblueprint/response_types.go b/sdk/resourcemanager/blueprint/armblueprint/response_types.go index cab95c2b027f..ffbfe384d9e8 100644 --- a/sdk/resourcemanager/blueprint/armblueprint/response_types.go +++ b/sdk/resourcemanager/blueprint/armblueprint/response_types.go @@ -3,14 +3,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblueprint // ArtifactsClientCreateOrUpdateResponse contains the response from method ArtifactsClient.CreateOrUpdate. type ArtifactsClientCreateOrUpdateResponse struct { + // Represents a blueprint artifact. ArtifactClassification } @@ -26,6 +26,7 @@ func (a *ArtifactsClientCreateOrUpdateResponse) UnmarshalJSON(data []byte) error // ArtifactsClientDeleteResponse contains the response from method ArtifactsClient.Delete. type ArtifactsClientDeleteResponse struct { + // Represents a blueprint artifact. ArtifactClassification } @@ -41,6 +42,7 @@ func (a *ArtifactsClientDeleteResponse) UnmarshalJSON(data []byte) error { // ArtifactsClientGetResponse contains the response from method ArtifactsClient.Get. type ArtifactsClientGetResponse struct { + // Represents a blueprint artifact. ArtifactClassification } @@ -56,66 +58,79 @@ func (a *ArtifactsClientGetResponse) UnmarshalJSON(data []byte) error { // ArtifactsClientListResponse contains the response from method ArtifactsClient.NewListPager. type ArtifactsClientListResponse struct { + // List of blueprint artifacts. ArtifactList } // AssignmentOperationsClientGetResponse contains the response from method AssignmentOperationsClient.Get. type AssignmentOperationsClientGetResponse struct { + // Represents underlying deployment detail for each update to the blueprint assignment. AssignmentOperation } // AssignmentOperationsClientListResponse contains the response from method AssignmentOperationsClient.NewListPager. type AssignmentOperationsClientListResponse struct { + // List of AssignmentOperation. AssignmentOperationList } // AssignmentsClientCreateOrUpdateResponse contains the response from method AssignmentsClient.CreateOrUpdate. type AssignmentsClientCreateOrUpdateResponse struct { + // Represents a blueprint assignment. Assignment } // AssignmentsClientDeleteResponse contains the response from method AssignmentsClient.Delete. type AssignmentsClientDeleteResponse struct { + // Represents a blueprint assignment. Assignment } // AssignmentsClientGetResponse contains the response from method AssignmentsClient.Get. type AssignmentsClientGetResponse struct { + // Represents a blueprint assignment. Assignment } // AssignmentsClientListResponse contains the response from method AssignmentsClient.NewListPager. type AssignmentsClientListResponse struct { + // List of blueprint assignments AssignmentList } // AssignmentsClientWhoIsBlueprintResponse contains the response from method AssignmentsClient.WhoIsBlueprint. type AssignmentsClientWhoIsBlueprintResponse struct { + // Response schema for querying the Azure Blueprints service principal in the tenant. WhoIsBlueprintContract } // BlueprintsClientCreateOrUpdateResponse contains the response from method BlueprintsClient.CreateOrUpdate. type BlueprintsClientCreateOrUpdateResponse struct { + // Represents a Blueprint definition. Blueprint } // BlueprintsClientDeleteResponse contains the response from method BlueprintsClient.Delete. type BlueprintsClientDeleteResponse struct { + // Represents a Blueprint definition. Blueprint } // BlueprintsClientGetResponse contains the response from method BlueprintsClient.Get. type BlueprintsClientGetResponse struct { + // Represents a Blueprint definition. Blueprint } // BlueprintsClientListResponse contains the response from method BlueprintsClient.NewListPager. type BlueprintsClientListResponse struct { + // List of blueprint definitions. List } // PublishedArtifactsClientGetResponse contains the response from method PublishedArtifactsClient.Get. type PublishedArtifactsClientGetResponse struct { + // Represents a blueprint artifact. ArtifactClassification } @@ -131,25 +146,30 @@ func (p *PublishedArtifactsClientGetResponse) UnmarshalJSON(data []byte) error { // PublishedArtifactsClientListResponse contains the response from method PublishedArtifactsClient.NewListPager. type PublishedArtifactsClientListResponse struct { + // List of blueprint artifacts. ArtifactList } // PublishedBlueprintsClientCreateResponse contains the response from method PublishedBlueprintsClient.Create. type PublishedBlueprintsClientCreateResponse struct { + // Represents a published blueprint. PublishedBlueprint } // PublishedBlueprintsClientDeleteResponse contains the response from method PublishedBlueprintsClient.Delete. type PublishedBlueprintsClientDeleteResponse struct { + // Represents a published blueprint. PublishedBlueprint } // PublishedBlueprintsClientGetResponse contains the response from method PublishedBlueprintsClient.Get. type PublishedBlueprintsClientGetResponse struct { + // Represents a published blueprint. PublishedBlueprint } // PublishedBlueprintsClientListResponse contains the response from method PublishedBlueprintsClient.NewListPager. type PublishedBlueprintsClientListResponse struct { + // List of published blueprint definitions. PublishedBlueprintList } diff --git a/sdk/resourcemanager/blueprint/armblueprint/time_rfc3339.go b/sdk/resourcemanager/blueprint/armblueprint/time_rfc3339.go index fa2420e7c64b..d011ddbb9ce3 100644 --- a/sdk/resourcemanager/blueprint/armblueprint/time_rfc3339.go +++ b/sdk/resourcemanager/blueprint/armblueprint/time_rfc3339.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armblueprint @@ -19,50 +18,50 @@ import ( "time" ) -const ( - utcLayoutJSON = `"2006-01-02T15:04:05.999999999"` - utcLayout = "2006-01-02T15:04:05.999999999" - rfc3339JSON = `"` + time.RFC3339Nano + `"` -) - // Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases. var tzOffsetRegex = regexp.MustCompile(`(Z|z|\+|-)(\d+:\d+)*"*$`) -type timeRFC3339 time.Time +const ( + utcDateTimeJSON = `"2006-01-02T15:04:05.999999999"` + utcDateTime = "2006-01-02T15:04:05.999999999" + dateTimeJSON = `"` + time.RFC3339Nano + `"` +) + +type dateTimeRFC3339 time.Time -func (t timeRFC3339) MarshalJSON() (json []byte, err error) { +func (t dateTimeRFC3339) MarshalJSON() ([]byte, error) { tt := time.Time(t) return tt.MarshalJSON() } -func (t timeRFC3339) MarshalText() (text []byte, err error) { +func (t dateTimeRFC3339) MarshalText() ([]byte, error) { tt := time.Time(t) return tt.MarshalText() } -func (t *timeRFC3339) UnmarshalJSON(data []byte) error { - layout := utcLayoutJSON +func (t *dateTimeRFC3339) UnmarshalJSON(data []byte) error { + layout := utcDateTimeJSON if tzOffsetRegex.Match(data) { - layout = rfc3339JSON + layout = dateTimeJSON } return t.Parse(layout, string(data)) } -func (t *timeRFC3339) UnmarshalText(data []byte) (err error) { - layout := utcLayout +func (t *dateTimeRFC3339) UnmarshalText(data []byte) error { + layout := utcDateTime if tzOffsetRegex.Match(data) { layout = time.RFC3339Nano } return t.Parse(layout, string(data)) } -func (t *timeRFC3339) Parse(layout, value string) error { +func (t *dateTimeRFC3339) Parse(layout, value string) error { p, err := time.Parse(layout, strings.ToUpper(value)) - *t = timeRFC3339(p) + *t = dateTimeRFC3339(p) return err } -func populateTimeRFC3339(m map[string]any, k string, t *time.Time) { +func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) { if t == nil { return } else if azcore.IsNullValue(t) { @@ -71,14 +70,14 @@ func populateTimeRFC3339(m map[string]any, k string, t *time.Time) { } else if reflect.ValueOf(t).IsNil() { return } - m[k] = (*timeRFC3339)(t) + m[k] = (*dateTimeRFC3339)(t) } -func unpopulateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { +func unpopulateDateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { if data == nil || strings.EqualFold(string(data), "null") { return nil } - var aux timeRFC3339 + var aux dateTimeRFC3339 if err := json.Unmarshal(data, &aux); err != nil { return fmt.Errorf("struct field %s: %v", fn, err) } From b8e3fb23ac28ff1564b61d8d40df81bec3c7ef8d Mon Sep 17 00:00:00 2001 From: Alancere <804873052@qq.com> Date: Tue, 21 Nov 2023 16:08:08 +0800 Subject: [PATCH 05/10] [Release] sdk/resourcemanager/botservice/armbotservice/1.2.0 generation from spec commit: 164375e67a1bffb207bcf603772c289dbe42d7b5 --- .../botservice/armbotservice/CHANGELOG.md | 6 + .../botservice/armbotservice/README.md | 7 + .../botservice/armbotservice/autorest.md | 2 +- .../armbotservice/botconnection_client.go | 123 ++++-- .../botservice/armbotservice/bots_client.go | 134 ++++--- .../armbotservice/botservice_live_test.go | 2 +- .../armbotservice/channels_client.go | 108 ++++-- .../armbotservice/client_factory.go | 46 ++- .../botservice/armbotservice/constants.go | 65 ++-- .../armbotservice/directline_client.go | 25 +- .../botservice/armbotservice/email_client.go | 20 +- .../fake/botconnection_server.go | 367 ++++++++++++++++++ .../armbotservice/fake/bots_server.go | 343 ++++++++++++++++ .../armbotservice/fake/channels_server.go | 354 +++++++++++++++++ .../armbotservice/fake/directline_server.go | 114 ++++++ .../armbotservice/fake/email_server.go | 100 +++++ .../armbotservice/fake/hostsettings_server.go | 91 +++++ .../botservice/armbotservice/fake/internal.go | 72 ++++ .../fake/operationresults_server.go | 111 ++++++ .../armbotservice/fake/operations_server.go | 96 +++++ .../fake/privateendpointconnections_server.go | 242 ++++++++++++ .../fake/privatelinkresources_server.go | 100 +++++ .../fake/qnamakerendpointkeys_server.go | 95 +++++ .../armbotservice/fake/server_factory.go | 135 +++++++ .../armbotservice/fake/time_rfc3339.go | 86 ++++ .../botservice/armbotservice/go.mod | 28 +- .../botservice/armbotservice/go.sum | 60 ++- .../armbotservice/hostsettings_client.go | 20 +- .../botservice/armbotservice/interfaces.go | 20 + .../botservice/armbotservice/models.go | 218 +---------- .../botservice/armbotservice/models_serde.go | 7 +- .../armbotservice/operationresults_client.go | 28 +- .../operationresults_client_example_test.go | 2 +- .../armbotservice/operations_client.go | 26 +- .../botservice/armbotservice/options.go | 175 +++++++++ .../armbotservice/polymorphic_helpers.go | 8 +- .../privateendpointconnections_client.go | 54 ++- .../privatelinkresources_client.go | 20 +- .../qnamakerendpointkeys_client.go | 25 +- .../armbotservice/response_types.go | 30 +- .../botservice/armbotservice/time_rfc3339.go | 43 +- 41 files changed, 3074 insertions(+), 534 deletions(-) create mode 100644 sdk/resourcemanager/botservice/armbotservice/fake/botconnection_server.go create mode 100644 sdk/resourcemanager/botservice/armbotservice/fake/bots_server.go create mode 100644 sdk/resourcemanager/botservice/armbotservice/fake/channels_server.go create mode 100644 sdk/resourcemanager/botservice/armbotservice/fake/directline_server.go create mode 100644 sdk/resourcemanager/botservice/armbotservice/fake/email_server.go create mode 100644 sdk/resourcemanager/botservice/armbotservice/fake/hostsettings_server.go create mode 100644 sdk/resourcemanager/botservice/armbotservice/fake/internal.go create mode 100644 sdk/resourcemanager/botservice/armbotservice/fake/operationresults_server.go create mode 100644 sdk/resourcemanager/botservice/armbotservice/fake/operations_server.go create mode 100644 sdk/resourcemanager/botservice/armbotservice/fake/privateendpointconnections_server.go create mode 100644 sdk/resourcemanager/botservice/armbotservice/fake/privatelinkresources_server.go create mode 100644 sdk/resourcemanager/botservice/armbotservice/fake/qnamakerendpointkeys_server.go create mode 100644 sdk/resourcemanager/botservice/armbotservice/fake/server_factory.go create mode 100644 sdk/resourcemanager/botservice/armbotservice/fake/time_rfc3339.go create mode 100644 sdk/resourcemanager/botservice/armbotservice/interfaces.go create mode 100644 sdk/resourcemanager/botservice/armbotservice/options.go diff --git a/sdk/resourcemanager/botservice/armbotservice/CHANGELOG.md b/sdk/resourcemanager/botservice/armbotservice/CHANGELOG.md index 0aaa02914b99..6ad7813be2c5 100644 --- a/sdk/resourcemanager/botservice/armbotservice/CHANGELOG.md +++ b/sdk/resourcemanager/botservice/armbotservice/CHANGELOG.md @@ -1,5 +1,11 @@ # Release History +## 1.2.0 (2023-11-24) +### Features Added + +- Support for test fakes and OpenTelemetry trace spans. + + ## 1.1.1 (2023-04-14) ### Bug Fixes diff --git a/sdk/resourcemanager/botservice/armbotservice/README.md b/sdk/resourcemanager/botservice/armbotservice/README.md index e356ed4850d8..1c2cfd5fc9f8 100644 --- a/sdk/resourcemanager/botservice/armbotservice/README.md +++ b/sdk/resourcemanager/botservice/armbotservice/README.md @@ -60,6 +60,13 @@ A client groups a set of related APIs, providing access to its functionality. C client := clientFactory.NewBotsClient() ``` +## Fakes + +The fake package contains types used for constructing in-memory fake servers used in unit tests. +This allows writing tests to cover various success/error conditions without the need for connecting to a live service. + +Please see https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/samples/fakes for details and examples on how to use fakes. + ## Provide Feedback If you encounter bugs or have suggestions, please diff --git a/sdk/resourcemanager/botservice/armbotservice/autorest.md b/sdk/resourcemanager/botservice/armbotservice/autorest.md index 40bc96e36b06..6fc18ed9fd2b 100644 --- a/sdk/resourcemanager/botservice/armbotservice/autorest.md +++ b/sdk/resourcemanager/botservice/armbotservice/autorest.md @@ -8,5 +8,5 @@ require: - https://github.com/Azure/azure-rest-api-specs/blob/e7bf3adfa2d5e5cdbb804eec35279501794f461c/specification/botservice/resource-manager/readme.md - https://github.com/Azure/azure-rest-api-specs/blob/e7bf3adfa2d5e5cdbb804eec35279501794f461c/specification/botservice/resource-manager/readme.go.md license-header: MICROSOFT_MIT_NO_VERSION -module-version: 1.1.1 +module-version: 1.2.0 ``` \ No newline at end of file diff --git a/sdk/resourcemanager/botservice/armbotservice/botconnection_client.go b/sdk/resourcemanager/botservice/armbotservice/botconnection_client.go index 60384eb9b8de..faa0b848c06e 100644 --- a/sdk/resourcemanager/botservice/armbotservice/botconnection_client.go +++ b/sdk/resourcemanager/botservice/armbotservice/botconnection_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbotservice @@ -33,7 +32,7 @@ type BotConnectionClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewBotConnectionClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*BotConnectionClient, error) { - cl, err := arm.NewClient(moduleName+".BotConnectionClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -54,18 +53,25 @@ func NewBotConnectionClient(subscriptionID string, credential azcore.TokenCreden // - parameters - The parameters to provide for creating the Connection Setting. // - options - BotConnectionClientCreateOptions contains the optional parameters for the BotConnectionClient.Create method. func (client *BotConnectionClient) Create(ctx context.Context, resourceGroupName string, resourceName string, connectionName string, parameters ConnectionSetting, options *BotConnectionClientCreateOptions) (BotConnectionClientCreateResponse, error) { + var err error + const operationName = "BotConnectionClient.Create" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, resourceName, connectionName, parameters, options) if err != nil { return BotConnectionClientCreateResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return BotConnectionClientCreateResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusCreated) { - return BotConnectionClientCreateResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusCreated) { + err = runtime.NewResponseError(httpResp) + return BotConnectionClientCreateResponse{}, err } - return client.createHandleResponse(resp) + resp, err := client.createHandleResponse(httpResp) + return resp, err } // createCreateRequest creates the Create request. @@ -95,7 +101,10 @@ func (client *BotConnectionClient) createCreateRequest(ctx context.Context, reso reqQP.Set("api-version", "2022-09-15") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // createHandleResponse handles the Create response. @@ -116,16 +125,22 @@ func (client *BotConnectionClient) createHandleResponse(resp *http.Response) (Bo // - connectionName - The name of the Bot Service Connection Setting resource. // - options - BotConnectionClientDeleteOptions contains the optional parameters for the BotConnectionClient.Delete method. func (client *BotConnectionClient) Delete(ctx context.Context, resourceGroupName string, resourceName string, connectionName string, options *BotConnectionClientDeleteOptions) (BotConnectionClientDeleteResponse, error) { + var err error + const operationName = "BotConnectionClient.Delete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, resourceName, connectionName, options) if err != nil { return BotConnectionClientDeleteResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return BotConnectionClientDeleteResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusNoContent) { - return BotConnectionClientDeleteResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusNoContent) { + err = runtime.NewResponseError(httpResp) + return BotConnectionClientDeleteResponse{}, err } return BotConnectionClientDeleteResponse{}, nil } @@ -169,18 +184,25 @@ func (client *BotConnectionClient) deleteCreateRequest(ctx context.Context, reso // - connectionName - The name of the Bot Service Connection Setting resource. // - options - BotConnectionClientGetOptions contains the optional parameters for the BotConnectionClient.Get method. func (client *BotConnectionClient) Get(ctx context.Context, resourceGroupName string, resourceName string, connectionName string, options *BotConnectionClientGetOptions) (BotConnectionClientGetResponse, error) { + var err error + const operationName = "BotConnectionClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, resourceName, connectionName, options) if err != nil { return BotConnectionClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return BotConnectionClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return BotConnectionClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return BotConnectionClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -235,25 +257,20 @@ func (client *BotConnectionClient) NewListByBotServicePager(resourceGroupName st return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *BotConnectionClientListByBotServiceResponse) (BotConnectionClientListByBotServiceResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByBotServiceCreateRequest(ctx, resourceGroupName, resourceName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return BotConnectionClientListByBotServiceResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "BotConnectionClient.NewListByBotServicePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByBotServiceCreateRequest(ctx, resourceGroupName, resourceName, options) + }, nil) if err != nil { return BotConnectionClientListByBotServiceResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return BotConnectionClientListByBotServiceResponse{}, runtime.NewResponseError(resp) - } return client.listByBotServiceHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -299,18 +316,25 @@ func (client *BotConnectionClient) listByBotServiceHandleResponse(resp *http.Res // - options - BotConnectionClientListServiceProvidersOptions contains the optional parameters for the BotConnectionClient.ListServiceProviders // method. func (client *BotConnectionClient) ListServiceProviders(ctx context.Context, options *BotConnectionClientListServiceProvidersOptions) (BotConnectionClientListServiceProvidersResponse, error) { + var err error + const operationName = "BotConnectionClient.ListServiceProviders" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.listServiceProvidersCreateRequest(ctx, options) if err != nil { return BotConnectionClientListServiceProvidersResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return BotConnectionClientListServiceProvidersResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return BotConnectionClientListServiceProvidersResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return BotConnectionClientListServiceProvidersResponse{}, err } - return client.listServiceProvidersHandleResponse(resp) + resp, err := client.listServiceProvidersHandleResponse(httpResp) + return resp, err } // listServiceProvidersCreateRequest creates the ListServiceProviders request. @@ -350,18 +374,25 @@ func (client *BotConnectionClient) listServiceProvidersHandleResponse(resp *http // - options - BotConnectionClientListWithSecretsOptions contains the optional parameters for the BotConnectionClient.ListWithSecrets // method. func (client *BotConnectionClient) ListWithSecrets(ctx context.Context, resourceGroupName string, resourceName string, connectionName string, options *BotConnectionClientListWithSecretsOptions) (BotConnectionClientListWithSecretsResponse, error) { + var err error + const operationName = "BotConnectionClient.ListWithSecrets" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.listWithSecretsCreateRequest(ctx, resourceGroupName, resourceName, connectionName, options) if err != nil { return BotConnectionClientListWithSecretsResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return BotConnectionClientListWithSecretsResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return BotConnectionClientListWithSecretsResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return BotConnectionClientListWithSecretsResponse{}, err } - return client.listWithSecretsHandleResponse(resp) + resp, err := client.listWithSecretsHandleResponse(httpResp) + return resp, err } // listWithSecretsCreateRequest creates the ListWithSecrets request. @@ -413,18 +444,25 @@ func (client *BotConnectionClient) listWithSecretsHandleResponse(resp *http.Resp // - parameters - The parameters to provide for updating the Connection Setting. // - options - BotConnectionClientUpdateOptions contains the optional parameters for the BotConnectionClient.Update method. func (client *BotConnectionClient) Update(ctx context.Context, resourceGroupName string, resourceName string, connectionName string, parameters ConnectionSetting, options *BotConnectionClientUpdateOptions) (BotConnectionClientUpdateResponse, error) { + var err error + const operationName = "BotConnectionClient.Update" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceGroupName, resourceName, connectionName, parameters, options) if err != nil { return BotConnectionClientUpdateResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return BotConnectionClientUpdateResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusCreated) { - return BotConnectionClientUpdateResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusCreated) { + err = runtime.NewResponseError(httpResp) + return BotConnectionClientUpdateResponse{}, err } - return client.updateHandleResponse(resp) + resp, err := client.updateHandleResponse(httpResp) + return resp, err } // updateCreateRequest creates the Update request. @@ -454,7 +492,10 @@ func (client *BotConnectionClient) updateCreateRequest(ctx context.Context, reso reqQP.Set("api-version", "2022-09-15") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // updateHandleResponse handles the Update response. diff --git a/sdk/resourcemanager/botservice/armbotservice/bots_client.go b/sdk/resourcemanager/botservice/armbotservice/bots_client.go index b1187a91a19d..cb61b5f3ebe3 100644 --- a/sdk/resourcemanager/botservice/armbotservice/bots_client.go +++ b/sdk/resourcemanager/botservice/armbotservice/bots_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbotservice @@ -33,7 +32,7 @@ type BotsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewBotsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*BotsClient, error) { - cl, err := arm.NewClient(moduleName+".BotsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -53,18 +52,25 @@ func NewBotsClient(subscriptionID string, credential azcore.TokenCredential, opt // - parameters - The parameters to provide for the created bot. // - options - BotsClientCreateOptions contains the optional parameters for the BotsClient.Create method. func (client *BotsClient) Create(ctx context.Context, resourceGroupName string, resourceName string, parameters Bot, options *BotsClientCreateOptions) (BotsClientCreateResponse, error) { + var err error + const operationName = "BotsClient.Create" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, resourceName, parameters, options) if err != nil { return BotsClientCreateResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return BotsClientCreateResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusCreated) { - return BotsClientCreateResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusCreated) { + err = runtime.NewResponseError(httpResp) + return BotsClientCreateResponse{}, err } - return client.createHandleResponse(resp) + resp, err := client.createHandleResponse(httpResp) + return resp, err } // createCreateRequest creates the Create request. @@ -90,7 +96,10 @@ func (client *BotsClient) createCreateRequest(ctx context.Context, resourceGroup reqQP.Set("api-version", "2022-09-15") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // createHandleResponse handles the Create response. @@ -110,16 +119,22 @@ func (client *BotsClient) createHandleResponse(resp *http.Response) (BotsClientC // - resourceName - The name of the Bot resource. // - options - BotsClientDeleteOptions contains the optional parameters for the BotsClient.Delete method. func (client *BotsClient) Delete(ctx context.Context, resourceGroupName string, resourceName string, options *BotsClientDeleteOptions) (BotsClientDeleteResponse, error) { + var err error + const operationName = "BotsClient.Delete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, resourceName, options) if err != nil { return BotsClientDeleteResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return BotsClientDeleteResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusNoContent) { - return BotsClientDeleteResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusNoContent) { + err = runtime.NewResponseError(httpResp) + return BotsClientDeleteResponse{}, err } return BotsClientDeleteResponse{}, nil } @@ -158,18 +173,25 @@ func (client *BotsClient) deleteCreateRequest(ctx context.Context, resourceGroup // - resourceName - The name of the Bot resource. // - options - BotsClientGetOptions contains the optional parameters for the BotsClient.Get method. func (client *BotsClient) Get(ctx context.Context, resourceGroupName string, resourceName string, options *BotsClientGetOptions) (BotsClientGetResponse, error) { + var err error + const operationName = "BotsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, resourceName, options) if err != nil { return BotsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return BotsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return BotsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return BotsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -215,18 +237,25 @@ func (client *BotsClient) getHandleResponse(resp *http.Response) (BotsClientGetR // - options - BotsClientGetCheckNameAvailabilityOptions contains the optional parameters for the BotsClient.GetCheckNameAvailability // method. func (client *BotsClient) GetCheckNameAvailability(ctx context.Context, parameters CheckNameAvailabilityRequestBody, options *BotsClientGetCheckNameAvailabilityOptions) (BotsClientGetCheckNameAvailabilityResponse, error) { + var err error + const operationName = "BotsClient.GetCheckNameAvailability" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCheckNameAvailabilityCreateRequest(ctx, parameters, options) if err != nil { return BotsClientGetCheckNameAvailabilityResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return BotsClientGetCheckNameAvailabilityResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return BotsClientGetCheckNameAvailabilityResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return BotsClientGetCheckNameAvailabilityResponse{}, err } - return client.getCheckNameAvailabilityHandleResponse(resp) + resp, err := client.getCheckNameAvailabilityHandleResponse(httpResp) + return resp, err } // getCheckNameAvailabilityCreateRequest creates the GetCheckNameAvailability request. @@ -240,7 +269,10 @@ func (client *BotsClient) getCheckNameAvailabilityCreateRequest(ctx context.Cont reqQP.Set("api-version", "2022-09-15") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // getCheckNameAvailabilityHandleResponse handles the GetCheckNameAvailability response. @@ -262,25 +294,20 @@ func (client *BotsClient) NewListPager(options *BotsClientListOptions) *runtime. return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *BotsClientListResponse) (BotsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return BotsClientListResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "BotsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return BotsClientListResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return BotsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -323,25 +350,20 @@ func (client *BotsClient) NewListByResourceGroupPager(resourceGroupName string, return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *BotsClientListByResourceGroupResponse) (BotsClientListByResourceGroupResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByResourceGroupCreateRequest(ctx, resourceGroupName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return BotsClientListByResourceGroupResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "BotsClient.NewListByResourceGroupPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByResourceGroupCreateRequest(ctx, resourceGroupName, options) + }, nil) if err != nil { return BotsClientListByResourceGroupResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return BotsClientListByResourceGroupResponse{}, runtime.NewResponseError(resp) - } return client.listByResourceGroupHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -385,18 +407,25 @@ func (client *BotsClient) listByResourceGroupHandleResponse(resp *http.Response) // - parameters - The parameters to provide for the created bot. // - options - BotsClientUpdateOptions contains the optional parameters for the BotsClient.Update method. func (client *BotsClient) Update(ctx context.Context, resourceGroupName string, resourceName string, parameters Bot, options *BotsClientUpdateOptions) (BotsClientUpdateResponse, error) { + var err error + const operationName = "BotsClient.Update" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceGroupName, resourceName, parameters, options) if err != nil { return BotsClientUpdateResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return BotsClientUpdateResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusCreated) { - return BotsClientUpdateResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusCreated) { + err = runtime.NewResponseError(httpResp) + return BotsClientUpdateResponse{}, err } - return client.updateHandleResponse(resp) + resp, err := client.updateHandleResponse(httpResp) + return resp, err } // updateCreateRequest creates the Update request. @@ -422,7 +451,10 @@ func (client *BotsClient) updateCreateRequest(ctx context.Context, resourceGroup reqQP.Set("api-version", "2022-09-15") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // updateHandleResponse handles the Update response. diff --git a/sdk/resourcemanager/botservice/armbotservice/botservice_live_test.go b/sdk/resourcemanager/botservice/armbotservice/botservice_live_test.go index f598d14015b5..6f7558e5aed5 100644 --- a/sdk/resourcemanager/botservice/armbotservice/botservice_live_test.go +++ b/sdk/resourcemanager/botservice/armbotservice/botservice_live_test.go @@ -16,7 +16,7 @@ import ( "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" "github.com/Azure/azure-sdk-for-go/sdk/internal/recording" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/botservice/armbotservice" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/testutil" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2/testutil" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources" "github.com/stretchr/testify/suite" ) diff --git a/sdk/resourcemanager/botservice/armbotservice/channels_client.go b/sdk/resourcemanager/botservice/armbotservice/channels_client.go index b21a52d77512..47e9ee6fb5be 100644 --- a/sdk/resourcemanager/botservice/armbotservice/channels_client.go +++ b/sdk/resourcemanager/botservice/armbotservice/channels_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbotservice @@ -33,7 +32,7 @@ type ChannelsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewChannelsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*ChannelsClient, error) { - cl, err := arm.NewClient(moduleName+".ChannelsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -54,18 +53,25 @@ func NewChannelsClient(subscriptionID string, credential azcore.TokenCredential, // - parameters - The parameters to provide for the created bot. // - options - ChannelsClientCreateOptions contains the optional parameters for the ChannelsClient.Create method. func (client *ChannelsClient) Create(ctx context.Context, resourceGroupName string, resourceName string, channelName ChannelName, parameters BotChannel, options *ChannelsClientCreateOptions) (ChannelsClientCreateResponse, error) { + var err error + const operationName = "ChannelsClient.Create" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, resourceName, channelName, parameters, options) if err != nil { return ChannelsClientCreateResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return ChannelsClientCreateResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusCreated) { - return ChannelsClientCreateResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusCreated) { + err = runtime.NewResponseError(httpResp) + return ChannelsClientCreateResponse{}, err } - return client.createHandleResponse(resp) + resp, err := client.createHandleResponse(httpResp) + return resp, err } // createCreateRequest creates the Create request. @@ -95,7 +101,10 @@ func (client *ChannelsClient) createCreateRequest(ctx context.Context, resourceG reqQP.Set("api-version", "2022-09-15") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // createHandleResponse handles the Create response. @@ -116,16 +125,22 @@ func (client *ChannelsClient) createHandleResponse(resp *http.Response) (Channel // - channelName - The name of the Bot resource. // - options - ChannelsClientDeleteOptions contains the optional parameters for the ChannelsClient.Delete method. func (client *ChannelsClient) Delete(ctx context.Context, resourceGroupName string, resourceName string, channelName string, options *ChannelsClientDeleteOptions) (ChannelsClientDeleteResponse, error) { + var err error + const operationName = "ChannelsClient.Delete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, resourceName, channelName, options) if err != nil { return ChannelsClientDeleteResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return ChannelsClientDeleteResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusNoContent) { - return ChannelsClientDeleteResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusNoContent) { + err = runtime.NewResponseError(httpResp) + return ChannelsClientDeleteResponse{}, err } return ChannelsClientDeleteResponse{}, nil } @@ -169,18 +184,25 @@ func (client *ChannelsClient) deleteCreateRequest(ctx context.Context, resourceG // - channelName - The name of the Bot resource. // - options - ChannelsClientGetOptions contains the optional parameters for the ChannelsClient.Get method. func (client *ChannelsClient) Get(ctx context.Context, resourceGroupName string, resourceName string, channelName string, options *ChannelsClientGetOptions) (ChannelsClientGetResponse, error) { + var err error + const operationName = "ChannelsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, resourceName, channelName, options) if err != nil { return ChannelsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return ChannelsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ChannelsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return ChannelsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -235,25 +257,20 @@ func (client *ChannelsClient) NewListByResourceGroupPager(resourceGroupName stri return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ChannelsClientListByResourceGroupResponse) (ChannelsClientListByResourceGroupResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByResourceGroupCreateRequest(ctx, resourceGroupName, resourceName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ChannelsClient.NewListByResourceGroupPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByResourceGroupCreateRequest(ctx, resourceGroupName, resourceName, options) + }, nil) if err != nil { return ChannelsClientListByResourceGroupResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return ChannelsClientListByResourceGroupResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ChannelsClientListByResourceGroupResponse{}, runtime.NewResponseError(resp) - } return client.listByResourceGroupHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -301,18 +318,25 @@ func (client *ChannelsClient) listByResourceGroupHandleResponse(resp *http.Respo // - channelName - The name of the Channel resource. // - options - ChannelsClientListWithKeysOptions contains the optional parameters for the ChannelsClient.ListWithKeys method. func (client *ChannelsClient) ListWithKeys(ctx context.Context, resourceGroupName string, resourceName string, channelName ChannelName, options *ChannelsClientListWithKeysOptions) (ChannelsClientListWithKeysResponse, error) { + var err error + const operationName = "ChannelsClient.ListWithKeys" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.listWithKeysCreateRequest(ctx, resourceGroupName, resourceName, channelName, options) if err != nil { return ChannelsClientListWithKeysResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return ChannelsClientListWithKeysResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ChannelsClientListWithKeysResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return ChannelsClientListWithKeysResponse{}, err } - return client.listWithKeysHandleResponse(resp) + resp, err := client.listWithKeysHandleResponse(httpResp) + return resp, err } // listWithKeysCreateRequest creates the ListWithKeys request. @@ -364,18 +388,25 @@ func (client *ChannelsClient) listWithKeysHandleResponse(resp *http.Response) (C // - parameters - The parameters to provide for the created bot. // - options - ChannelsClientUpdateOptions contains the optional parameters for the ChannelsClient.Update method. func (client *ChannelsClient) Update(ctx context.Context, resourceGroupName string, resourceName string, channelName ChannelName, parameters BotChannel, options *ChannelsClientUpdateOptions) (ChannelsClientUpdateResponse, error) { + var err error + const operationName = "ChannelsClient.Update" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceGroupName, resourceName, channelName, parameters, options) if err != nil { return ChannelsClientUpdateResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return ChannelsClientUpdateResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusCreated) { - return ChannelsClientUpdateResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusCreated) { + err = runtime.NewResponseError(httpResp) + return ChannelsClientUpdateResponse{}, err } - return client.updateHandleResponse(resp) + resp, err := client.updateHandleResponse(httpResp) + return resp, err } // updateCreateRequest creates the Update request. @@ -405,7 +436,10 @@ func (client *ChannelsClient) updateCreateRequest(ctx context.Context, resourceG reqQP.Set("api-version", "2022-09-15") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // updateHandleResponse handles the Update response. diff --git a/sdk/resourcemanager/botservice/armbotservice/client_factory.go b/sdk/resourcemanager/botservice/armbotservice/client_factory.go index a2b2957a5a96..3ba9cf6f6eb0 100644 --- a/sdk/resourcemanager/botservice/armbotservice/client_factory.go +++ b/sdk/resourcemanager/botservice/armbotservice/client_factory.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbotservice @@ -28,7 +27,7 @@ type ClientFactory struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewClientFactory(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*ClientFactory, error) { - _, err := arm.NewClient(moduleName+".ClientFactory", moduleVersion, credential, options) + _, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -38,57 +37,68 @@ func NewClientFactory(subscriptionID string, credential azcore.TokenCredential, }, nil } +// NewBotConnectionClient creates a new instance of BotConnectionClient. +func (c *ClientFactory) NewBotConnectionClient() *BotConnectionClient { + subClient, _ := NewBotConnectionClient(c.subscriptionID, c.credential, c.options) + return subClient +} + +// NewBotsClient creates a new instance of BotsClient. func (c *ClientFactory) NewBotsClient() *BotsClient { subClient, _ := NewBotsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewChannelsClient creates a new instance of ChannelsClient. func (c *ClientFactory) NewChannelsClient() *ChannelsClient { subClient, _ := NewChannelsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewDirectLineClient creates a new instance of DirectLineClient. func (c *ClientFactory) NewDirectLineClient() *DirectLineClient { subClient, _ := NewDirectLineClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewEmailClient creates a new instance of EmailClient. func (c *ClientFactory) NewEmailClient() *EmailClient { subClient, _ := NewEmailClient(c.subscriptionID, c.credential, c.options) return subClient } -func (c *ClientFactory) NewOperationsClient() *OperationsClient { - subClient, _ := NewOperationsClient(c.credential, c.options) - return subClient -} - -func (c *ClientFactory) NewBotConnectionClient() *BotConnectionClient { - subClient, _ := NewBotConnectionClient(c.subscriptionID, c.credential, c.options) - return subClient -} - -func (c *ClientFactory) NewQnAMakerEndpointKeysClient() *QnAMakerEndpointKeysClient { - subClient, _ := NewQnAMakerEndpointKeysClient(c.subscriptionID, c.credential, c.options) - return subClient -} - +// NewHostSettingsClient creates a new instance of HostSettingsClient. func (c *ClientFactory) NewHostSettingsClient() *HostSettingsClient { subClient, _ := NewHostSettingsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewOperationResultsClient creates a new instance of OperationResultsClient. func (c *ClientFactory) NewOperationResultsClient() *OperationResultsClient { subClient, _ := NewOperationResultsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewOperationsClient creates a new instance of OperationsClient. +func (c *ClientFactory) NewOperationsClient() *OperationsClient { + subClient, _ := NewOperationsClient(c.credential, c.options) + return subClient +} + +// NewPrivateEndpointConnectionsClient creates a new instance of PrivateEndpointConnectionsClient. func (c *ClientFactory) NewPrivateEndpointConnectionsClient() *PrivateEndpointConnectionsClient { subClient, _ := NewPrivateEndpointConnectionsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewPrivateLinkResourcesClient creates a new instance of PrivateLinkResourcesClient. func (c *ClientFactory) NewPrivateLinkResourcesClient() *PrivateLinkResourcesClient { subClient, _ := NewPrivateLinkResourcesClient(c.subscriptionID, c.credential, c.options) return subClient } + +// NewQnAMakerEndpointKeysClient creates a new instance of QnAMakerEndpointKeysClient. +func (c *ClientFactory) NewQnAMakerEndpointKeysClient() *QnAMakerEndpointKeysClient { + subClient, _ := NewQnAMakerEndpointKeysClient(c.subscriptionID, c.credential, c.options) + return subClient +} diff --git a/sdk/resourcemanager/botservice/armbotservice/constants.go b/sdk/resourcemanager/botservice/armbotservice/constants.go index 91ad5970b3d9..149e38bcbfc3 100644 --- a/sdk/resourcemanager/botservice/armbotservice/constants.go +++ b/sdk/resourcemanager/botservice/armbotservice/constants.go @@ -3,63 +3,62 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbotservice const ( - moduleName = "armbotservice" - moduleVersion = "v1.1.1" + moduleName = "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/botservice/armbotservice" + moduleVersion = "v1.2.0" ) type ChannelName string const ( + ChannelNameAcsChatChannel ChannelName = "AcsChatChannel" ChannelNameAlexaChannel ChannelName = "AlexaChannel" - ChannelNameFacebookChannel ChannelName = "FacebookChannel" + ChannelNameDirectLineChannel ChannelName = "DirectLineChannel" + ChannelNameDirectLineSpeechChannel ChannelName = "DirectLineSpeechChannel" ChannelNameEmailChannel ChannelName = "EmailChannel" + ChannelNameFacebookChannel ChannelName = "FacebookChannel" ChannelNameKikChannel ChannelName = "KikChannel" - ChannelNameTelegramChannel ChannelName = "TelegramChannel" - ChannelNameSlackChannel ChannelName = "SlackChannel" + ChannelNameLineChannel ChannelName = "LineChannel" + ChannelNameM365Extensions ChannelName = "M365Extensions" ChannelNameMsTeamsChannel ChannelName = "MsTeamsChannel" + ChannelNameOmnichannel ChannelName = "Omnichannel" + ChannelNameOutlookChannel ChannelName = "OutlookChannel" + ChannelNameSearchAssistant ChannelName = "SearchAssistant" ChannelNameSkypeChannel ChannelName = "SkypeChannel" - ChannelNameWebChatChannel ChannelName = "WebChatChannel" - ChannelNameDirectLineChannel ChannelName = "DirectLineChannel" + ChannelNameSlackChannel ChannelName = "SlackChannel" ChannelNameSmsChannel ChannelName = "SmsChannel" - ChannelNameLineChannel ChannelName = "LineChannel" - ChannelNameDirectLineSpeechChannel ChannelName = "DirectLineSpeechChannel" - ChannelNameOutlookChannel ChannelName = "OutlookChannel" - ChannelNameOmnichannel ChannelName = "Omnichannel" + ChannelNameTelegramChannel ChannelName = "TelegramChannel" ChannelNameTelephonyChannel ChannelName = "TelephonyChannel" - ChannelNameAcsChatChannel ChannelName = "AcsChatChannel" - ChannelNameSearchAssistant ChannelName = "SearchAssistant" - ChannelNameM365Extensions ChannelName = "M365Extensions" + ChannelNameWebChatChannel ChannelName = "WebChatChannel" ) // PossibleChannelNameValues returns the possible values for the ChannelName const type. func PossibleChannelNameValues() []ChannelName { return []ChannelName{ + ChannelNameAcsChatChannel, ChannelNameAlexaChannel, - ChannelNameFacebookChannel, + ChannelNameDirectLineChannel, + ChannelNameDirectLineSpeechChannel, ChannelNameEmailChannel, + ChannelNameFacebookChannel, ChannelNameKikChannel, - ChannelNameTelegramChannel, - ChannelNameSlackChannel, + ChannelNameLineChannel, + ChannelNameM365Extensions, ChannelNameMsTeamsChannel, + ChannelNameOmnichannel, + ChannelNameOutlookChannel, + ChannelNameSearchAssistant, ChannelNameSkypeChannel, - ChannelNameWebChatChannel, - ChannelNameDirectLineChannel, + ChannelNameSlackChannel, ChannelNameSmsChannel, - ChannelNameLineChannel, - ChannelNameDirectLineSpeechChannel, - ChannelNameOutlookChannel, - ChannelNameOmnichannel, + ChannelNameTelegramChannel, ChannelNameTelephonyChannel, - ChannelNameAcsChatChannel, - ChannelNameSearchAssistant, - ChannelNameM365Extensions, + ChannelNameWebChatChannel, } } @@ -67,17 +66,17 @@ func PossibleChannelNameValues() []ChannelName { type EmailChannelAuthMethod float32 const ( - // EmailChannelAuthMethodPassword - Basic authentication. - EmailChannelAuthMethodPassword EmailChannelAuthMethod = 0 // EmailChannelAuthMethodGraph - Modern authentication. EmailChannelAuthMethodGraph EmailChannelAuthMethod = 1 + // EmailChannelAuthMethodPassword - Basic authentication. + EmailChannelAuthMethodPassword EmailChannelAuthMethod = 0 ) // PossibleEmailChannelAuthMethodValues returns the possible values for the EmailChannelAuthMethod const type. func PossibleEmailChannelAuthMethodValues() []EmailChannelAuthMethod { return []EmailChannelAuthMethod{ - EmailChannelAuthMethodPassword, EmailChannelAuthMethodGraph, + EmailChannelAuthMethodPassword, } } @@ -216,15 +215,15 @@ func PossiblePublicNetworkAccessValues() []PublicNetworkAccess { type RegenerateKeysChannelName string const ( - RegenerateKeysChannelNameWebChatChannel RegenerateKeysChannelName = "WebChatChannel" RegenerateKeysChannelNameDirectLineChannel RegenerateKeysChannelName = "DirectLineChannel" + RegenerateKeysChannelNameWebChatChannel RegenerateKeysChannelName = "WebChatChannel" ) // PossibleRegenerateKeysChannelNameValues returns the possible values for the RegenerateKeysChannelName const type. func PossibleRegenerateKeysChannelNameValues() []RegenerateKeysChannelName { return []RegenerateKeysChannelName{ - RegenerateKeysChannelNameWebChatChannel, RegenerateKeysChannelNameDirectLineChannel, + RegenerateKeysChannelNameWebChatChannel, } } diff --git a/sdk/resourcemanager/botservice/armbotservice/directline_client.go b/sdk/resourcemanager/botservice/armbotservice/directline_client.go index d8833ef8b1b2..78469527b158 100644 --- a/sdk/resourcemanager/botservice/armbotservice/directline_client.go +++ b/sdk/resourcemanager/botservice/armbotservice/directline_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbotservice @@ -33,7 +32,7 @@ type DirectLineClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewDirectLineClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*DirectLineClient, error) { - cl, err := arm.NewClient(moduleName+".DirectLineClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -55,18 +54,25 @@ func NewDirectLineClient(subscriptionID string, credential azcore.TokenCredentia // - options - DirectLineClientRegenerateKeysOptions contains the optional parameters for the DirectLineClient.RegenerateKeys // method. func (client *DirectLineClient) RegenerateKeys(ctx context.Context, resourceGroupName string, resourceName string, channelName RegenerateKeysChannelName, parameters SiteInfo, options *DirectLineClientRegenerateKeysOptions) (DirectLineClientRegenerateKeysResponse, error) { + var err error + const operationName = "DirectLineClient.RegenerateKeys" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.regenerateKeysCreateRequest(ctx, resourceGroupName, resourceName, channelName, parameters, options) if err != nil { return DirectLineClientRegenerateKeysResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return DirectLineClientRegenerateKeysResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return DirectLineClientRegenerateKeysResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return DirectLineClientRegenerateKeysResponse{}, err } - return client.regenerateKeysHandleResponse(resp) + resp, err := client.regenerateKeysHandleResponse(httpResp) + return resp, err } // regenerateKeysCreateRequest creates the RegenerateKeys request. @@ -96,7 +102,10 @@ func (client *DirectLineClient) regenerateKeysCreateRequest(ctx context.Context, reqQP.Set("api-version", "2022-09-15") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // regenerateKeysHandleResponse handles the RegenerateKeys response. diff --git a/sdk/resourcemanager/botservice/armbotservice/email_client.go b/sdk/resourcemanager/botservice/armbotservice/email_client.go index a0d8dca4f44d..6e96e20bd8e6 100644 --- a/sdk/resourcemanager/botservice/armbotservice/email_client.go +++ b/sdk/resourcemanager/botservice/armbotservice/email_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbotservice @@ -33,7 +32,7 @@ type EmailClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewEmailClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*EmailClient, error) { - cl, err := arm.NewClient(moduleName+".EmailClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -52,18 +51,25 @@ func NewEmailClient(subscriptionID string, credential azcore.TokenCredential, op // - resourceName - The name of the Bot resource. // - options - EmailClientCreateSignInURLOptions contains the optional parameters for the EmailClient.CreateSignInURL method. func (client *EmailClient) CreateSignInURL(ctx context.Context, resourceGroupName string, resourceName string, options *EmailClientCreateSignInURLOptions) (EmailClientCreateSignInURLResponse, error) { + var err error + const operationName = "EmailClient.CreateSignInURL" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createSignInURLCreateRequest(ctx, resourceGroupName, resourceName, options) if err != nil { return EmailClientCreateSignInURLResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return EmailClientCreateSignInURLResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return EmailClientCreateSignInURLResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return EmailClientCreateSignInURLResponse{}, err } - return client.createSignInURLHandleResponse(resp) + resp, err := client.createSignInURLHandleResponse(httpResp) + return resp, err } // createSignInURLCreateRequest creates the CreateSignInURL request. diff --git a/sdk/resourcemanager/botservice/armbotservice/fake/botconnection_server.go b/sdk/resourcemanager/botservice/armbotservice/fake/botconnection_server.go new file mode 100644 index 000000000000..bb83a5d26d82 --- /dev/null +++ b/sdk/resourcemanager/botservice/armbotservice/fake/botconnection_server.go @@ -0,0 +1,367 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/botservice/armbotservice" + "net/http" + "net/url" + "regexp" +) + +// BotConnectionServer is a fake server for instances of the armbotservice.BotConnectionClient type. +type BotConnectionServer struct { + // Create is the fake for method BotConnectionClient.Create + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + Create func(ctx context.Context, resourceGroupName string, resourceName string, connectionName string, parameters armbotservice.ConnectionSetting, options *armbotservice.BotConnectionClientCreateOptions) (resp azfake.Responder[armbotservice.BotConnectionClientCreateResponse], errResp azfake.ErrorResponder) + + // Delete is the fake for method BotConnectionClient.Delete + // HTTP status codes to indicate success: http.StatusOK, http.StatusNoContent + Delete func(ctx context.Context, resourceGroupName string, resourceName string, connectionName string, options *armbotservice.BotConnectionClientDeleteOptions) (resp azfake.Responder[armbotservice.BotConnectionClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method BotConnectionClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, resourceName string, connectionName string, options *armbotservice.BotConnectionClientGetOptions) (resp azfake.Responder[armbotservice.BotConnectionClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByBotServicePager is the fake for method BotConnectionClient.NewListByBotServicePager + // HTTP status codes to indicate success: http.StatusOK + NewListByBotServicePager func(resourceGroupName string, resourceName string, options *armbotservice.BotConnectionClientListByBotServiceOptions) (resp azfake.PagerResponder[armbotservice.BotConnectionClientListByBotServiceResponse]) + + // ListServiceProviders is the fake for method BotConnectionClient.ListServiceProviders + // HTTP status codes to indicate success: http.StatusOK + ListServiceProviders func(ctx context.Context, options *armbotservice.BotConnectionClientListServiceProvidersOptions) (resp azfake.Responder[armbotservice.BotConnectionClientListServiceProvidersResponse], errResp azfake.ErrorResponder) + + // ListWithSecrets is the fake for method BotConnectionClient.ListWithSecrets + // HTTP status codes to indicate success: http.StatusOK + ListWithSecrets func(ctx context.Context, resourceGroupName string, resourceName string, connectionName string, options *armbotservice.BotConnectionClientListWithSecretsOptions) (resp azfake.Responder[armbotservice.BotConnectionClientListWithSecretsResponse], errResp azfake.ErrorResponder) + + // Update is the fake for method BotConnectionClient.Update + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + Update func(ctx context.Context, resourceGroupName string, resourceName string, connectionName string, parameters armbotservice.ConnectionSetting, options *armbotservice.BotConnectionClientUpdateOptions) (resp azfake.Responder[armbotservice.BotConnectionClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewBotConnectionServerTransport creates a new instance of BotConnectionServerTransport with the provided implementation. +// The returned BotConnectionServerTransport instance is connected to an instance of armbotservice.BotConnectionClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewBotConnectionServerTransport(srv *BotConnectionServer) *BotConnectionServerTransport { + return &BotConnectionServerTransport{ + srv: srv, + newListByBotServicePager: newTracker[azfake.PagerResponder[armbotservice.BotConnectionClientListByBotServiceResponse]](), + } +} + +// BotConnectionServerTransport connects instances of armbotservice.BotConnectionClient to instances of BotConnectionServer. +// Don't use this type directly, use NewBotConnectionServerTransport instead. +type BotConnectionServerTransport struct { + srv *BotConnectionServer + newListByBotServicePager *tracker[azfake.PagerResponder[armbotservice.BotConnectionClientListByBotServiceResponse]] +} + +// Do implements the policy.Transporter interface for BotConnectionServerTransport. +func (b *BotConnectionServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "BotConnectionClient.Create": + resp, err = b.dispatchCreate(req) + case "BotConnectionClient.Delete": + resp, err = b.dispatchDelete(req) + case "BotConnectionClient.Get": + resp, err = b.dispatchGet(req) + case "BotConnectionClient.NewListByBotServicePager": + resp, err = b.dispatchNewListByBotServicePager(req) + case "BotConnectionClient.ListServiceProviders": + resp, err = b.dispatchListServiceProviders(req) + case "BotConnectionClient.ListWithSecrets": + resp, err = b.dispatchListWithSecrets(req) + case "BotConnectionClient.Update": + resp, err = b.dispatchUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (b *BotConnectionServerTransport) dispatchCreate(req *http.Request) (*http.Response, error) { + if b.srv.Create == nil { + return nil, &nonRetriableError{errors.New("fake for method Create not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/connections/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbotservice.ConnectionSetting](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + connectionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("connectionName")]) + if err != nil { + return nil, err + } + respr, errRespr := b.srv.Create(req.Context(), resourceGroupNameParam, resourceNameParam, connectionNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK, http.StatusCreated}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ConnectionSetting, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (b *BotConnectionServerTransport) dispatchDelete(req *http.Request) (*http.Response, error) { + if b.srv.Delete == nil { + return nil, &nonRetriableError{errors.New("fake for method Delete not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/connections/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + connectionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("connectionName")]) + if err != nil { + return nil, err + } + respr, errRespr := b.srv.Delete(req.Context(), resourceGroupNameParam, resourceNameParam, connectionNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK, http.StatusNoContent}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusNoContent", respContent.HTTPStatus)} + } + resp, err := server.NewResponse(respContent, req, nil) + if err != nil { + return nil, err + } + return resp, nil +} + +func (b *BotConnectionServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if b.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/connections/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + connectionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("connectionName")]) + if err != nil { + return nil, err + } + respr, errRespr := b.srv.Get(req.Context(), resourceGroupNameParam, resourceNameParam, connectionNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ConnectionSetting, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (b *BotConnectionServerTransport) dispatchNewListByBotServicePager(req *http.Request) (*http.Response, error) { + if b.srv.NewListByBotServicePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByBotServicePager not implemented")} + } + newListByBotServicePager := b.newListByBotServicePager.get(req) + if newListByBotServicePager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/connections` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + resp := b.srv.NewListByBotServicePager(resourceGroupNameParam, resourceNameParam, nil) + newListByBotServicePager = &resp + b.newListByBotServicePager.add(req, newListByBotServicePager) + server.PagerResponderInjectNextLinks(newListByBotServicePager, req, func(page *armbotservice.BotConnectionClientListByBotServiceResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByBotServicePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + b.newListByBotServicePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByBotServicePager) { + b.newListByBotServicePager.remove(req) + } + return resp, nil +} + +func (b *BotConnectionServerTransport) dispatchListServiceProviders(req *http.Request) (*http.Response, error) { + if b.srv.ListServiceProviders == nil { + return nil, &nonRetriableError{errors.New("fake for method ListServiceProviders not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/listAuthServiceProviders` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + respr, errRespr := b.srv.ListServiceProviders(req.Context(), nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ServiceProviderResponseList, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (b *BotConnectionServerTransport) dispatchListWithSecrets(req *http.Request) (*http.Response, error) { + if b.srv.ListWithSecrets == nil { + return nil, &nonRetriableError{errors.New("fake for method ListWithSecrets not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/connections/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/listWithSecrets` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + connectionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("connectionName")]) + if err != nil { + return nil, err + } + respr, errRespr := b.srv.ListWithSecrets(req.Context(), resourceGroupNameParam, resourceNameParam, connectionNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ConnectionSetting, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (b *BotConnectionServerTransport) dispatchUpdate(req *http.Request) (*http.Response, error) { + if b.srv.Update == nil { + return nil, &nonRetriableError{errors.New("fake for method Update not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/connections/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbotservice.ConnectionSetting](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + connectionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("connectionName")]) + if err != nil { + return nil, err + } + respr, errRespr := b.srv.Update(req.Context(), resourceGroupNameParam, resourceNameParam, connectionNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK, http.StatusCreated}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ConnectionSetting, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/botservice/armbotservice/fake/bots_server.go b/sdk/resourcemanager/botservice/armbotservice/fake/bots_server.go new file mode 100644 index 000000000000..7ad8c6f200ab --- /dev/null +++ b/sdk/resourcemanager/botservice/armbotservice/fake/bots_server.go @@ -0,0 +1,343 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/botservice/armbotservice" + "net/http" + "net/url" + "regexp" +) + +// BotsServer is a fake server for instances of the armbotservice.BotsClient type. +type BotsServer struct { + // Create is the fake for method BotsClient.Create + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + Create func(ctx context.Context, resourceGroupName string, resourceName string, parameters armbotservice.Bot, options *armbotservice.BotsClientCreateOptions) (resp azfake.Responder[armbotservice.BotsClientCreateResponse], errResp azfake.ErrorResponder) + + // Delete is the fake for method BotsClient.Delete + // HTTP status codes to indicate success: http.StatusOK, http.StatusNoContent + Delete func(ctx context.Context, resourceGroupName string, resourceName string, options *armbotservice.BotsClientDeleteOptions) (resp azfake.Responder[armbotservice.BotsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method BotsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, resourceName string, options *armbotservice.BotsClientGetOptions) (resp azfake.Responder[armbotservice.BotsClientGetResponse], errResp azfake.ErrorResponder) + + // GetCheckNameAvailability is the fake for method BotsClient.GetCheckNameAvailability + // HTTP status codes to indicate success: http.StatusOK + GetCheckNameAvailability func(ctx context.Context, parameters armbotservice.CheckNameAvailabilityRequestBody, options *armbotservice.BotsClientGetCheckNameAvailabilityOptions) (resp azfake.Responder[armbotservice.BotsClientGetCheckNameAvailabilityResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method BotsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armbotservice.BotsClientListOptions) (resp azfake.PagerResponder[armbotservice.BotsClientListResponse]) + + // NewListByResourceGroupPager is the fake for method BotsClient.NewListByResourceGroupPager + // HTTP status codes to indicate success: http.StatusOK + NewListByResourceGroupPager func(resourceGroupName string, options *armbotservice.BotsClientListByResourceGroupOptions) (resp azfake.PagerResponder[armbotservice.BotsClientListByResourceGroupResponse]) + + // Update is the fake for method BotsClient.Update + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + Update func(ctx context.Context, resourceGroupName string, resourceName string, parameters armbotservice.Bot, options *armbotservice.BotsClientUpdateOptions) (resp azfake.Responder[armbotservice.BotsClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewBotsServerTransport creates a new instance of BotsServerTransport with the provided implementation. +// The returned BotsServerTransport instance is connected to an instance of armbotservice.BotsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewBotsServerTransport(srv *BotsServer) *BotsServerTransport { + return &BotsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armbotservice.BotsClientListResponse]](), + newListByResourceGroupPager: newTracker[azfake.PagerResponder[armbotservice.BotsClientListByResourceGroupResponse]](), + } +} + +// BotsServerTransport connects instances of armbotservice.BotsClient to instances of BotsServer. +// Don't use this type directly, use NewBotsServerTransport instead. +type BotsServerTransport struct { + srv *BotsServer + newListPager *tracker[azfake.PagerResponder[armbotservice.BotsClientListResponse]] + newListByResourceGroupPager *tracker[azfake.PagerResponder[armbotservice.BotsClientListByResourceGroupResponse]] +} + +// Do implements the policy.Transporter interface for BotsServerTransport. +func (b *BotsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "BotsClient.Create": + resp, err = b.dispatchCreate(req) + case "BotsClient.Delete": + resp, err = b.dispatchDelete(req) + case "BotsClient.Get": + resp, err = b.dispatchGet(req) + case "BotsClient.GetCheckNameAvailability": + resp, err = b.dispatchGetCheckNameAvailability(req) + case "BotsClient.NewListPager": + resp, err = b.dispatchNewListPager(req) + case "BotsClient.NewListByResourceGroupPager": + resp, err = b.dispatchNewListByResourceGroupPager(req) + case "BotsClient.Update": + resp, err = b.dispatchUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (b *BotsServerTransport) dispatchCreate(req *http.Request) (*http.Response, error) { + if b.srv.Create == nil { + return nil, &nonRetriableError{errors.New("fake for method Create not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbotservice.Bot](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + respr, errRespr := b.srv.Create(req.Context(), resourceGroupNameParam, resourceNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK, http.StatusCreated}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Bot, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (b *BotsServerTransport) dispatchDelete(req *http.Request) (*http.Response, error) { + if b.srv.Delete == nil { + return nil, &nonRetriableError{errors.New("fake for method Delete not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + respr, errRespr := b.srv.Delete(req.Context(), resourceGroupNameParam, resourceNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK, http.StatusNoContent}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusNoContent", respContent.HTTPStatus)} + } + resp, err := server.NewResponse(respContent, req, nil) + if err != nil { + return nil, err + } + return resp, nil +} + +func (b *BotsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if b.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + respr, errRespr := b.srv.Get(req.Context(), resourceGroupNameParam, resourceNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Bot, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (b *BotsServerTransport) dispatchGetCheckNameAvailability(req *http.Request) (*http.Response, error) { + if b.srv.GetCheckNameAvailability == nil { + return nil, &nonRetriableError{errors.New("fake for method GetCheckNameAvailability not implemented")} + } + body, err := server.UnmarshalRequestAsJSON[armbotservice.CheckNameAvailabilityRequestBody](req) + if err != nil { + return nil, err + } + respr, errRespr := b.srv.GetCheckNameAvailability(req.Context(), body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).CheckNameAvailabilityResponseBody, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (b *BotsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if b.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := b.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resp := b.srv.NewListPager(nil) + newListPager = &resp + b.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armbotservice.BotsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + b.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + b.newListPager.remove(req) + } + return resp, nil +} + +func (b *BotsServerTransport) dispatchNewListByResourceGroupPager(req *http.Request) (*http.Response, error) { + if b.srv.NewListByResourceGroupPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByResourceGroupPager not implemented")} + } + newListByResourceGroupPager := b.newListByResourceGroupPager.get(req) + if newListByResourceGroupPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resp := b.srv.NewListByResourceGroupPager(resourceGroupNameParam, nil) + newListByResourceGroupPager = &resp + b.newListByResourceGroupPager.add(req, newListByResourceGroupPager) + server.PagerResponderInjectNextLinks(newListByResourceGroupPager, req, func(page *armbotservice.BotsClientListByResourceGroupResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByResourceGroupPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + b.newListByResourceGroupPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByResourceGroupPager) { + b.newListByResourceGroupPager.remove(req) + } + return resp, nil +} + +func (b *BotsServerTransport) dispatchUpdate(req *http.Request) (*http.Response, error) { + if b.srv.Update == nil { + return nil, &nonRetriableError{errors.New("fake for method Update not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbotservice.Bot](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + respr, errRespr := b.srv.Update(req.Context(), resourceGroupNameParam, resourceNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK, http.StatusCreated}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Bot, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/botservice/armbotservice/fake/channels_server.go b/sdk/resourcemanager/botservice/armbotservice/fake/channels_server.go new file mode 100644 index 000000000000..dde4d08c2161 --- /dev/null +++ b/sdk/resourcemanager/botservice/armbotservice/fake/channels_server.go @@ -0,0 +1,354 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/botservice/armbotservice" + "net/http" + "net/url" + "regexp" +) + +// ChannelsServer is a fake server for instances of the armbotservice.ChannelsClient type. +type ChannelsServer struct { + // Create is the fake for method ChannelsClient.Create + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + Create func(ctx context.Context, resourceGroupName string, resourceName string, channelName armbotservice.ChannelName, parameters armbotservice.BotChannel, options *armbotservice.ChannelsClientCreateOptions) (resp azfake.Responder[armbotservice.ChannelsClientCreateResponse], errResp azfake.ErrorResponder) + + // Delete is the fake for method ChannelsClient.Delete + // HTTP status codes to indicate success: http.StatusOK, http.StatusNoContent + Delete func(ctx context.Context, resourceGroupName string, resourceName string, channelName string, options *armbotservice.ChannelsClientDeleteOptions) (resp azfake.Responder[armbotservice.ChannelsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method ChannelsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, resourceName string, channelName string, options *armbotservice.ChannelsClientGetOptions) (resp azfake.Responder[armbotservice.ChannelsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByResourceGroupPager is the fake for method ChannelsClient.NewListByResourceGroupPager + // HTTP status codes to indicate success: http.StatusOK + NewListByResourceGroupPager func(resourceGroupName string, resourceName string, options *armbotservice.ChannelsClientListByResourceGroupOptions) (resp azfake.PagerResponder[armbotservice.ChannelsClientListByResourceGroupResponse]) + + // ListWithKeys is the fake for method ChannelsClient.ListWithKeys + // HTTP status codes to indicate success: http.StatusOK + ListWithKeys func(ctx context.Context, resourceGroupName string, resourceName string, channelName armbotservice.ChannelName, options *armbotservice.ChannelsClientListWithKeysOptions) (resp azfake.Responder[armbotservice.ChannelsClientListWithKeysResponse], errResp azfake.ErrorResponder) + + // Update is the fake for method ChannelsClient.Update + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + Update func(ctx context.Context, resourceGroupName string, resourceName string, channelName armbotservice.ChannelName, parameters armbotservice.BotChannel, options *armbotservice.ChannelsClientUpdateOptions) (resp azfake.Responder[armbotservice.ChannelsClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewChannelsServerTransport creates a new instance of ChannelsServerTransport with the provided implementation. +// The returned ChannelsServerTransport instance is connected to an instance of armbotservice.ChannelsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewChannelsServerTransport(srv *ChannelsServer) *ChannelsServerTransport { + return &ChannelsServerTransport{ + srv: srv, + newListByResourceGroupPager: newTracker[azfake.PagerResponder[armbotservice.ChannelsClientListByResourceGroupResponse]](), + } +} + +// ChannelsServerTransport connects instances of armbotservice.ChannelsClient to instances of ChannelsServer. +// Don't use this type directly, use NewChannelsServerTransport instead. +type ChannelsServerTransport struct { + srv *ChannelsServer + newListByResourceGroupPager *tracker[azfake.PagerResponder[armbotservice.ChannelsClientListByResourceGroupResponse]] +} + +// Do implements the policy.Transporter interface for ChannelsServerTransport. +func (c *ChannelsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "ChannelsClient.Create": + resp, err = c.dispatchCreate(req) + case "ChannelsClient.Delete": + resp, err = c.dispatchDelete(req) + case "ChannelsClient.Get": + resp, err = c.dispatchGet(req) + case "ChannelsClient.NewListByResourceGroupPager": + resp, err = c.dispatchNewListByResourceGroupPager(req) + case "ChannelsClient.ListWithKeys": + resp, err = c.dispatchListWithKeys(req) + case "ChannelsClient.Update": + resp, err = c.dispatchUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (c *ChannelsServerTransport) dispatchCreate(req *http.Request) (*http.Response, error) { + if c.srv.Create == nil { + return nil, &nonRetriableError{errors.New("fake for method Create not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/channels/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbotservice.BotChannel](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + channelNameParam, err := parseWithCast(matches[regex.SubexpIndex("channelName")], func(v string) (armbotservice.ChannelName, error) { + p, unescapeErr := url.PathUnescape(v) + if unescapeErr != nil { + return "", unescapeErr + } + return armbotservice.ChannelName(p), nil + }) + if err != nil { + return nil, err + } + respr, errRespr := c.srv.Create(req.Context(), resourceGroupNameParam, resourceNameParam, channelNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK, http.StatusCreated}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).BotChannel, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *ChannelsServerTransport) dispatchDelete(req *http.Request) (*http.Response, error) { + if c.srv.Delete == nil { + return nil, &nonRetriableError{errors.New("fake for method Delete not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/channels/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + channelNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("channelName")]) + if err != nil { + return nil, err + } + respr, errRespr := c.srv.Delete(req.Context(), resourceGroupNameParam, resourceNameParam, channelNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK, http.StatusNoContent}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusNoContent", respContent.HTTPStatus)} + } + resp, err := server.NewResponse(respContent, req, nil) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *ChannelsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if c.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/channels/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + channelNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("channelName")]) + if err != nil { + return nil, err + } + respr, errRespr := c.srv.Get(req.Context(), resourceGroupNameParam, resourceNameParam, channelNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).BotChannel, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *ChannelsServerTransport) dispatchNewListByResourceGroupPager(req *http.Request) (*http.Response, error) { + if c.srv.NewListByResourceGroupPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByResourceGroupPager not implemented")} + } + newListByResourceGroupPager := c.newListByResourceGroupPager.get(req) + if newListByResourceGroupPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/channels` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + resp := c.srv.NewListByResourceGroupPager(resourceGroupNameParam, resourceNameParam, nil) + newListByResourceGroupPager = &resp + c.newListByResourceGroupPager.add(req, newListByResourceGroupPager) + server.PagerResponderInjectNextLinks(newListByResourceGroupPager, req, func(page *armbotservice.ChannelsClientListByResourceGroupResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByResourceGroupPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + c.newListByResourceGroupPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByResourceGroupPager) { + c.newListByResourceGroupPager.remove(req) + } + return resp, nil +} + +func (c *ChannelsServerTransport) dispatchListWithKeys(req *http.Request) (*http.Response, error) { + if c.srv.ListWithKeys == nil { + return nil, &nonRetriableError{errors.New("fake for method ListWithKeys not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/channels/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/listChannelWithKeys` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + channelNameParam, err := parseWithCast(matches[regex.SubexpIndex("channelName")], func(v string) (armbotservice.ChannelName, error) { + p, unescapeErr := url.PathUnescape(v) + if unescapeErr != nil { + return "", unescapeErr + } + return armbotservice.ChannelName(p), nil + }) + if err != nil { + return nil, err + } + respr, errRespr := c.srv.ListWithKeys(req.Context(), resourceGroupNameParam, resourceNameParam, channelNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ListChannelWithKeysResponse, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *ChannelsServerTransport) dispatchUpdate(req *http.Request) (*http.Response, error) { + if c.srv.Update == nil { + return nil, &nonRetriableError{errors.New("fake for method Update not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/channels/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbotservice.BotChannel](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + channelNameParam, err := parseWithCast(matches[regex.SubexpIndex("channelName")], func(v string) (armbotservice.ChannelName, error) { + p, unescapeErr := url.PathUnescape(v) + if unescapeErr != nil { + return "", unescapeErr + } + return armbotservice.ChannelName(p), nil + }) + if err != nil { + return nil, err + } + respr, errRespr := c.srv.Update(req.Context(), resourceGroupNameParam, resourceNameParam, channelNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK, http.StatusCreated}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).BotChannel, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/botservice/armbotservice/fake/directline_server.go b/sdk/resourcemanager/botservice/armbotservice/fake/directline_server.go new file mode 100644 index 000000000000..d3d8a0683ff5 --- /dev/null +++ b/sdk/resourcemanager/botservice/armbotservice/fake/directline_server.go @@ -0,0 +1,114 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/botservice/armbotservice" + "net/http" + "net/url" + "regexp" +) + +// DirectLineServer is a fake server for instances of the armbotservice.DirectLineClient type. +type DirectLineServer struct { + // RegenerateKeys is the fake for method DirectLineClient.RegenerateKeys + // HTTP status codes to indicate success: http.StatusOK + RegenerateKeys func(ctx context.Context, resourceGroupName string, resourceName string, channelName armbotservice.RegenerateKeysChannelName, parameters armbotservice.SiteInfo, options *armbotservice.DirectLineClientRegenerateKeysOptions) (resp azfake.Responder[armbotservice.DirectLineClientRegenerateKeysResponse], errResp azfake.ErrorResponder) +} + +// NewDirectLineServerTransport creates a new instance of DirectLineServerTransport with the provided implementation. +// The returned DirectLineServerTransport instance is connected to an instance of armbotservice.DirectLineClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewDirectLineServerTransport(srv *DirectLineServer) *DirectLineServerTransport { + return &DirectLineServerTransport{srv: srv} +} + +// DirectLineServerTransport connects instances of armbotservice.DirectLineClient to instances of DirectLineServer. +// Don't use this type directly, use NewDirectLineServerTransport instead. +type DirectLineServerTransport struct { + srv *DirectLineServer +} + +// Do implements the policy.Transporter interface for DirectLineServerTransport. +func (d *DirectLineServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "DirectLineClient.RegenerateKeys": + resp, err = d.dispatchRegenerateKeys(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (d *DirectLineServerTransport) dispatchRegenerateKeys(req *http.Request) (*http.Response, error) { + if d.srv.RegenerateKeys == nil { + return nil, &nonRetriableError{errors.New("fake for method RegenerateKeys not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/channels/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/regeneratekeys` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbotservice.SiteInfo](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + channelNameParam, err := parseWithCast(matches[regex.SubexpIndex("channelName")], func(v string) (armbotservice.RegenerateKeysChannelName, error) { + p, unescapeErr := url.PathUnescape(v) + if unescapeErr != nil { + return "", unescapeErr + } + return armbotservice.RegenerateKeysChannelName(p), nil + }) + if err != nil { + return nil, err + } + respr, errRespr := d.srv.RegenerateKeys(req.Context(), resourceGroupNameParam, resourceNameParam, channelNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).BotChannel, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/botservice/armbotservice/fake/email_server.go b/sdk/resourcemanager/botservice/armbotservice/fake/email_server.go new file mode 100644 index 000000000000..3557d7c80a7f --- /dev/null +++ b/sdk/resourcemanager/botservice/armbotservice/fake/email_server.go @@ -0,0 +1,100 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/botservice/armbotservice" + "net/http" + "net/url" + "regexp" +) + +// EmailServer is a fake server for instances of the armbotservice.EmailClient type. +type EmailServer struct { + // CreateSignInURL is the fake for method EmailClient.CreateSignInURL + // HTTP status codes to indicate success: http.StatusOK + CreateSignInURL func(ctx context.Context, resourceGroupName string, resourceName string, options *armbotservice.EmailClientCreateSignInURLOptions) (resp azfake.Responder[armbotservice.EmailClientCreateSignInURLResponse], errResp azfake.ErrorResponder) +} + +// NewEmailServerTransport creates a new instance of EmailServerTransport with the provided implementation. +// The returned EmailServerTransport instance is connected to an instance of armbotservice.EmailClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewEmailServerTransport(srv *EmailServer) *EmailServerTransport { + return &EmailServerTransport{srv: srv} +} + +// EmailServerTransport connects instances of armbotservice.EmailClient to instances of EmailServer. +// Don't use this type directly, use NewEmailServerTransport instead. +type EmailServerTransport struct { + srv *EmailServer +} + +// Do implements the policy.Transporter interface for EmailServerTransport. +func (e *EmailServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "EmailClient.CreateSignInURL": + resp, err = e.dispatchCreateSignInURL(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (e *EmailServerTransport) dispatchCreateSignInURL(req *http.Request) (*http.Response, error) { + if e.srv.CreateSignInURL == nil { + return nil, &nonRetriableError{errors.New("fake for method CreateSignInURL not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/createEmailSignInUrl` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + respr, errRespr := e.srv.CreateSignInURL(req.Context(), resourceGroupNameParam, resourceNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).CreateEmailSignInURLResponse, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/botservice/armbotservice/fake/hostsettings_server.go b/sdk/resourcemanager/botservice/armbotservice/fake/hostsettings_server.go new file mode 100644 index 000000000000..4364c6b06d18 --- /dev/null +++ b/sdk/resourcemanager/botservice/armbotservice/fake/hostsettings_server.go @@ -0,0 +1,91 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/botservice/armbotservice" + "net/http" + "regexp" +) + +// HostSettingsServer is a fake server for instances of the armbotservice.HostSettingsClient type. +type HostSettingsServer struct { + // Get is the fake for method HostSettingsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, options *armbotservice.HostSettingsClientGetOptions) (resp azfake.Responder[armbotservice.HostSettingsClientGetResponse], errResp azfake.ErrorResponder) +} + +// NewHostSettingsServerTransport creates a new instance of HostSettingsServerTransport with the provided implementation. +// The returned HostSettingsServerTransport instance is connected to an instance of armbotservice.HostSettingsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewHostSettingsServerTransport(srv *HostSettingsServer) *HostSettingsServerTransport { + return &HostSettingsServerTransport{srv: srv} +} + +// HostSettingsServerTransport connects instances of armbotservice.HostSettingsClient to instances of HostSettingsServer. +// Don't use this type directly, use NewHostSettingsServerTransport instead. +type HostSettingsServerTransport struct { + srv *HostSettingsServer +} + +// Do implements the policy.Transporter interface for HostSettingsServerTransport. +func (h *HostSettingsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "HostSettingsClient.Get": + resp, err = h.dispatchGet(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (h *HostSettingsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if h.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/hostSettings` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + respr, errRespr := h.srv.Get(req.Context(), nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).HostSettingsResponse, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/botservice/armbotservice/fake/internal.go b/sdk/resourcemanager/botservice/armbotservice/fake/internal.go new file mode 100644 index 000000000000..be04ff43d678 --- /dev/null +++ b/sdk/resourcemanager/botservice/armbotservice/fake/internal.go @@ -0,0 +1,72 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "net/http" + "sync" +) + +type nonRetriableError struct { + error +} + +func (nonRetriableError) NonRetriable() { + // marker method +} + +func contains[T comparable](s []T, v T) bool { + for _, vv := range s { + if vv == v { + return true + } + } + return false +} + +func parseWithCast[T any](v string, parse func(v string) (T, error)) (T, error) { + t, err := parse(v) + if err != nil { + return *new(T), err + } + return t, err +} + +func newTracker[T any]() *tracker[T] { + return &tracker[T]{ + items: map[string]*T{}, + } +} + +type tracker[T any] struct { + items map[string]*T + mu sync.Mutex +} + +func (p *tracker[T]) get(req *http.Request) *T { + p.mu.Lock() + defer p.mu.Unlock() + if item, ok := p.items[server.SanitizePagerPollerPath(req.URL.Path)]; ok { + return item + } + return nil +} + +func (p *tracker[T]) add(req *http.Request, item *T) { + p.mu.Lock() + defer p.mu.Unlock() + p.items[server.SanitizePagerPollerPath(req.URL.Path)] = item +} + +func (p *tracker[T]) remove(req *http.Request) { + p.mu.Lock() + defer p.mu.Unlock() + delete(p.items, server.SanitizePagerPollerPath(req.URL.Path)) +} diff --git a/sdk/resourcemanager/botservice/armbotservice/fake/operationresults_server.go b/sdk/resourcemanager/botservice/armbotservice/fake/operationresults_server.go new file mode 100644 index 000000000000..06dd5c325606 --- /dev/null +++ b/sdk/resourcemanager/botservice/armbotservice/fake/operationresults_server.go @@ -0,0 +1,111 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/botservice/armbotservice" + "net/http" + "net/url" + "regexp" +) + +// OperationResultsServer is a fake server for instances of the armbotservice.OperationResultsClient type. +type OperationResultsServer struct { + // BeginGet is the fake for method OperationResultsClient.BeginGet + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginGet func(ctx context.Context, operationResultID string, options *armbotservice.OperationResultsClientBeginGetOptions) (resp azfake.PollerResponder[armbotservice.OperationResultsClientGetResponse], errResp azfake.ErrorResponder) +} + +// NewOperationResultsServerTransport creates a new instance of OperationResultsServerTransport with the provided implementation. +// The returned OperationResultsServerTransport instance is connected to an instance of armbotservice.OperationResultsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewOperationResultsServerTransport(srv *OperationResultsServer) *OperationResultsServerTransport { + return &OperationResultsServerTransport{ + srv: srv, + beginGet: newTracker[azfake.PollerResponder[armbotservice.OperationResultsClientGetResponse]](), + } +} + +// OperationResultsServerTransport connects instances of armbotservice.OperationResultsClient to instances of OperationResultsServer. +// Don't use this type directly, use NewOperationResultsServerTransport instead. +type OperationResultsServerTransport struct { + srv *OperationResultsServer + beginGet *tracker[azfake.PollerResponder[armbotservice.OperationResultsClientGetResponse]] +} + +// Do implements the policy.Transporter interface for OperationResultsServerTransport. +func (o *OperationResultsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "OperationResultsClient.BeginGet": + resp, err = o.dispatchBeginGet(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (o *OperationResultsServerTransport) dispatchBeginGet(req *http.Request) (*http.Response, error) { + if o.srv.BeginGet == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginGet not implemented")} + } + beginGet := o.beginGet.get(req) + if beginGet == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/operationresults/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + operationResultIDParam, err := url.PathUnescape(matches[regex.SubexpIndex("operationResultId")]) + if err != nil { + return nil, err + } + respr, errRespr := o.srv.BeginGet(req.Context(), operationResultIDParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginGet = &respr + o.beginGet.add(req, beginGet) + } + + resp, err := server.PollerResponderNext(beginGet, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + o.beginGet.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginGet) { + o.beginGet.remove(req) + } + + return resp, nil +} diff --git a/sdk/resourcemanager/botservice/armbotservice/fake/operations_server.go b/sdk/resourcemanager/botservice/armbotservice/fake/operations_server.go new file mode 100644 index 000000000000..a467dd6e6eab --- /dev/null +++ b/sdk/resourcemanager/botservice/armbotservice/fake/operations_server.go @@ -0,0 +1,96 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/botservice/armbotservice" + "net/http" +) + +// OperationsServer is a fake server for instances of the armbotservice.OperationsClient type. +type OperationsServer struct { + // NewListPager is the fake for method OperationsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armbotservice.OperationsClientListOptions) (resp azfake.PagerResponder[armbotservice.OperationsClientListResponse]) +} + +// NewOperationsServerTransport creates a new instance of OperationsServerTransport with the provided implementation. +// The returned OperationsServerTransport instance is connected to an instance of armbotservice.OperationsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewOperationsServerTransport(srv *OperationsServer) *OperationsServerTransport { + return &OperationsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armbotservice.OperationsClientListResponse]](), + } +} + +// OperationsServerTransport connects instances of armbotservice.OperationsClient to instances of OperationsServer. +// Don't use this type directly, use NewOperationsServerTransport instead. +type OperationsServerTransport struct { + srv *OperationsServer + newListPager *tracker[azfake.PagerResponder[armbotservice.OperationsClientListResponse]] +} + +// Do implements the policy.Transporter interface for OperationsServerTransport. +func (o *OperationsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "OperationsClient.NewListPager": + resp, err = o.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (o *OperationsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if o.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := o.newListPager.get(req) + if newListPager == nil { + resp := o.srv.NewListPager(nil) + newListPager = &resp + o.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armbotservice.OperationsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + o.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + o.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/botservice/armbotservice/fake/privateendpointconnections_server.go b/sdk/resourcemanager/botservice/armbotservice/fake/privateendpointconnections_server.go new file mode 100644 index 000000000000..17115bf5a29c --- /dev/null +++ b/sdk/resourcemanager/botservice/armbotservice/fake/privateendpointconnections_server.go @@ -0,0 +1,242 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/botservice/armbotservice" + "net/http" + "net/url" + "regexp" +) + +// PrivateEndpointConnectionsServer is a fake server for instances of the armbotservice.PrivateEndpointConnectionsClient type. +type PrivateEndpointConnectionsServer struct { + // Create is the fake for method PrivateEndpointConnectionsClient.Create + // HTTP status codes to indicate success: http.StatusOK + Create func(ctx context.Context, resourceGroupName string, resourceName string, privateEndpointConnectionName string, properties armbotservice.PrivateEndpointConnection, options *armbotservice.PrivateEndpointConnectionsClientCreateOptions) (resp azfake.Responder[armbotservice.PrivateEndpointConnectionsClientCreateResponse], errResp azfake.ErrorResponder) + + // Delete is the fake for method PrivateEndpointConnectionsClient.Delete + // HTTP status codes to indicate success: http.StatusOK, http.StatusNoContent + Delete func(ctx context.Context, resourceGroupName string, resourceName string, privateEndpointConnectionName string, options *armbotservice.PrivateEndpointConnectionsClientDeleteOptions) (resp azfake.Responder[armbotservice.PrivateEndpointConnectionsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method PrivateEndpointConnectionsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, resourceName string, privateEndpointConnectionName string, options *armbotservice.PrivateEndpointConnectionsClientGetOptions) (resp azfake.Responder[armbotservice.PrivateEndpointConnectionsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method PrivateEndpointConnectionsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(resourceGroupName string, resourceName string, options *armbotservice.PrivateEndpointConnectionsClientListOptions) (resp azfake.PagerResponder[armbotservice.PrivateEndpointConnectionsClientListResponse]) +} + +// NewPrivateEndpointConnectionsServerTransport creates a new instance of PrivateEndpointConnectionsServerTransport with the provided implementation. +// The returned PrivateEndpointConnectionsServerTransport instance is connected to an instance of armbotservice.PrivateEndpointConnectionsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewPrivateEndpointConnectionsServerTransport(srv *PrivateEndpointConnectionsServer) *PrivateEndpointConnectionsServerTransport { + return &PrivateEndpointConnectionsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armbotservice.PrivateEndpointConnectionsClientListResponse]](), + } +} + +// PrivateEndpointConnectionsServerTransport connects instances of armbotservice.PrivateEndpointConnectionsClient to instances of PrivateEndpointConnectionsServer. +// Don't use this type directly, use NewPrivateEndpointConnectionsServerTransport instead. +type PrivateEndpointConnectionsServerTransport struct { + srv *PrivateEndpointConnectionsServer + newListPager *tracker[azfake.PagerResponder[armbotservice.PrivateEndpointConnectionsClientListResponse]] +} + +// Do implements the policy.Transporter interface for PrivateEndpointConnectionsServerTransport. +func (p *PrivateEndpointConnectionsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "PrivateEndpointConnectionsClient.Create": + resp, err = p.dispatchCreate(req) + case "PrivateEndpointConnectionsClient.Delete": + resp, err = p.dispatchDelete(req) + case "PrivateEndpointConnectionsClient.Get": + resp, err = p.dispatchGet(req) + case "PrivateEndpointConnectionsClient.NewListPager": + resp, err = p.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (p *PrivateEndpointConnectionsServerTransport) dispatchCreate(req *http.Request) (*http.Response, error) { + if p.srv.Create == nil { + return nil, &nonRetriableError{errors.New("fake for method Create not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/privateEndpointConnections/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbotservice.PrivateEndpointConnection](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + privateEndpointConnectionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("privateEndpointConnectionName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.Create(req.Context(), resourceGroupNameParam, resourceNameParam, privateEndpointConnectionNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).PrivateEndpointConnection, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (p *PrivateEndpointConnectionsServerTransport) dispatchDelete(req *http.Request) (*http.Response, error) { + if p.srv.Delete == nil { + return nil, &nonRetriableError{errors.New("fake for method Delete not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/privateEndpointConnections/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + privateEndpointConnectionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("privateEndpointConnectionName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.Delete(req.Context(), resourceGroupNameParam, resourceNameParam, privateEndpointConnectionNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK, http.StatusNoContent}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusNoContent", respContent.HTTPStatus)} + } + resp, err := server.NewResponse(respContent, req, nil) + if err != nil { + return nil, err + } + return resp, nil +} + +func (p *PrivateEndpointConnectionsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if p.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/privateEndpointConnections/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + privateEndpointConnectionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("privateEndpointConnectionName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.Get(req.Context(), resourceGroupNameParam, resourceNameParam, privateEndpointConnectionNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).PrivateEndpointConnection, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (p *PrivateEndpointConnectionsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if p.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := p.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/privateEndpointConnections` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + resp := p.srv.NewListPager(resourceGroupNameParam, resourceNameParam, nil) + newListPager = &resp + p.newListPager.add(req, newListPager) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + p.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + p.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/botservice/armbotservice/fake/privatelinkresources_server.go b/sdk/resourcemanager/botservice/armbotservice/fake/privatelinkresources_server.go new file mode 100644 index 000000000000..c34ec64a9952 --- /dev/null +++ b/sdk/resourcemanager/botservice/armbotservice/fake/privatelinkresources_server.go @@ -0,0 +1,100 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/botservice/armbotservice" + "net/http" + "net/url" + "regexp" +) + +// PrivateLinkResourcesServer is a fake server for instances of the armbotservice.PrivateLinkResourcesClient type. +type PrivateLinkResourcesServer struct { + // ListByBotResource is the fake for method PrivateLinkResourcesClient.ListByBotResource + // HTTP status codes to indicate success: http.StatusOK + ListByBotResource func(ctx context.Context, resourceGroupName string, resourceName string, options *armbotservice.PrivateLinkResourcesClientListByBotResourceOptions) (resp azfake.Responder[armbotservice.PrivateLinkResourcesClientListByBotResourceResponse], errResp azfake.ErrorResponder) +} + +// NewPrivateLinkResourcesServerTransport creates a new instance of PrivateLinkResourcesServerTransport with the provided implementation. +// The returned PrivateLinkResourcesServerTransport instance is connected to an instance of armbotservice.PrivateLinkResourcesClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewPrivateLinkResourcesServerTransport(srv *PrivateLinkResourcesServer) *PrivateLinkResourcesServerTransport { + return &PrivateLinkResourcesServerTransport{srv: srv} +} + +// PrivateLinkResourcesServerTransport connects instances of armbotservice.PrivateLinkResourcesClient to instances of PrivateLinkResourcesServer. +// Don't use this type directly, use NewPrivateLinkResourcesServerTransport instead. +type PrivateLinkResourcesServerTransport struct { + srv *PrivateLinkResourcesServer +} + +// Do implements the policy.Transporter interface for PrivateLinkResourcesServerTransport. +func (p *PrivateLinkResourcesServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "PrivateLinkResourcesClient.ListByBotResource": + resp, err = p.dispatchListByBotResource(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (p *PrivateLinkResourcesServerTransport) dispatchListByBotResource(req *http.Request) (*http.Response, error) { + if p.srv.ListByBotResource == nil { + return nil, &nonRetriableError{errors.New("fake for method ListByBotResource not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/botServices/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/privateLinkResources` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourceNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.ListByBotResource(req.Context(), resourceGroupNameParam, resourceNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).PrivateLinkResourceListResult, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/botservice/armbotservice/fake/qnamakerendpointkeys_server.go b/sdk/resourcemanager/botservice/armbotservice/fake/qnamakerendpointkeys_server.go new file mode 100644 index 000000000000..b38f932fcb7b --- /dev/null +++ b/sdk/resourcemanager/botservice/armbotservice/fake/qnamakerendpointkeys_server.go @@ -0,0 +1,95 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/botservice/armbotservice" + "net/http" + "regexp" +) + +// QnAMakerEndpointKeysServer is a fake server for instances of the armbotservice.QnAMakerEndpointKeysClient type. +type QnAMakerEndpointKeysServer struct { + // Get is the fake for method QnAMakerEndpointKeysClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, parameters armbotservice.QnAMakerEndpointKeysRequestBody, options *armbotservice.QnAMakerEndpointKeysClientGetOptions) (resp azfake.Responder[armbotservice.QnAMakerEndpointKeysClientGetResponse], errResp azfake.ErrorResponder) +} + +// NewQnAMakerEndpointKeysServerTransport creates a new instance of QnAMakerEndpointKeysServerTransport with the provided implementation. +// The returned QnAMakerEndpointKeysServerTransport instance is connected to an instance of armbotservice.QnAMakerEndpointKeysClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewQnAMakerEndpointKeysServerTransport(srv *QnAMakerEndpointKeysServer) *QnAMakerEndpointKeysServerTransport { + return &QnAMakerEndpointKeysServerTransport{srv: srv} +} + +// QnAMakerEndpointKeysServerTransport connects instances of armbotservice.QnAMakerEndpointKeysClient to instances of QnAMakerEndpointKeysServer. +// Don't use this type directly, use NewQnAMakerEndpointKeysServerTransport instead. +type QnAMakerEndpointKeysServerTransport struct { + srv *QnAMakerEndpointKeysServer +} + +// Do implements the policy.Transporter interface for QnAMakerEndpointKeysServerTransport. +func (q *QnAMakerEndpointKeysServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "QnAMakerEndpointKeysClient.Get": + resp, err = q.dispatchGet(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (q *QnAMakerEndpointKeysServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if q.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.BotService/listQnAMakerEndpointKeys` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armbotservice.QnAMakerEndpointKeysRequestBody](req) + if err != nil { + return nil, err + } + respr, errRespr := q.srv.Get(req.Context(), body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).QnAMakerEndpointKeysResponse, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/botservice/armbotservice/fake/server_factory.go b/sdk/resourcemanager/botservice/armbotservice/fake/server_factory.go new file mode 100644 index 000000000000..c98ddb569262 --- /dev/null +++ b/sdk/resourcemanager/botservice/armbotservice/fake/server_factory.go @@ -0,0 +1,135 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "net/http" + "strings" + "sync" +) + +// ServerFactory is a fake server for instances of the armbotservice.ClientFactory type. +type ServerFactory struct { + BotConnectionServer BotConnectionServer + BotsServer BotsServer + ChannelsServer ChannelsServer + DirectLineServer DirectLineServer + EmailServer EmailServer + HostSettingsServer HostSettingsServer + OperationResultsServer OperationResultsServer + OperationsServer OperationsServer + PrivateEndpointConnectionsServer PrivateEndpointConnectionsServer + PrivateLinkResourcesServer PrivateLinkResourcesServer + QnAMakerEndpointKeysServer QnAMakerEndpointKeysServer +} + +// NewServerFactoryTransport creates a new instance of ServerFactoryTransport with the provided implementation. +// The returned ServerFactoryTransport instance is connected to an instance of armbotservice.ClientFactory via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewServerFactoryTransport(srv *ServerFactory) *ServerFactoryTransport { + return &ServerFactoryTransport{ + srv: srv, + } +} + +// ServerFactoryTransport connects instances of armbotservice.ClientFactory to instances of ServerFactory. +// Don't use this type directly, use NewServerFactoryTransport instead. +type ServerFactoryTransport struct { + srv *ServerFactory + trMu sync.Mutex + trBotConnectionServer *BotConnectionServerTransport + trBotsServer *BotsServerTransport + trChannelsServer *ChannelsServerTransport + trDirectLineServer *DirectLineServerTransport + trEmailServer *EmailServerTransport + trHostSettingsServer *HostSettingsServerTransport + trOperationResultsServer *OperationResultsServerTransport + trOperationsServer *OperationsServerTransport + trPrivateEndpointConnectionsServer *PrivateEndpointConnectionsServerTransport + trPrivateLinkResourcesServer *PrivateLinkResourcesServerTransport + trQnAMakerEndpointKeysServer *QnAMakerEndpointKeysServerTransport +} + +// Do implements the policy.Transporter interface for ServerFactoryTransport. +func (s *ServerFactoryTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + client := method[:strings.Index(method, ".")] + var resp *http.Response + var err error + + switch client { + case "BotConnectionClient": + initServer(s, &s.trBotConnectionServer, func() *BotConnectionServerTransport { + return NewBotConnectionServerTransport(&s.srv.BotConnectionServer) + }) + resp, err = s.trBotConnectionServer.Do(req) + case "BotsClient": + initServer(s, &s.trBotsServer, func() *BotsServerTransport { return NewBotsServerTransport(&s.srv.BotsServer) }) + resp, err = s.trBotsServer.Do(req) + case "ChannelsClient": + initServer(s, &s.trChannelsServer, func() *ChannelsServerTransport { return NewChannelsServerTransport(&s.srv.ChannelsServer) }) + resp, err = s.trChannelsServer.Do(req) + case "DirectLineClient": + initServer(s, &s.trDirectLineServer, func() *DirectLineServerTransport { return NewDirectLineServerTransport(&s.srv.DirectLineServer) }) + resp, err = s.trDirectLineServer.Do(req) + case "EmailClient": + initServer(s, &s.trEmailServer, func() *EmailServerTransport { return NewEmailServerTransport(&s.srv.EmailServer) }) + resp, err = s.trEmailServer.Do(req) + case "HostSettingsClient": + initServer(s, &s.trHostSettingsServer, func() *HostSettingsServerTransport { return NewHostSettingsServerTransport(&s.srv.HostSettingsServer) }) + resp, err = s.trHostSettingsServer.Do(req) + case "OperationResultsClient": + initServer(s, &s.trOperationResultsServer, func() *OperationResultsServerTransport { + return NewOperationResultsServerTransport(&s.srv.OperationResultsServer) + }) + resp, err = s.trOperationResultsServer.Do(req) + case "OperationsClient": + initServer(s, &s.trOperationsServer, func() *OperationsServerTransport { return NewOperationsServerTransport(&s.srv.OperationsServer) }) + resp, err = s.trOperationsServer.Do(req) + case "PrivateEndpointConnectionsClient": + initServer(s, &s.trPrivateEndpointConnectionsServer, func() *PrivateEndpointConnectionsServerTransport { + return NewPrivateEndpointConnectionsServerTransport(&s.srv.PrivateEndpointConnectionsServer) + }) + resp, err = s.trPrivateEndpointConnectionsServer.Do(req) + case "PrivateLinkResourcesClient": + initServer(s, &s.trPrivateLinkResourcesServer, func() *PrivateLinkResourcesServerTransport { + return NewPrivateLinkResourcesServerTransport(&s.srv.PrivateLinkResourcesServer) + }) + resp, err = s.trPrivateLinkResourcesServer.Do(req) + case "QnAMakerEndpointKeysClient": + initServer(s, &s.trQnAMakerEndpointKeysServer, func() *QnAMakerEndpointKeysServerTransport { + return NewQnAMakerEndpointKeysServerTransport(&s.srv.QnAMakerEndpointKeysServer) + }) + resp, err = s.trQnAMakerEndpointKeysServer.Do(req) + default: + err = fmt.Errorf("unhandled client %s", client) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func initServer[T any](s *ServerFactoryTransport, dst **T, src func() *T) { + s.trMu.Lock() + if *dst == nil { + *dst = src() + } + s.trMu.Unlock() +} diff --git a/sdk/resourcemanager/botservice/armbotservice/fake/time_rfc3339.go b/sdk/resourcemanager/botservice/armbotservice/fake/time_rfc3339.go new file mode 100644 index 000000000000..b0535a7b63e6 --- /dev/null +++ b/sdk/resourcemanager/botservice/armbotservice/fake/time_rfc3339.go @@ -0,0 +1,86 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "encoding/json" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "reflect" + "regexp" + "strings" + "time" +) + +// Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases. +var tzOffsetRegex = regexp.MustCompile(`(Z|z|\+|-)(\d+:\d+)*"*$`) + +const ( + utcDateTimeJSON = `"2006-01-02T15:04:05.999999999"` + utcDateTime = "2006-01-02T15:04:05.999999999" + dateTimeJSON = `"` + time.RFC3339Nano + `"` +) + +type dateTimeRFC3339 time.Time + +func (t dateTimeRFC3339) MarshalJSON() ([]byte, error) { + tt := time.Time(t) + return tt.MarshalJSON() +} + +func (t dateTimeRFC3339) MarshalText() ([]byte, error) { + tt := time.Time(t) + return tt.MarshalText() +} + +func (t *dateTimeRFC3339) UnmarshalJSON(data []byte) error { + layout := utcDateTimeJSON + if tzOffsetRegex.Match(data) { + layout = dateTimeJSON + } + return t.Parse(layout, string(data)) +} + +func (t *dateTimeRFC3339) UnmarshalText(data []byte) error { + layout := utcDateTime + if tzOffsetRegex.Match(data) { + layout = time.RFC3339Nano + } + return t.Parse(layout, string(data)) +} + +func (t *dateTimeRFC3339) Parse(layout, value string) error { + p, err := time.Parse(layout, strings.ToUpper(value)) + *t = dateTimeRFC3339(p) + return err +} + +func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) { + if t == nil { + return + } else if azcore.IsNullValue(t) { + m[k] = nil + return + } else if reflect.ValueOf(t).IsNil() { + return + } + m[k] = (*dateTimeRFC3339)(t) +} + +func unpopulateDateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { + if data == nil || strings.EqualFold(string(data), "null") { + return nil + } + var aux dateTimeRFC3339 + if err := json.Unmarshal(data, &aux); err != nil { + return fmt.Errorf("struct field %s: %v", fn, err) + } + *t = (*time.Time)(&aux) + return nil +} diff --git a/sdk/resourcemanager/botservice/armbotservice/go.mod b/sdk/resourcemanager/botservice/armbotservice/go.mod index 87ca2427d407..434f692a7c98 100644 --- a/sdk/resourcemanager/botservice/armbotservice/go.mod +++ b/sdk/resourcemanager/botservice/armbotservice/go.mod @@ -3,27 +3,27 @@ module github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/botservice/armbotse go 1.18 require ( - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0 - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2 - github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0 - github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal v1.1.2 + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 + github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1 - github.com/stretchr/testify v1.7.0 + github.com/stretchr/testify v1.8.4 ) require ( - github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/dnaeon/go-vcr v1.1.0 // indirect - github.com/golang-jwt/jwt/v4 v4.5.0 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/dnaeon/go-vcr v1.2.0 // indirect + github.com/golang-jwt/jwt/v5 v5.0.0 // indirect + github.com/google/uuid v1.3.1 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - golang.org/x/crypto v0.6.0 // indirect - golang.org/x/net v0.7.0 // indirect - golang.org/x/sys v0.5.0 // indirect - golang.org/x/text v0.7.0 // indirect + golang.org/x/crypto v0.14.0 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/sdk/resourcemanager/botservice/armbotservice/go.sum b/sdk/resourcemanager/botservice/armbotservice/go.sum index 9e67f59f4a17..88bb72abf2ba 100644 --- a/sdk/resourcemanager/botservice/armbotservice/go.sum +++ b/sdk/resourcemanager/botservice/armbotservice/go.sum @@ -1,25 +1,25 @@ -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0 h1:rTnT/Jrcm+figWlYz4Ixzt0SJVR2cMC8lvZcimipiEY= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0/go.mod h1:ON4tFdPTwRcgWEaVDrN3584Ef+b7GgSJaXxe5fW9t4M= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2 h1:uqM+VoHjVH6zdlkLF2b6O0ZANcHoj3rO0PoQ3jglUJA= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2/go.mod h1:twTKAa1E6hLmSDjLhaCkbTMQKc7p/rNLU40rLxGEOCI= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0 h1:leh5DwKv6Ihwi+h60uHtn6UWAxBbZ0q8DwQVMzf61zw= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 h1:fb8kj/Dh4CSwgsOzHeZY4Xh68cFVbzXx+ONXGMY//4w= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0/go.mod h1:uReU2sSxZExRPBAg3qKzmAucSi51+SP1OhohieR821Q= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 h1:BMAjVKJM0U/CYF27gA0ZMmXGkOcvfFtD0oHVZ1TIPRI= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0/go.mod h1:1fXstnBMas5kzG+S3q8UoJcmyU6nUeunJcMDHcRYHhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 h1:d81/ng9rET2YqdVkVwkb6EXeRrLJIwyGnJcAlAWKwhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0/go.mod h1:s4kgfzA0covAXNicZHDMN58jExvcng2mC/DepXiF1EI= 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/internal v1.1.2/go.mod h1:FbdwsQ2EzwvXxOPcMFYO8ogEc9uMMIj3YkmCdXdAFmk= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0 h1:PTFGRSlMKCQelWwxUyYVEUqseBJVemLyqWJjvMyt0do= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0/go.mod h1:LRr2FzBTQlONPPa5HREE5+RjSCTXl7BwOvYOaWTqCaI= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/managementgroups/armmanagementgroups v1.0.0 h1:pPvTJ1dY0sA35JOeFq6TsY2xj6Z85Yo23Pj4wCCvu4o= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1 h1:7CBQ+Ei8SP2c6ydQTGCCrS35bDxgTMfoP2miAwK++OU= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1/go.mod h1:c/wcGeGx5FUPbM/JltUYHZcKmigwyVLJlDq+4HdtXaw= -github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0 h1:UE9n9rkJF62ArLb1F3DEjRt8O3jLwMWdSoypKV4f3MU= -github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 h1:WpB/QDNLpMw72xHJc34BNNykqSOeEJDAWkhf0u12/Jk= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dnaeon/go-vcr v1.1.0 h1:ReYa/UBrRyQdant9B4fNHGoCNKw6qh6P0fsdGmZpR7c= -github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= -github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= -github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= +github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= +github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= @@ -27,23 +27,21 @@ github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9 github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= -golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/sdk/resourcemanager/botservice/armbotservice/hostsettings_client.go b/sdk/resourcemanager/botservice/armbotservice/hostsettings_client.go index 83c06d11b752..6252608282e2 100644 --- a/sdk/resourcemanager/botservice/armbotservice/hostsettings_client.go +++ b/sdk/resourcemanager/botservice/armbotservice/hostsettings_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbotservice @@ -33,7 +32,7 @@ type HostSettingsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewHostSettingsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*HostSettingsClient, error) { - cl, err := arm.NewClient(moduleName+".HostSettingsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -50,18 +49,25 @@ func NewHostSettingsClient(subscriptionID string, credential azcore.TokenCredent // Generated from API version 2022-09-15 // - options - HostSettingsClientGetOptions contains the optional parameters for the HostSettingsClient.Get method. func (client *HostSettingsClient) Get(ctx context.Context, options *HostSettingsClientGetOptions) (HostSettingsClientGetResponse, error) { + var err error + const operationName = "HostSettingsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, options) if err != nil { return HostSettingsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return HostSettingsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return HostSettingsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return HostSettingsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. diff --git a/sdk/resourcemanager/botservice/armbotservice/interfaces.go b/sdk/resourcemanager/botservice/armbotservice/interfaces.go new file mode 100644 index 000000000000..42a17dcbe22f --- /dev/null +++ b/sdk/resourcemanager/botservice/armbotservice/interfaces.go @@ -0,0 +1,20 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package armbotservice + +// ChannelClassification provides polymorphic access to related types. +// Call the interface's GetChannel() method to access the common type. +// Use a type switch to determine the concrete type. The possible types are: +// - *AcsChatChannel, *AlexaChannel, *Channel, *DirectLineChannel, *DirectLineSpeechChannel, *EmailChannel, *FacebookChannel, +// - *KikChannel, *LineChannel, *M365Extensions, *MsTeamsChannel, *Omnichannel, *OutlookChannel, *SearchAssistant, *SkypeChannel, +// - *SlackChannel, *SmsChannel, *TelegramChannel, *TelephonyChannel, *WebChatChannel +type ChannelClassification interface { + // GetChannel returns the Channel content of the underlying type. + GetChannel() *Channel +} diff --git a/sdk/resourcemanager/botservice/armbotservice/models.go b/sdk/resourcemanager/botservice/armbotservice/models.go index a73b60f4cce6..4d85c45a3d8f 100644 --- a/sdk/resourcemanager/botservice/armbotservice/models.go +++ b/sdk/resourcemanager/botservice/armbotservice/models.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbotservice @@ -31,8 +30,8 @@ func (a *AcsChatChannel) GetChannel() *Channel { return &Channel{ ChannelName: a.ChannelName, Etag: a.Etag, - ProvisioningState: a.ProvisioningState, Location: a.Location, + ProvisioningState: a.ProvisioningState, } } @@ -59,8 +58,8 @@ func (a *AlexaChannel) GetChannel() *Channel { return &Channel{ ChannelName: a.ChannelName, Etag: a.Etag, - ProvisioningState: a.ProvisioningState, Location: a.Location, + ProvisioningState: a.ProvisioningState, } } @@ -145,44 +144,6 @@ type BotChannel struct { Zones []*string } -// BotConnectionClientCreateOptions contains the optional parameters for the BotConnectionClient.Create method. -type BotConnectionClientCreateOptions struct { - // placeholder for future optional parameters -} - -// BotConnectionClientDeleteOptions contains the optional parameters for the BotConnectionClient.Delete method. -type BotConnectionClientDeleteOptions struct { - // placeholder for future optional parameters -} - -// BotConnectionClientGetOptions contains the optional parameters for the BotConnectionClient.Get method. -type BotConnectionClientGetOptions struct { - // placeholder for future optional parameters -} - -// BotConnectionClientListByBotServiceOptions contains the optional parameters for the BotConnectionClient.NewListByBotServicePager -// method. -type BotConnectionClientListByBotServiceOptions struct { - // placeholder for future optional parameters -} - -// BotConnectionClientListServiceProvidersOptions contains the optional parameters for the BotConnectionClient.ListServiceProviders -// method. -type BotConnectionClientListServiceProvidersOptions struct { - // placeholder for future optional parameters -} - -// BotConnectionClientListWithSecretsOptions contains the optional parameters for the BotConnectionClient.ListWithSecrets -// method. -type BotConnectionClientListWithSecretsOptions struct { - // placeholder for future optional parameters -} - -// BotConnectionClientUpdateOptions contains the optional parameters for the BotConnectionClient.Update method. -type BotConnectionClientUpdateOptions struct { - // placeholder for future optional parameters -} - // BotProperties - The parameters to provide for the Bot. type BotProperties struct { // REQUIRED; The Name of the bot @@ -300,53 +261,6 @@ type BotResponseList struct { Value []*Bot } -// BotsClientCreateOptions contains the optional parameters for the BotsClient.Create method. -type BotsClientCreateOptions struct { - // placeholder for future optional parameters -} - -// BotsClientDeleteOptions contains the optional parameters for the BotsClient.Delete method. -type BotsClientDeleteOptions struct { - // placeholder for future optional parameters -} - -// BotsClientGetCheckNameAvailabilityOptions contains the optional parameters for the BotsClient.GetCheckNameAvailability -// method. -type BotsClientGetCheckNameAvailabilityOptions struct { - // placeholder for future optional parameters -} - -// BotsClientGetOptions contains the optional parameters for the BotsClient.Get method. -type BotsClientGetOptions struct { - // placeholder for future optional parameters -} - -// BotsClientListByResourceGroupOptions contains the optional parameters for the BotsClient.NewListByResourceGroupPager method. -type BotsClientListByResourceGroupOptions struct { - // placeholder for future optional parameters -} - -// BotsClientListOptions contains the optional parameters for the BotsClient.NewListPager method. -type BotsClientListOptions struct { - // placeholder for future optional parameters -} - -// BotsClientUpdateOptions contains the optional parameters for the BotsClient.Update method. -type BotsClientUpdateOptions struct { - // placeholder for future optional parameters -} - -// ChannelClassification provides polymorphic access to related types. -// Call the interface's GetChannel() method to access the common type. -// Use a type switch to determine the concrete type. The possible types are: -// - *AcsChatChannel, *AlexaChannel, *Channel, *DirectLineChannel, *DirectLineSpeechChannel, *EmailChannel, *FacebookChannel, -// - *KikChannel, *LineChannel, *M365Extensions, *MsTeamsChannel, *Omnichannel, *OutlookChannel, *SearchAssistant, *SkypeChannel, -// - *SlackChannel, *SmsChannel, *TelegramChannel, *TelephonyChannel, *WebChatChannel -type ChannelClassification interface { - // GetChannel returns the Channel content of the underlying type. - GetChannel() *Channel -} - // Channel definition type Channel struct { // REQUIRED; The channel name @@ -407,37 +321,6 @@ type ChannelSettings struct { Sites []*Site } -// ChannelsClientCreateOptions contains the optional parameters for the ChannelsClient.Create method. -type ChannelsClientCreateOptions struct { - // placeholder for future optional parameters -} - -// ChannelsClientDeleteOptions contains the optional parameters for the ChannelsClient.Delete method. -type ChannelsClientDeleteOptions struct { - // placeholder for future optional parameters -} - -// ChannelsClientGetOptions contains the optional parameters for the ChannelsClient.Get method. -type ChannelsClientGetOptions struct { - // placeholder for future optional parameters -} - -// ChannelsClientListByResourceGroupOptions contains the optional parameters for the ChannelsClient.NewListByResourceGroupPager -// method. -type ChannelsClientListByResourceGroupOptions struct { - // placeholder for future optional parameters -} - -// ChannelsClientListWithKeysOptions contains the optional parameters for the ChannelsClient.ListWithKeys method. -type ChannelsClientListWithKeysOptions struct { - // placeholder for future optional parameters -} - -// ChannelsClientUpdateOptions contains the optional parameters for the ChannelsClient.Update method. -type ChannelsClientUpdateOptions struct { - // placeholder for future optional parameters -} - // CheckNameAvailabilityRequestBody - The request body for a request to Bot Service Management to check availability of a // bot name. type CheckNameAvailabilityRequestBody struct { @@ -586,8 +469,8 @@ func (d *DirectLineChannel) GetChannel() *Channel { return &Channel{ ChannelName: d.ChannelName, Etag: d.Etag, - ProvisioningState: d.ProvisioningState, Location: d.Location, + ProvisioningState: d.ProvisioningState, } } @@ -606,11 +489,6 @@ type DirectLineChannelProperties struct { Sites []*DirectLineSite } -// DirectLineClientRegenerateKeysOptions contains the optional parameters for the DirectLineClient.RegenerateKeys method. -type DirectLineClientRegenerateKeysOptions struct { - // placeholder for future optional parameters -} - // DirectLineSite - A site for the Direct Line channel type DirectLineSite struct { // REQUIRED; Whether this site is enabled for DirectLine channel @@ -694,8 +572,8 @@ func (d *DirectLineSpeechChannel) GetChannel() *Channel { return &Channel{ ChannelName: d.ChannelName, Etag: d.Etag, - ProvisioningState: d.ProvisioningState, Location: d.Location, + ProvisioningState: d.ProvisioningState, } } @@ -746,8 +624,8 @@ func (e *EmailChannel) GetChannel() *Channel { return &Channel{ ChannelName: e.ChannelName, Etag: e.Etag, - ProvisioningState: e.ProvisioningState, Location: e.Location, + ProvisioningState: e.ProvisioningState, } } @@ -769,11 +647,6 @@ type EmailChannelProperties struct { Password *string } -// EmailClientCreateSignInURLOptions contains the optional parameters for the EmailClient.CreateSignInURL method. -type EmailClientCreateSignInURLOptions struct { - // placeholder for future optional parameters -} - // Error - Bot Service error object. type Error struct { // The error body. @@ -812,8 +685,8 @@ func (f *FacebookChannel) GetChannel() *Channel { return &Channel{ ChannelName: f.ChannelName, Etag: f.Etag, - ProvisioningState: f.ProvisioningState, Location: f.Location, + ProvisioningState: f.ProvisioningState, } } @@ -847,11 +720,6 @@ type FacebookPage struct { AccessToken *string } -// HostSettingsClientGetOptions contains the optional parameters for the HostSettingsClient.Get method. -type HostSettingsClientGetOptions struct { - // placeholder for future optional parameters -} - // HostSettingsResponse - The response body returned for a request to Bot Service Management to check per subscription hostSettings type HostSettingsResponse struct { // Same as toBotFromChannelOpenIdMetadataUrl, used by SDK < v4.12 @@ -902,8 +770,8 @@ func (k *KikChannel) GetChannel() *Channel { return &Channel{ ChannelName: k.ChannelName, Etag: k.Etag, - ProvisioningState: k.ProvisioningState, Location: k.Location, + ProvisioningState: k.ProvisioningState, } } @@ -945,8 +813,8 @@ func (l *LineChannel) GetChannel() *Channel { return &Channel{ ChannelName: l.ChannelName, Etag: l.Etag, - ProvisioningState: l.ProvisioningState, Location: l.Location, + ProvisioningState: l.ProvisioningState, } } @@ -1042,8 +910,8 @@ func (m *M365Extensions) GetChannel() *Channel { return &Channel{ ChannelName: m.ChannelName, Etag: m.Etag, - ProvisioningState: m.ProvisioningState, Location: m.Location, + ProvisioningState: m.ProvisioningState, } } @@ -1070,8 +938,8 @@ func (m *MsTeamsChannel) GetChannel() *Channel { return &Channel{ ChannelName: m.ChannelName, Etag: m.Etag, - ProvisioningState: m.ProvisioningState, Location: m.Location, + ProvisioningState: m.ProvisioningState, } } @@ -1116,8 +984,8 @@ func (o *Omnichannel) GetChannel() *Channel { return &Channel{ ChannelName: o.ChannelName, Etag: o.Etag, - ProvisioningState: o.ProvisioningState, Location: o.Location, + ProvisioningState: o.ProvisioningState, } } @@ -1160,12 +1028,6 @@ type OperationEntityListResult struct { Value []*OperationEntity } -// OperationResultsClientBeginGetOptions contains the optional parameters for the OperationResultsClient.BeginGet method. -type OperationResultsClientBeginGetOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - // OperationResultsDescription - The properties indicating the operation result of an operation on a service. type OperationResultsDescription struct { // READ-ONLY; The ID of the operation returned. @@ -1181,11 +1043,6 @@ type OperationResultsDescription struct { Status *OperationResultStatus } -// OperationsClientListOptions contains the optional parameters for the OperationsClient.NewListPager method. -type OperationsClientListOptions struct { - // placeholder for future optional parameters -} - // OutlookChannel - Outlook channel definition type OutlookChannel struct { // REQUIRED; The channel name @@ -1206,8 +1063,8 @@ func (o *OutlookChannel) GetChannel() *Channel { return &Channel{ ChannelName: o.ChannelName, Etag: o.Etag, - ProvisioningState: o.ProvisioningState, Location: o.Location, + ProvisioningState: o.ProvisioningState, } } @@ -1253,30 +1110,6 @@ type PrivateEndpointConnectionProperties struct { ProvisioningState *PrivateEndpointConnectionProvisioningState } -// PrivateEndpointConnectionsClientCreateOptions contains the optional parameters for the PrivateEndpointConnectionsClient.Create -// method. -type PrivateEndpointConnectionsClientCreateOptions struct { - // placeholder for future optional parameters -} - -// PrivateEndpointConnectionsClientDeleteOptions contains the optional parameters for the PrivateEndpointConnectionsClient.Delete -// method. -type PrivateEndpointConnectionsClientDeleteOptions struct { - // placeholder for future optional parameters -} - -// PrivateEndpointConnectionsClientGetOptions contains the optional parameters for the PrivateEndpointConnectionsClient.Get -// method. -type PrivateEndpointConnectionsClientGetOptions struct { - // placeholder for future optional parameters -} - -// PrivateEndpointConnectionsClientListOptions contains the optional parameters for the PrivateEndpointConnectionsClient.NewListPager -// method. -type PrivateEndpointConnectionsClientListOptions struct { - // placeholder for future optional parameters -} - // PrivateLinkResource - A private link resource type PrivateLinkResource struct { // Resource properties. @@ -1322,12 +1155,6 @@ type PrivateLinkResourceProperties struct { RequiredMembers []*string } -// PrivateLinkResourcesClientListByBotResourceOptions contains the optional parameters for the PrivateLinkResourcesClient.ListByBotResource -// method. -type PrivateLinkResourcesClientListByBotResourceOptions struct { - // placeholder for future optional parameters -} - // PrivateLinkServiceConnectionState - A collection of information about the state of the connection between service consumer // and provider. type PrivateLinkServiceConnectionState struct { @@ -1341,11 +1168,6 @@ type PrivateLinkServiceConnectionState struct { Status *PrivateEndpointServiceConnectionStatus } -// QnAMakerEndpointKeysClientGetOptions contains the optional parameters for the QnAMakerEndpointKeysClient.Get method. -type QnAMakerEndpointKeysClientGetOptions struct { - // placeholder for future optional parameters -} - // QnAMakerEndpointKeysRequestBody - The request body for a request to Bot Service Management to list QnA Maker endpoint keys. type QnAMakerEndpointKeysRequestBody struct { // Subscription key which provides access to this API. @@ -1429,8 +1251,8 @@ func (s *SearchAssistant) GetChannel() *Channel { return &Channel{ ChannelName: s.ChannelName, Etag: s.Etag, - ProvisioningState: s.ProvisioningState, Location: s.Location, + ProvisioningState: s.ProvisioningState, } } @@ -1598,8 +1420,8 @@ func (s *SkypeChannel) GetChannel() *Channel { return &Channel{ ChannelName: s.ChannelName, Etag: s.Etag, - ProvisioningState: s.ProvisioningState, Location: s.Location, + ProvisioningState: s.ProvisioningState, } } @@ -1659,8 +1481,8 @@ func (s *SlackChannel) GetChannel() *Channel { return &Channel{ ChannelName: s.ChannelName, Etag: s.Etag, - ProvisioningState: s.ProvisioningState, Location: s.Location, + ProvisioningState: s.ProvisioningState, } } @@ -1723,8 +1545,8 @@ func (s *SmsChannel) GetChannel() *Channel { return &Channel{ ChannelName: s.ChannelName, Etag: s.Etag, - ProvisioningState: s.ProvisioningState, Location: s.Location, + ProvisioningState: s.ProvisioningState, } } @@ -1769,8 +1591,8 @@ func (t *TelegramChannel) GetChannel() *Channel { return &Channel{ ChannelName: t.ChannelName, Etag: t.Etag, - ProvisioningState: t.ProvisioningState, Location: t.Location, + ProvisioningState: t.ProvisioningState, } } @@ -1809,8 +1631,8 @@ func (t *TelephonyChannel) GetChannel() *Channel { return &Channel{ ChannelName: t.ChannelName, Etag: t.Etag, - ProvisioningState: t.ProvisioningState, Location: t.Location, + ProvisioningState: t.ProvisioningState, } } @@ -1915,8 +1737,8 @@ func (w *WebChatChannel) GetChannel() *Channel { return &Channel{ ChannelName: w.ChannelName, Etag: w.Etag, - ProvisioningState: w.ProvisioningState, Location: w.Location, + ProvisioningState: w.ProvisioningState, } } diff --git a/sdk/resourcemanager/botservice/armbotservice/models_serde.go b/sdk/resourcemanager/botservice/armbotservice/models_serde.go index 5fa264122148..f8b6f5b49f83 100644 --- a/sdk/resourcemanager/botservice/armbotservice/models_serde.go +++ b/sdk/resourcemanager/botservice/armbotservice/models_serde.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbotservice @@ -2080,7 +2079,7 @@ func (o OperationResultsDescription) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "id", o.ID) populate(objectMap, "name", o.Name) - populateTimeRFC3339(objectMap, "startTime", o.StartTime) + populateDateTimeRFC3339(objectMap, "startTime", o.StartTime) populate(objectMap, "status", o.Status) return json.Marshal(objectMap) } @@ -2101,7 +2100,7 @@ func (o *OperationResultsDescription) UnmarshalJSON(data []byte) error { err = unpopulate(val, "Name", &o.Name) delete(rawMsg, key) case "startTime": - err = unpopulateTimeRFC3339(val, "StartTime", &o.StartTime) + err = unpopulateDateTimeRFC3339(val, "StartTime", &o.StartTime) delete(rawMsg, key) case "status": err = unpopulate(val, "Status", &o.Status) diff --git a/sdk/resourcemanager/botservice/armbotservice/operationresults_client.go b/sdk/resourcemanager/botservice/armbotservice/operationresults_client.go index e5096bad95f1..9530d65da7e9 100644 --- a/sdk/resourcemanager/botservice/armbotservice/operationresults_client.go +++ b/sdk/resourcemanager/botservice/armbotservice/operationresults_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbotservice @@ -33,7 +32,7 @@ type OperationResultsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewOperationResultsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*OperationResultsClient, error) { - cl, err := arm.NewClient(moduleName+".OperationResultsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -57,9 +56,14 @@ func (client *OperationResultsClient) BeginGet(ctx context.Context, operationRes if err != nil { return nil, err } - return runtime.NewPoller[OperationResultsClientGetResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[OperationResultsClientGetResponse]{ + Tracer: client.internal.Tracer(), + }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[OperationResultsClientGetResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[OperationResultsClientGetResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -68,18 +72,24 @@ func (client *OperationResultsClient) BeginGet(ctx context.Context, operationRes // // Generated from API version 2022-09-15 func (client *OperationResultsClient) get(ctx context.Context, operationResultID string, options *OperationResultsClientBeginGetOptions) (*http.Response, error) { + var err error + const operationName = "OperationResultsClient.BeginGet" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, operationResultID, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusAccepted) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // getCreateRequest creates the Get request. diff --git a/sdk/resourcemanager/botservice/armbotservice/operationresults_client_example_test.go b/sdk/resourcemanager/botservice/armbotservice/operationresults_client_example_test.go index 46e0be02ce7a..de33e353c27a 100644 --- a/sdk/resourcemanager/botservice/armbotservice/operationresults_client_example_test.go +++ b/sdk/resourcemanager/botservice/armbotservice/operationresults_client_example_test.go @@ -42,7 +42,7 @@ func ExampleOperationResultsClient_BeginGet() { // res.OperationResultsDescription = armbotservice.OperationResultsDescription{ // Name: to.Ptr("servicename"), // ID: to.Ptr("/subscriptions/subid/providers/Microsoft.BotService/locations/westus/operationresults/exampleid"), - // StartTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2019-01-21T06:03:30.2716301Z"); return t}()), + // StartTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2019-01-21T06:03:30.271Z"); return t}()), // Status: to.Ptr(armbotservice.OperationResultStatusRequested), // } } diff --git a/sdk/resourcemanager/botservice/armbotservice/operations_client.go b/sdk/resourcemanager/botservice/armbotservice/operations_client.go index 33a677ddb495..c6e42780575e 100644 --- a/sdk/resourcemanager/botservice/armbotservice/operations_client.go +++ b/sdk/resourcemanager/botservice/armbotservice/operations_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbotservice @@ -28,7 +27,7 @@ type OperationsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewOperationsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*OperationsClient, error) { - cl, err := arm.NewClient(moduleName+".OperationsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -48,25 +47,20 @@ func (client *OperationsClient) NewListPager(options *OperationsClientListOption return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *OperationsClientListResponse) (OperationsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "OperationsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return OperationsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return OperationsClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return OperationsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/botservice/armbotservice/options.go b/sdk/resourcemanager/botservice/armbotservice/options.go new file mode 100644 index 000000000000..6763df9e8bf0 --- /dev/null +++ b/sdk/resourcemanager/botservice/armbotservice/options.go @@ -0,0 +1,175 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package armbotservice + +// BotConnectionClientCreateOptions contains the optional parameters for the BotConnectionClient.Create method. +type BotConnectionClientCreateOptions struct { + // placeholder for future optional parameters +} + +// BotConnectionClientDeleteOptions contains the optional parameters for the BotConnectionClient.Delete method. +type BotConnectionClientDeleteOptions struct { + // placeholder for future optional parameters +} + +// BotConnectionClientGetOptions contains the optional parameters for the BotConnectionClient.Get method. +type BotConnectionClientGetOptions struct { + // placeholder for future optional parameters +} + +// BotConnectionClientListByBotServiceOptions contains the optional parameters for the BotConnectionClient.NewListByBotServicePager +// method. +type BotConnectionClientListByBotServiceOptions struct { + // placeholder for future optional parameters +} + +// BotConnectionClientListServiceProvidersOptions contains the optional parameters for the BotConnectionClient.ListServiceProviders +// method. +type BotConnectionClientListServiceProvidersOptions struct { + // placeholder for future optional parameters +} + +// BotConnectionClientListWithSecretsOptions contains the optional parameters for the BotConnectionClient.ListWithSecrets +// method. +type BotConnectionClientListWithSecretsOptions struct { + // placeholder for future optional parameters +} + +// BotConnectionClientUpdateOptions contains the optional parameters for the BotConnectionClient.Update method. +type BotConnectionClientUpdateOptions struct { + // placeholder for future optional parameters +} + +// BotsClientCreateOptions contains the optional parameters for the BotsClient.Create method. +type BotsClientCreateOptions struct { + // placeholder for future optional parameters +} + +// BotsClientDeleteOptions contains the optional parameters for the BotsClient.Delete method. +type BotsClientDeleteOptions struct { + // placeholder for future optional parameters +} + +// BotsClientGetCheckNameAvailabilityOptions contains the optional parameters for the BotsClient.GetCheckNameAvailability +// method. +type BotsClientGetCheckNameAvailabilityOptions struct { + // placeholder for future optional parameters +} + +// BotsClientGetOptions contains the optional parameters for the BotsClient.Get method. +type BotsClientGetOptions struct { + // placeholder for future optional parameters +} + +// BotsClientListByResourceGroupOptions contains the optional parameters for the BotsClient.NewListByResourceGroupPager method. +type BotsClientListByResourceGroupOptions struct { + // placeholder for future optional parameters +} + +// BotsClientListOptions contains the optional parameters for the BotsClient.NewListPager method. +type BotsClientListOptions struct { + // placeholder for future optional parameters +} + +// BotsClientUpdateOptions contains the optional parameters for the BotsClient.Update method. +type BotsClientUpdateOptions struct { + // placeholder for future optional parameters +} + +// ChannelsClientCreateOptions contains the optional parameters for the ChannelsClient.Create method. +type ChannelsClientCreateOptions struct { + // placeholder for future optional parameters +} + +// ChannelsClientDeleteOptions contains the optional parameters for the ChannelsClient.Delete method. +type ChannelsClientDeleteOptions struct { + // placeholder for future optional parameters +} + +// ChannelsClientGetOptions contains the optional parameters for the ChannelsClient.Get method. +type ChannelsClientGetOptions struct { + // placeholder for future optional parameters +} + +// ChannelsClientListByResourceGroupOptions contains the optional parameters for the ChannelsClient.NewListByResourceGroupPager +// method. +type ChannelsClientListByResourceGroupOptions struct { + // placeholder for future optional parameters +} + +// ChannelsClientListWithKeysOptions contains the optional parameters for the ChannelsClient.ListWithKeys method. +type ChannelsClientListWithKeysOptions struct { + // placeholder for future optional parameters +} + +// ChannelsClientUpdateOptions contains the optional parameters for the ChannelsClient.Update method. +type ChannelsClientUpdateOptions struct { + // placeholder for future optional parameters +} + +// DirectLineClientRegenerateKeysOptions contains the optional parameters for the DirectLineClient.RegenerateKeys method. +type DirectLineClientRegenerateKeysOptions struct { + // placeholder for future optional parameters +} + +// EmailClientCreateSignInURLOptions contains the optional parameters for the EmailClient.CreateSignInURL method. +type EmailClientCreateSignInURLOptions struct { + // placeholder for future optional parameters +} + +// HostSettingsClientGetOptions contains the optional parameters for the HostSettingsClient.Get method. +type HostSettingsClientGetOptions struct { + // placeholder for future optional parameters +} + +// OperationResultsClientBeginGetOptions contains the optional parameters for the OperationResultsClient.BeginGet method. +type OperationResultsClientBeginGetOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// OperationsClientListOptions contains the optional parameters for the OperationsClient.NewListPager method. +type OperationsClientListOptions struct { + // placeholder for future optional parameters +} + +// PrivateEndpointConnectionsClientCreateOptions contains the optional parameters for the PrivateEndpointConnectionsClient.Create +// method. +type PrivateEndpointConnectionsClientCreateOptions struct { + // placeholder for future optional parameters +} + +// PrivateEndpointConnectionsClientDeleteOptions contains the optional parameters for the PrivateEndpointConnectionsClient.Delete +// method. +type PrivateEndpointConnectionsClientDeleteOptions struct { + // placeholder for future optional parameters +} + +// PrivateEndpointConnectionsClientGetOptions contains the optional parameters for the PrivateEndpointConnectionsClient.Get +// method. +type PrivateEndpointConnectionsClientGetOptions struct { + // placeholder for future optional parameters +} + +// PrivateEndpointConnectionsClientListOptions contains the optional parameters for the PrivateEndpointConnectionsClient.NewListPager +// method. +type PrivateEndpointConnectionsClientListOptions struct { + // placeholder for future optional parameters +} + +// PrivateLinkResourcesClientListByBotResourceOptions contains the optional parameters for the PrivateLinkResourcesClient.ListByBotResource +// method. +type PrivateLinkResourcesClientListByBotResourceOptions struct { + // placeholder for future optional parameters +} + +// QnAMakerEndpointKeysClientGetOptions contains the optional parameters for the QnAMakerEndpointKeysClient.Get method. +type QnAMakerEndpointKeysClientGetOptions struct { + // placeholder for future optional parameters +} diff --git a/sdk/resourcemanager/botservice/armbotservice/polymorphic_helpers.go b/sdk/resourcemanager/botservice/armbotservice/polymorphic_helpers.go index 48835e7262c8..6a816aaf5410 100644 --- a/sdk/resourcemanager/botservice/armbotservice/polymorphic_helpers.go +++ b/sdk/resourcemanager/botservice/armbotservice/polymorphic_helpers.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbotservice @@ -62,5 +61,8 @@ func unmarshalChannelClassification(rawMsg json.RawMessage) (ChannelClassificati default: b = &Channel{} } - return b, json.Unmarshal(rawMsg, b) + if err := json.Unmarshal(rawMsg, b); err != nil { + return nil, err + } + return b, nil } diff --git a/sdk/resourcemanager/botservice/armbotservice/privateendpointconnections_client.go b/sdk/resourcemanager/botservice/armbotservice/privateendpointconnections_client.go index 5cf42b963209..c56cb9f676a0 100644 --- a/sdk/resourcemanager/botservice/armbotservice/privateendpointconnections_client.go +++ b/sdk/resourcemanager/botservice/armbotservice/privateendpointconnections_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbotservice @@ -33,7 +32,7 @@ type PrivateEndpointConnectionsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewPrivateEndpointConnectionsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*PrivateEndpointConnectionsClient, error) { - cl, err := arm.NewClient(moduleName+".PrivateEndpointConnectionsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -55,18 +54,25 @@ func NewPrivateEndpointConnectionsClient(subscriptionID string, credential azcor // - options - PrivateEndpointConnectionsClientCreateOptions contains the optional parameters for the PrivateEndpointConnectionsClient.Create // method. func (client *PrivateEndpointConnectionsClient) Create(ctx context.Context, resourceGroupName string, resourceName string, privateEndpointConnectionName string, properties PrivateEndpointConnection, options *PrivateEndpointConnectionsClientCreateOptions) (PrivateEndpointConnectionsClientCreateResponse, error) { + var err error + const operationName = "PrivateEndpointConnectionsClient.Create" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, resourceName, privateEndpointConnectionName, properties, options) if err != nil { return PrivateEndpointConnectionsClientCreateResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return PrivateEndpointConnectionsClientCreateResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PrivateEndpointConnectionsClientCreateResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return PrivateEndpointConnectionsClientCreateResponse{}, err } - return client.createHandleResponse(resp) + resp, err := client.createHandleResponse(httpResp) + return resp, err } // createCreateRequest creates the Create request. @@ -96,7 +102,10 @@ func (client *PrivateEndpointConnectionsClient) createCreateRequest(ctx context. reqQP.Set("api-version", "2022-09-15") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, properties) + if err := runtime.MarshalAsJSON(req, properties); err != nil { + return nil, err + } + return req, nil } // createHandleResponse handles the Create response. @@ -118,16 +127,22 @@ func (client *PrivateEndpointConnectionsClient) createHandleResponse(resp *http. // - options - PrivateEndpointConnectionsClientDeleteOptions contains the optional parameters for the PrivateEndpointConnectionsClient.Delete // method. func (client *PrivateEndpointConnectionsClient) Delete(ctx context.Context, resourceGroupName string, resourceName string, privateEndpointConnectionName string, options *PrivateEndpointConnectionsClientDeleteOptions) (PrivateEndpointConnectionsClientDeleteResponse, error) { + var err error + const operationName = "PrivateEndpointConnectionsClient.Delete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, resourceName, privateEndpointConnectionName, options) if err != nil { return PrivateEndpointConnectionsClientDeleteResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return PrivateEndpointConnectionsClientDeleteResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusNoContent) { - return PrivateEndpointConnectionsClientDeleteResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusNoContent) { + err = runtime.NewResponseError(httpResp) + return PrivateEndpointConnectionsClientDeleteResponse{}, err } return PrivateEndpointConnectionsClientDeleteResponse{}, nil } @@ -172,18 +187,25 @@ func (client *PrivateEndpointConnectionsClient) deleteCreateRequest(ctx context. // - options - PrivateEndpointConnectionsClientGetOptions contains the optional parameters for the PrivateEndpointConnectionsClient.Get // method. func (client *PrivateEndpointConnectionsClient) Get(ctx context.Context, resourceGroupName string, resourceName string, privateEndpointConnectionName string, options *PrivateEndpointConnectionsClientGetOptions) (PrivateEndpointConnectionsClientGetResponse, error) { + var err error + const operationName = "PrivateEndpointConnectionsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, resourceName, privateEndpointConnectionName, options) if err != nil { return PrivateEndpointConnectionsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return PrivateEndpointConnectionsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PrivateEndpointConnectionsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return PrivateEndpointConnectionsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -238,6 +260,7 @@ func (client *PrivateEndpointConnectionsClient) NewListPager(resourceGroupName s return false }, Fetcher: func(ctx context.Context, page *PrivateEndpointConnectionsClientListResponse) (PrivateEndpointConnectionsClientListResponse, error) { + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "PrivateEndpointConnectionsClient.NewListPager") req, err := client.listCreateRequest(ctx, resourceGroupName, resourceName, options) if err != nil { return PrivateEndpointConnectionsClientListResponse{}, err @@ -251,6 +274,7 @@ func (client *PrivateEndpointConnectionsClient) NewListPager(resourceGroupName s } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/botservice/armbotservice/privatelinkresources_client.go b/sdk/resourcemanager/botservice/armbotservice/privatelinkresources_client.go index c8bf6018f51b..445c18c18c53 100644 --- a/sdk/resourcemanager/botservice/armbotservice/privatelinkresources_client.go +++ b/sdk/resourcemanager/botservice/armbotservice/privatelinkresources_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbotservice @@ -33,7 +32,7 @@ type PrivateLinkResourcesClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewPrivateLinkResourcesClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*PrivateLinkResourcesClient, error) { - cl, err := arm.NewClient(moduleName+".PrivateLinkResourcesClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -53,18 +52,25 @@ func NewPrivateLinkResourcesClient(subscriptionID string, credential azcore.Toke // - options - PrivateLinkResourcesClientListByBotResourceOptions contains the optional parameters for the PrivateLinkResourcesClient.ListByBotResource // method. func (client *PrivateLinkResourcesClient) ListByBotResource(ctx context.Context, resourceGroupName string, resourceName string, options *PrivateLinkResourcesClientListByBotResourceOptions) (PrivateLinkResourcesClientListByBotResourceResponse, error) { + var err error + const operationName = "PrivateLinkResourcesClient.ListByBotResource" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.listByBotResourceCreateRequest(ctx, resourceGroupName, resourceName, options) if err != nil { return PrivateLinkResourcesClientListByBotResourceResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return PrivateLinkResourcesClientListByBotResourceResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PrivateLinkResourcesClientListByBotResourceResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return PrivateLinkResourcesClientListByBotResourceResponse{}, err } - return client.listByBotResourceHandleResponse(resp) + resp, err := client.listByBotResourceHandleResponse(httpResp) + return resp, err } // listByBotResourceCreateRequest creates the ListByBotResource request. diff --git a/sdk/resourcemanager/botservice/armbotservice/qnamakerendpointkeys_client.go b/sdk/resourcemanager/botservice/armbotservice/qnamakerendpointkeys_client.go index 14b2d3ad19b1..aabf21bbba6e 100644 --- a/sdk/resourcemanager/botservice/armbotservice/qnamakerendpointkeys_client.go +++ b/sdk/resourcemanager/botservice/armbotservice/qnamakerendpointkeys_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbotservice @@ -33,7 +32,7 @@ type QnAMakerEndpointKeysClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewQnAMakerEndpointKeysClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*QnAMakerEndpointKeysClient, error) { - cl, err := arm.NewClient(moduleName+".QnAMakerEndpointKeysClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -52,18 +51,25 @@ func NewQnAMakerEndpointKeysClient(subscriptionID string, credential azcore.Toke // - options - QnAMakerEndpointKeysClientGetOptions contains the optional parameters for the QnAMakerEndpointKeysClient.Get // method. func (client *QnAMakerEndpointKeysClient) Get(ctx context.Context, parameters QnAMakerEndpointKeysRequestBody, options *QnAMakerEndpointKeysClientGetOptions) (QnAMakerEndpointKeysClientGetResponse, error) { + var err error + const operationName = "QnAMakerEndpointKeysClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, parameters, options) if err != nil { return QnAMakerEndpointKeysClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return QnAMakerEndpointKeysClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return QnAMakerEndpointKeysClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return QnAMakerEndpointKeysClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -81,7 +87,10 @@ func (client *QnAMakerEndpointKeysClient) getCreateRequest(ctx context.Context, reqQP.Set("api-version", "2022-09-15") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // getHandleResponse handles the Get response. diff --git a/sdk/resourcemanager/botservice/armbotservice/response_types.go b/sdk/resourcemanager/botservice/armbotservice/response_types.go index d854a0744848..12d611860406 100644 --- a/sdk/resourcemanager/botservice/armbotservice/response_types.go +++ b/sdk/resourcemanager/botservice/armbotservice/response_types.go @@ -3,14 +3,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbotservice // BotConnectionClientCreateResponse contains the response from method BotConnectionClient.Create. type BotConnectionClientCreateResponse struct { + // Bot channel resource definition ConnectionSetting } @@ -21,31 +21,37 @@ type BotConnectionClientDeleteResponse struct { // BotConnectionClientGetResponse contains the response from method BotConnectionClient.Get. type BotConnectionClientGetResponse struct { + // Bot channel resource definition ConnectionSetting } // BotConnectionClientListByBotServiceResponse contains the response from method BotConnectionClient.NewListByBotServicePager. type BotConnectionClientListByBotServiceResponse struct { + // The list of bot service connection settings response. ConnectionSettingResponseList } // BotConnectionClientListServiceProvidersResponse contains the response from method BotConnectionClient.ListServiceProviders. type BotConnectionClientListServiceProvidersResponse struct { + // The list of bot service providers response. ServiceProviderResponseList } // BotConnectionClientListWithSecretsResponse contains the response from method BotConnectionClient.ListWithSecrets. type BotConnectionClientListWithSecretsResponse struct { + // Bot channel resource definition ConnectionSetting } // BotConnectionClientUpdateResponse contains the response from method BotConnectionClient.Update. type BotConnectionClientUpdateResponse struct { + // Bot channel resource definition ConnectionSetting } // BotsClientCreateResponse contains the response from method BotsClient.Create. type BotsClientCreateResponse struct { + // Bot resource definition Bot } @@ -56,31 +62,37 @@ type BotsClientDeleteResponse struct { // BotsClientGetCheckNameAvailabilityResponse contains the response from method BotsClient.GetCheckNameAvailability. type BotsClientGetCheckNameAvailabilityResponse struct { + // The response body returned for a request to Bot Service Management to check availability of a bot name. CheckNameAvailabilityResponseBody } // BotsClientGetResponse contains the response from method BotsClient.Get. type BotsClientGetResponse struct { + // Bot resource definition Bot } // BotsClientListByResourceGroupResponse contains the response from method BotsClient.NewListByResourceGroupPager. type BotsClientListByResourceGroupResponse struct { + // The list of bot service operation response. BotResponseList } // BotsClientListResponse contains the response from method BotsClient.NewListPager. type BotsClientListResponse struct { + // The list of bot service operation response. BotResponseList } // BotsClientUpdateResponse contains the response from method BotsClient.Update. type BotsClientUpdateResponse struct { + // Bot resource definition Bot } // ChannelsClientCreateResponse contains the response from method ChannelsClient.Create. type ChannelsClientCreateResponse struct { + // Bot channel resource definition BotChannel } @@ -91,51 +103,61 @@ type ChannelsClientDeleteResponse struct { // ChannelsClientGetResponse contains the response from method ChannelsClient.Get. type ChannelsClientGetResponse struct { + // Bot channel resource definition BotChannel } // ChannelsClientListByResourceGroupResponse contains the response from method ChannelsClient.NewListByResourceGroupPager. type ChannelsClientListByResourceGroupResponse struct { + // The list of bot service channel operation response. ChannelResponseList } // ChannelsClientListWithKeysResponse contains the response from method ChannelsClient.ListWithKeys. type ChannelsClientListWithKeysResponse struct { + // The ARM channel of list channel with keys operation response. ListChannelWithKeysResponse } // ChannelsClientUpdateResponse contains the response from method ChannelsClient.Update. type ChannelsClientUpdateResponse struct { + // Bot channel resource definition BotChannel } // DirectLineClientRegenerateKeysResponse contains the response from method DirectLineClient.RegenerateKeys. type DirectLineClientRegenerateKeysResponse struct { + // Bot channel resource definition BotChannel } // EmailClientCreateSignInURLResponse contains the response from method EmailClient.CreateSignInURL. type EmailClientCreateSignInURLResponse struct { + // The ARM create email sign in url operation response. CreateEmailSignInURLResponse } // HostSettingsClientGetResponse contains the response from method HostSettingsClient.Get. type HostSettingsClientGetResponse struct { + // The response body returned for a request to Bot Service Management to check per subscription hostSettings HostSettingsResponse } // OperationResultsClientGetResponse contains the response from method OperationResultsClient.BeginGet. type OperationResultsClientGetResponse struct { + // The properties indicating the operation result of an operation on a service. OperationResultsDescription } // OperationsClientListResponse contains the response from method OperationsClient.NewListPager. type OperationsClientListResponse struct { + // The list of bot service operation response. OperationEntityListResult } // PrivateEndpointConnectionsClientCreateResponse contains the response from method PrivateEndpointConnectionsClient.Create. type PrivateEndpointConnectionsClientCreateResponse struct { + // The Private Endpoint Connection resource. PrivateEndpointConnection } @@ -146,20 +168,24 @@ type PrivateEndpointConnectionsClientDeleteResponse struct { // PrivateEndpointConnectionsClientGetResponse contains the response from method PrivateEndpointConnectionsClient.Get. type PrivateEndpointConnectionsClientGetResponse struct { + // The Private Endpoint Connection resource. PrivateEndpointConnection } // PrivateEndpointConnectionsClientListResponse contains the response from method PrivateEndpointConnectionsClient.NewListPager. type PrivateEndpointConnectionsClientListResponse struct { + // List of private endpoint connection associated with the specified storage account PrivateEndpointConnectionListResult } // PrivateLinkResourcesClientListByBotResourceResponse contains the response from method PrivateLinkResourcesClient.ListByBotResource. type PrivateLinkResourcesClientListByBotResourceResponse struct { + // A list of private link resources PrivateLinkResourceListResult } // QnAMakerEndpointKeysClientGetResponse contains the response from method QnAMakerEndpointKeysClient.Get. type QnAMakerEndpointKeysClientGetResponse struct { + // Schema for EndpointKeys generate/refresh operations. QnAMakerEndpointKeysResponse } diff --git a/sdk/resourcemanager/botservice/armbotservice/time_rfc3339.go b/sdk/resourcemanager/botservice/armbotservice/time_rfc3339.go index 4e7d2d01999c..c10212015fb2 100644 --- a/sdk/resourcemanager/botservice/armbotservice/time_rfc3339.go +++ b/sdk/resourcemanager/botservice/armbotservice/time_rfc3339.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armbotservice @@ -19,50 +18,50 @@ import ( "time" ) -const ( - utcLayoutJSON = `"2006-01-02T15:04:05.999999999"` - utcLayout = "2006-01-02T15:04:05.999999999" - rfc3339JSON = `"` + time.RFC3339Nano + `"` -) - // Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases. var tzOffsetRegex = regexp.MustCompile(`(Z|z|\+|-)(\d+:\d+)*"*$`) -type timeRFC3339 time.Time +const ( + utcDateTimeJSON = `"2006-01-02T15:04:05.999999999"` + utcDateTime = "2006-01-02T15:04:05.999999999" + dateTimeJSON = `"` + time.RFC3339Nano + `"` +) + +type dateTimeRFC3339 time.Time -func (t timeRFC3339) MarshalJSON() (json []byte, err error) { +func (t dateTimeRFC3339) MarshalJSON() ([]byte, error) { tt := time.Time(t) return tt.MarshalJSON() } -func (t timeRFC3339) MarshalText() (text []byte, err error) { +func (t dateTimeRFC3339) MarshalText() ([]byte, error) { tt := time.Time(t) return tt.MarshalText() } -func (t *timeRFC3339) UnmarshalJSON(data []byte) error { - layout := utcLayoutJSON +func (t *dateTimeRFC3339) UnmarshalJSON(data []byte) error { + layout := utcDateTimeJSON if tzOffsetRegex.Match(data) { - layout = rfc3339JSON + layout = dateTimeJSON } return t.Parse(layout, string(data)) } -func (t *timeRFC3339) UnmarshalText(data []byte) (err error) { - layout := utcLayout +func (t *dateTimeRFC3339) UnmarshalText(data []byte) error { + layout := utcDateTime if tzOffsetRegex.Match(data) { layout = time.RFC3339Nano } return t.Parse(layout, string(data)) } -func (t *timeRFC3339) Parse(layout, value string) error { +func (t *dateTimeRFC3339) Parse(layout, value string) error { p, err := time.Parse(layout, strings.ToUpper(value)) - *t = timeRFC3339(p) + *t = dateTimeRFC3339(p) return err } -func populateTimeRFC3339(m map[string]any, k string, t *time.Time) { +func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) { if t == nil { return } else if azcore.IsNullValue(t) { @@ -71,14 +70,14 @@ func populateTimeRFC3339(m map[string]any, k string, t *time.Time) { } else if reflect.ValueOf(t).IsNil() { return } - m[k] = (*timeRFC3339)(t) + m[k] = (*dateTimeRFC3339)(t) } -func unpopulateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { +func unpopulateDateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { if data == nil || strings.EqualFold(string(data), "null") { return nil } - var aux timeRFC3339 + var aux dateTimeRFC3339 if err := json.Unmarshal(data, &aux); err != nil { return fmt.Errorf("struct field %s: %v", fn, err) } From 8d6e600c2749c254d0f958046755853bba99edc1 Mon Sep 17 00:00:00 2001 From: Alancere <804873052@qq.com> Date: Tue, 21 Nov 2023 16:09:20 +0800 Subject: [PATCH 06/10] [Release] sdk/resourcemanager/cdn/armcdn/2.1.0 generation from spec commit: 164375e67a1bffb207bcf603772c289dbe42d7b5 --- sdk/resourcemanager/cdn/armcdn/CHANGELOG.md | 6 + sdk/resourcemanager/cdn/armcdn/README.md | 7 + .../cdn/armcdn/afdcustomdomains_client.go | 63 +- .../cdn/armcdn/afdendpoints_client.go | 88 ++- .../cdn/armcdn/afdorigingroups_client.go | 75 +- .../cdn/armcdn/afdorigins_client.go | 54 +- .../cdn/armcdn/afdprofiles_client.go | 44 +- .../cdn/armcdn/afdx_live_test.go | 2 +- sdk/resourcemanager/cdn/armcdn/autorest.md | 2 +- .../cdn/armcdn/cdn_live_test.go | 2 +- .../cdn/armcdn/client_factory.go | 24 +- sdk/resourcemanager/cdn/armcdn/constants.go | 4 +- .../cdn/armcdn/customdomains_client.go | 75 +- .../cdn/armcdn/edgenodes_client.go | 23 +- .../cdn/armcdn/endpoints_client.go | 136 ++-- .../armcdn/fake/afdcustomdomains_server.go | 388 ++++++++++ .../cdn/armcdn/fake/afdendpoints_server.go | 492 +++++++++++++ .../cdn/armcdn/fake/afdorigingroups_server.go | 385 ++++++++++ .../cdn/armcdn/fake/afdorigins_server.go | 352 ++++++++++ .../cdn/armcdn/fake/afdprofiles_server.go | 298 ++++++++ .../cdn/armcdn/fake/customdomains_server.go | 423 +++++++++++ .../cdn/armcdn/fake/edgenodes_server.go | 96 +++ .../cdn/armcdn/fake/endpoints_server.go | 664 ++++++++++++++++++ .../cdn/armcdn/fake/internal.go | 85 +++ .../cdn/armcdn/fake/loganalytics_server.go | 643 +++++++++++++++++ .../cdn/armcdn/fake/managedrulesets_server.go | 103 +++ .../cdn/armcdn/fake/management_server.go | 199 ++++++ .../cdn/armcdn/fake/operations_server.go | 96 +++ .../cdn/armcdn/fake/origingroups_server.go | 352 ++++++++++ .../cdn/armcdn/fake/origins_server.go | 352 ++++++++++ .../cdn/armcdn/fake/policies_server.go | 299 ++++++++ .../cdn/armcdn/fake/polymorphic_helpers.go | 37 + .../cdn/armcdn/fake/profiles_server.go | 636 +++++++++++++++++ .../cdn/armcdn/fake/resourceusage_server.go | 103 +++ .../cdn/armcdn/fake/routes_server.go | 352 ++++++++++ .../cdn/armcdn/fake/rules_server.go | 352 ++++++++++ .../cdn/armcdn/fake/rulesets_server.go | 308 ++++++++ .../cdn/armcdn/fake/secrets_server.go | 272 +++++++ .../armcdn/fake/securitypolicies_server.go | 332 +++++++++ .../cdn/armcdn/fake/server_factory.go | 192 +++++ .../cdn/armcdn/fake/time_rfc3339.go | 86 +++ sdk/resourcemanager/cdn/armcdn/go.mod | 30 +- sdk/resourcemanager/cdn/armcdn/go.sum | 65 +- .../cdn/armcdn/loganalytics_client.go | 26 +- .../loganalytics_client_example_test.go | 76 +- .../cdn/armcdn/managedrulesets_client.go | 23 +- .../cdn/armcdn/management_client.go | 18 +- .../cdn/armcdn/models_serde.go | 48 +- .../cdn/armcdn/operations_client.go | 23 +- .../cdn/armcdn/origingroups_client.go | 63 +- .../cdn/armcdn/origins_client.go | 63 +- .../cdn/armcdn/policies_client.go | 55 +- .../cdn/armcdn/polymorphic_helpers.go | 8 +- .../cdn/armcdn/profiles_client.go | 140 ++-- .../cdn/armcdn/resourceusage_client.go | 23 +- .../cdn/armcdn/routes_client.go | 54 +- .../cdn/armcdn/rules_client.go | 54 +- .../cdn/armcdn/rulesets_client.go | 61 +- .../cdn/armcdn/secrets_client.go | 45 +- .../cdn/armcdn/securitypolicies_client.go | 54 +- .../cdn/armcdn/time_rfc3339.go | 40 +- 61 files changed, 8897 insertions(+), 574 deletions(-) create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/afdcustomdomains_server.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/afdendpoints_server.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/afdorigingroups_server.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/afdorigins_server.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/afdprofiles_server.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/customdomains_server.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/edgenodes_server.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/endpoints_server.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/internal.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/loganalytics_server.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/managedrulesets_server.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/management_server.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/operations_server.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/origingroups_server.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/origins_server.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/policies_server.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/polymorphic_helpers.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/profiles_server.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/resourceusage_server.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/routes_server.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/rules_server.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/rulesets_server.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/secrets_server.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/securitypolicies_server.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/server_factory.go create mode 100644 sdk/resourcemanager/cdn/armcdn/fake/time_rfc3339.go diff --git a/sdk/resourcemanager/cdn/armcdn/CHANGELOG.md b/sdk/resourcemanager/cdn/armcdn/CHANGELOG.md index b69d10a60f37..57bb3b2227bd 100644 --- a/sdk/resourcemanager/cdn/armcdn/CHANGELOG.md +++ b/sdk/resourcemanager/cdn/armcdn/CHANGELOG.md @@ -1,5 +1,11 @@ # Release History +## 2.1.0 (2023-11-24) +### Features Added + +- Support for test fakes and OpenTelemetry trace spans. + + ## 2.0.0 (2023-10-27) ### Breaking Changes diff --git a/sdk/resourcemanager/cdn/armcdn/README.md b/sdk/resourcemanager/cdn/armcdn/README.md index 09a196d3d9b0..a4ed8e2d0458 100644 --- a/sdk/resourcemanager/cdn/armcdn/README.md +++ b/sdk/resourcemanager/cdn/armcdn/README.md @@ -60,6 +60,13 @@ A client groups a set of related APIs, providing access to its functionality. C client := clientFactory.NewManagementClient() ``` +## Fakes + +The fake package contains types used for constructing in-memory fake servers used in unit tests. +This allows writing tests to cover various success/error conditions without the need for connecting to a live service. + +Please see https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/samples/fakes for details and examples on how to use fakes. + ## Provide Feedback If you encounter bugs or have suggestions, please diff --git a/sdk/resourcemanager/cdn/armcdn/afdcustomdomains_client.go b/sdk/resourcemanager/cdn/armcdn/afdcustomdomains_client.go index a6355ab908c6..b7255e41cfb1 100644 --- a/sdk/resourcemanager/cdn/armcdn/afdcustomdomains_client.go +++ b/sdk/resourcemanager/cdn/armcdn/afdcustomdomains_client.go @@ -32,7 +32,7 @@ type AFDCustomDomainsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewAFDCustomDomainsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*AFDCustomDomainsClient, error) { - cl, err := arm.NewClient(moduleName+".AFDCustomDomainsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -62,10 +62,13 @@ func (client *AFDCustomDomainsClient) BeginCreate(ctx context.Context, resourceG } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[AFDCustomDomainsClientCreateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[AFDCustomDomainsClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[AFDCustomDomainsClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -75,6 +78,10 @@ func (client *AFDCustomDomainsClient) BeginCreate(ctx context.Context, resourceG // Generated from API version 2023-05-01 func (client *AFDCustomDomainsClient) create(ctx context.Context, resourceGroupName string, profileName string, customDomainName string, customDomain AFDDomain, options *AFDCustomDomainsClientBeginCreateOptions) (*http.Response, error) { var err error + const operationName = "AFDCustomDomainsClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, profileName, customDomainName, customDomain, options) if err != nil { return nil, err @@ -142,10 +149,13 @@ func (client *AFDCustomDomainsClient) BeginDelete(ctx context.Context, resourceG } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[AFDCustomDomainsClientDeleteResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[AFDCustomDomainsClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[AFDCustomDomainsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -156,6 +166,10 @@ func (client *AFDCustomDomainsClient) BeginDelete(ctx context.Context, resourceG // Generated from API version 2023-05-01 func (client *AFDCustomDomainsClient) deleteOperation(ctx context.Context, resourceGroupName string, profileName string, customDomainName string, options *AFDCustomDomainsClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "AFDCustomDomainsClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, profileName, customDomainName, options) if err != nil { return nil, err @@ -213,6 +227,10 @@ func (client *AFDCustomDomainsClient) deleteCreateRequest(ctx context.Context, r // - options - AFDCustomDomainsClientGetOptions contains the optional parameters for the AFDCustomDomainsClient.Get method. func (client *AFDCustomDomainsClient) Get(ctx context.Context, resourceGroupName string, profileName string, customDomainName string, options *AFDCustomDomainsClientGetOptions) (AFDCustomDomainsClientGetResponse, error) { var err error + const operationName = "AFDCustomDomainsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, profileName, customDomainName, options) if err != nil { return AFDCustomDomainsClientGetResponse{}, err @@ -282,25 +300,20 @@ func (client *AFDCustomDomainsClient) NewListByProfilePager(resourceGroupName st return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *AFDCustomDomainsClientListByProfileResponse) (AFDCustomDomainsClientListByProfileResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByProfileCreateRequest(ctx, resourceGroupName, profileName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return AFDCustomDomainsClientListByProfileResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "AFDCustomDomainsClient.NewListByProfilePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByProfileCreateRequest(ctx, resourceGroupName, profileName, options) + }, nil) if err != nil { return AFDCustomDomainsClientListByProfileResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AFDCustomDomainsClientListByProfileResponse{}, runtime.NewResponseError(resp) - } return client.listByProfileHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -357,10 +370,13 @@ func (client *AFDCustomDomainsClient) BeginRefreshValidationToken(ctx context.Co } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[AFDCustomDomainsClientRefreshValidationTokenResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[AFDCustomDomainsClientRefreshValidationTokenResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[AFDCustomDomainsClientRefreshValidationTokenResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -370,6 +386,10 @@ func (client *AFDCustomDomainsClient) BeginRefreshValidationToken(ctx context.Co // Generated from API version 2023-05-01 func (client *AFDCustomDomainsClient) refreshValidationToken(ctx context.Context, resourceGroupName string, profileName string, customDomainName string, options *AFDCustomDomainsClientBeginRefreshValidationTokenOptions) (*http.Response, error) { var err error + const operationName = "AFDCustomDomainsClient.BeginRefreshValidationToken" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.refreshValidationTokenCreateRequest(ctx, resourceGroupName, profileName, customDomainName, options) if err != nil { return nil, err @@ -434,10 +454,13 @@ func (client *AFDCustomDomainsClient) BeginUpdate(ctx context.Context, resourceG } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[AFDCustomDomainsClientUpdateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[AFDCustomDomainsClientUpdateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[AFDCustomDomainsClientUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -447,6 +470,10 @@ func (client *AFDCustomDomainsClient) BeginUpdate(ctx context.Context, resourceG // Generated from API version 2023-05-01 func (client *AFDCustomDomainsClient) update(ctx context.Context, resourceGroupName string, profileName string, customDomainName string, customDomainUpdateProperties AFDDomainUpdateParameters, options *AFDCustomDomainsClientBeginUpdateOptions) (*http.Response, error) { var err error + const operationName = "AFDCustomDomainsClient.BeginUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceGroupName, profileName, customDomainName, customDomainUpdateProperties, options) if err != nil { return nil, err diff --git a/sdk/resourcemanager/cdn/armcdn/afdendpoints_client.go b/sdk/resourcemanager/cdn/armcdn/afdendpoints_client.go index 3d1d592d3d41..14e396dd95f7 100644 --- a/sdk/resourcemanager/cdn/armcdn/afdendpoints_client.go +++ b/sdk/resourcemanager/cdn/armcdn/afdendpoints_client.go @@ -32,7 +32,7 @@ type AFDEndpointsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewAFDEndpointsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*AFDEndpointsClient, error) { - cl, err := arm.NewClient(moduleName+".AFDEndpointsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -63,10 +63,13 @@ func (client *AFDEndpointsClient) BeginCreate(ctx context.Context, resourceGroup } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[AFDEndpointsClientCreateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[AFDEndpointsClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[AFDEndpointsClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -77,6 +80,10 @@ func (client *AFDEndpointsClient) BeginCreate(ctx context.Context, resourceGroup // Generated from API version 2023-05-01 func (client *AFDEndpointsClient) create(ctx context.Context, resourceGroupName string, profileName string, endpointName string, endpoint AFDEndpoint, options *AFDEndpointsClientBeginCreateOptions) (*http.Response, error) { var err error + const operationName = "AFDEndpointsClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, profileName, endpointName, endpoint, options) if err != nil { return nil, err @@ -144,10 +151,13 @@ func (client *AFDEndpointsClient) BeginDelete(ctx context.Context, resourceGroup } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[AFDEndpointsClientDeleteResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[AFDEndpointsClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[AFDEndpointsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -158,6 +168,10 @@ func (client *AFDEndpointsClient) BeginDelete(ctx context.Context, resourceGroup // Generated from API version 2023-05-01 func (client *AFDEndpointsClient) deleteOperation(ctx context.Context, resourceGroupName string, profileName string, endpointName string, options *AFDEndpointsClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "AFDEndpointsClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, profileName, endpointName, options) if err != nil { return nil, err @@ -215,6 +229,10 @@ func (client *AFDEndpointsClient) deleteCreateRequest(ctx context.Context, resou // - options - AFDEndpointsClientGetOptions contains the optional parameters for the AFDEndpointsClient.Get method. func (client *AFDEndpointsClient) Get(ctx context.Context, resourceGroupName string, profileName string, endpointName string, options *AFDEndpointsClientGetOptions) (AFDEndpointsClientGetResponse, error) { var err error + const operationName = "AFDEndpointsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, profileName, endpointName, options) if err != nil { return AFDEndpointsClientGetResponse{}, err @@ -284,25 +302,20 @@ func (client *AFDEndpointsClient) NewListByProfilePager(resourceGroupName string return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *AFDEndpointsClientListByProfileResponse) (AFDEndpointsClientListByProfileResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByProfileCreateRequest(ctx, resourceGroupName, profileName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return AFDEndpointsClientListByProfileResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "AFDEndpointsClient.NewListByProfilePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByProfileCreateRequest(ctx, resourceGroupName, profileName, options) + }, nil) if err != nil { return AFDEndpointsClientListByProfileResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AFDEndpointsClientListByProfileResponse{}, runtime.NewResponseError(resp) - } return client.listByProfileHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -356,25 +369,20 @@ func (client *AFDEndpointsClient) NewListResourceUsagePager(resourceGroupName st return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *AFDEndpointsClientListResourceUsageResponse) (AFDEndpointsClientListResourceUsageResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listResourceUsageCreateRequest(ctx, resourceGroupName, profileName, endpointName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "AFDEndpointsClient.NewListResourceUsagePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listResourceUsageCreateRequest(ctx, resourceGroupName, profileName, endpointName, options) + }, nil) if err != nil { return AFDEndpointsClientListResourceUsageResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return AFDEndpointsClientListResourceUsageResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AFDEndpointsClientListResourceUsageResponse{}, runtime.NewResponseError(resp) - } return client.listResourceUsageHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -438,10 +446,13 @@ func (client *AFDEndpointsClient) BeginPurgeContent(ctx context.Context, resourc } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[AFDEndpointsClientPurgeContentResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[AFDEndpointsClientPurgeContentResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[AFDEndpointsClientPurgeContentResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -451,6 +462,10 @@ func (client *AFDEndpointsClient) BeginPurgeContent(ctx context.Context, resourc // Generated from API version 2023-05-01 func (client *AFDEndpointsClient) purgeContent(ctx context.Context, resourceGroupName string, profileName string, endpointName string, contents AfdPurgeParameters, options *AFDEndpointsClientBeginPurgeContentOptions) (*http.Response, error) { var err error + const operationName = "AFDEndpointsClient.BeginPurgeContent" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.purgeContentCreateRequest(ctx, resourceGroupName, profileName, endpointName, contents, options) if err != nil { return nil, err @@ -521,10 +536,13 @@ func (client *AFDEndpointsClient) BeginUpdate(ctx context.Context, resourceGroup } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[AFDEndpointsClientUpdateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[AFDEndpointsClientUpdateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[AFDEndpointsClientUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -537,6 +555,10 @@ func (client *AFDEndpointsClient) BeginUpdate(ctx context.Context, resourceGroup // Generated from API version 2023-05-01 func (client *AFDEndpointsClient) update(ctx context.Context, resourceGroupName string, profileName string, endpointName string, endpointUpdateProperties AFDEndpointUpdateParameters, options *AFDEndpointsClientBeginUpdateOptions) (*http.Response, error) { var err error + const operationName = "AFDEndpointsClient.BeginUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceGroupName, profileName, endpointName, endpointUpdateProperties, options) if err != nil { return nil, err @@ -599,6 +621,10 @@ func (client *AFDEndpointsClient) updateCreateRequest(ctx context.Context, resou // method. func (client *AFDEndpointsClient) ValidateCustomDomain(ctx context.Context, resourceGroupName string, profileName string, endpointName string, customDomainProperties ValidateCustomDomainInput, options *AFDEndpointsClientValidateCustomDomainOptions) (AFDEndpointsClientValidateCustomDomainResponse, error) { var err error + const operationName = "AFDEndpointsClient.ValidateCustomDomain" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.validateCustomDomainCreateRequest(ctx, resourceGroupName, profileName, endpointName, customDomainProperties, options) if err != nil { return AFDEndpointsClientValidateCustomDomainResponse{}, err diff --git a/sdk/resourcemanager/cdn/armcdn/afdorigingroups_client.go b/sdk/resourcemanager/cdn/armcdn/afdorigingroups_client.go index d0fe47ae804c..868bf4a74868 100644 --- a/sdk/resourcemanager/cdn/armcdn/afdorigingroups_client.go +++ b/sdk/resourcemanager/cdn/armcdn/afdorigingroups_client.go @@ -32,7 +32,7 @@ type AFDOriginGroupsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewAFDOriginGroupsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*AFDOriginGroupsClient, error) { - cl, err := arm.NewClient(moduleName+".AFDOriginGroupsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -62,10 +62,13 @@ func (client *AFDOriginGroupsClient) BeginCreate(ctx context.Context, resourceGr } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[AFDOriginGroupsClientCreateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[AFDOriginGroupsClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[AFDOriginGroupsClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -75,6 +78,10 @@ func (client *AFDOriginGroupsClient) BeginCreate(ctx context.Context, resourceGr // Generated from API version 2023-05-01 func (client *AFDOriginGroupsClient) create(ctx context.Context, resourceGroupName string, profileName string, originGroupName string, originGroup AFDOriginGroup, options *AFDOriginGroupsClientBeginCreateOptions) (*http.Response, error) { var err error + const operationName = "AFDOriginGroupsClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, profileName, originGroupName, originGroup, options) if err != nil { return nil, err @@ -141,10 +148,13 @@ func (client *AFDOriginGroupsClient) BeginDelete(ctx context.Context, resourceGr } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[AFDOriginGroupsClientDeleteResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[AFDOriginGroupsClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[AFDOriginGroupsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -154,6 +164,10 @@ func (client *AFDOriginGroupsClient) BeginDelete(ctx context.Context, resourceGr // Generated from API version 2023-05-01 func (client *AFDOriginGroupsClient) deleteOperation(ctx context.Context, resourceGroupName string, profileName string, originGroupName string, options *AFDOriginGroupsClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "AFDOriginGroupsClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, profileName, originGroupName, options) if err != nil { return nil, err @@ -210,6 +224,10 @@ func (client *AFDOriginGroupsClient) deleteCreateRequest(ctx context.Context, re // - options - AFDOriginGroupsClientGetOptions contains the optional parameters for the AFDOriginGroupsClient.Get method. func (client *AFDOriginGroupsClient) Get(ctx context.Context, resourceGroupName string, profileName string, originGroupName string, options *AFDOriginGroupsClientGetOptions) (AFDOriginGroupsClientGetResponse, error) { var err error + const operationName = "AFDOriginGroupsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, profileName, originGroupName, options) if err != nil { return AFDOriginGroupsClientGetResponse{}, err @@ -279,25 +297,20 @@ func (client *AFDOriginGroupsClient) NewListByProfilePager(resourceGroupName str return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *AFDOriginGroupsClientListByProfileResponse) (AFDOriginGroupsClientListByProfileResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByProfileCreateRequest(ctx, resourceGroupName, profileName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return AFDOriginGroupsClientListByProfileResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "AFDOriginGroupsClient.NewListByProfilePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByProfileCreateRequest(ctx, resourceGroupName, profileName, options) + }, nil) if err != nil { return AFDOriginGroupsClientListByProfileResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AFDOriginGroupsClientListByProfileResponse{}, runtime.NewResponseError(resp) - } return client.listByProfileHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -351,25 +364,20 @@ func (client *AFDOriginGroupsClient) NewListResourceUsagePager(resourceGroupName return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *AFDOriginGroupsClientListResourceUsageResponse) (AFDOriginGroupsClientListResourceUsageResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listResourceUsageCreateRequest(ctx, resourceGroupName, profileName, originGroupName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "AFDOriginGroupsClient.NewListResourceUsagePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listResourceUsageCreateRequest(ctx, resourceGroupName, profileName, originGroupName, options) + }, nil) if err != nil { return AFDOriginGroupsClientListResourceUsageResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return AFDOriginGroupsClientListResourceUsageResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AFDOriginGroupsClientListResourceUsageResponse{}, runtime.NewResponseError(resp) - } return client.listResourceUsageHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -431,10 +439,13 @@ func (client *AFDOriginGroupsClient) BeginUpdate(ctx context.Context, resourceGr } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[AFDOriginGroupsClientUpdateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[AFDOriginGroupsClientUpdateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[AFDOriginGroupsClientUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -444,6 +455,10 @@ func (client *AFDOriginGroupsClient) BeginUpdate(ctx context.Context, resourceGr // Generated from API version 2023-05-01 func (client *AFDOriginGroupsClient) update(ctx context.Context, resourceGroupName string, profileName string, originGroupName string, originGroupUpdateProperties AFDOriginGroupUpdateParameters, options *AFDOriginGroupsClientBeginUpdateOptions) (*http.Response, error) { var err error + const operationName = "AFDOriginGroupsClient.BeginUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceGroupName, profileName, originGroupName, originGroupUpdateProperties, options) if err != nil { return nil, err diff --git a/sdk/resourcemanager/cdn/armcdn/afdorigins_client.go b/sdk/resourcemanager/cdn/armcdn/afdorigins_client.go index bdf70f687531..d72d1b098092 100644 --- a/sdk/resourcemanager/cdn/armcdn/afdorigins_client.go +++ b/sdk/resourcemanager/cdn/armcdn/afdorigins_client.go @@ -32,7 +32,7 @@ type AFDOriginsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewAFDOriginsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*AFDOriginsClient, error) { - cl, err := arm.NewClient(moduleName+".AFDOriginsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -62,10 +62,13 @@ func (client *AFDOriginsClient) BeginCreate(ctx context.Context, resourceGroupNa } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[AFDOriginsClientCreateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[AFDOriginsClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[AFDOriginsClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -75,6 +78,10 @@ func (client *AFDOriginsClient) BeginCreate(ctx context.Context, resourceGroupNa // Generated from API version 2023-05-01 func (client *AFDOriginsClient) create(ctx context.Context, resourceGroupName string, profileName string, originGroupName string, originName string, origin AFDOrigin, options *AFDOriginsClientBeginCreateOptions) (*http.Response, error) { var err error + const operationName = "AFDOriginsClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, profileName, originGroupName, originName, origin, options) if err != nil { return nil, err @@ -145,10 +152,13 @@ func (client *AFDOriginsClient) BeginDelete(ctx context.Context, resourceGroupNa } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[AFDOriginsClientDeleteResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[AFDOriginsClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[AFDOriginsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -158,6 +168,10 @@ func (client *AFDOriginsClient) BeginDelete(ctx context.Context, resourceGroupNa // Generated from API version 2023-05-01 func (client *AFDOriginsClient) deleteOperation(ctx context.Context, resourceGroupName string, profileName string, originGroupName string, originName string, options *AFDOriginsClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "AFDOriginsClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, profileName, originGroupName, originName, options) if err != nil { return nil, err @@ -219,6 +233,10 @@ func (client *AFDOriginsClient) deleteCreateRequest(ctx context.Context, resourc // - options - AFDOriginsClientGetOptions contains the optional parameters for the AFDOriginsClient.Get method. func (client *AFDOriginsClient) Get(ctx context.Context, resourceGroupName string, profileName string, originGroupName string, originName string, options *AFDOriginsClientGetOptions) (AFDOriginsClientGetResponse, error) { var err error + const operationName = "AFDOriginsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, profileName, originGroupName, originName, options) if err != nil { return AFDOriginsClientGetResponse{}, err @@ -293,25 +311,20 @@ func (client *AFDOriginsClient) NewListByOriginGroupPager(resourceGroupName stri return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *AFDOriginsClientListByOriginGroupResponse) (AFDOriginsClientListByOriginGroupResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByOriginGroupCreateRequest(ctx, resourceGroupName, profileName, originGroupName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "AFDOriginsClient.NewListByOriginGroupPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByOriginGroupCreateRequest(ctx, resourceGroupName, profileName, originGroupName, options) + }, nil) if err != nil { return AFDOriginsClientListByOriginGroupResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return AFDOriginsClientListByOriginGroupResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AFDOriginsClientListByOriginGroupResponse{}, runtime.NewResponseError(resp) - } return client.listByOriginGroupHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -373,10 +386,13 @@ func (client *AFDOriginsClient) BeginUpdate(ctx context.Context, resourceGroupNa } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[AFDOriginsClientUpdateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[AFDOriginsClientUpdateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[AFDOriginsClientUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -386,6 +402,10 @@ func (client *AFDOriginsClient) BeginUpdate(ctx context.Context, resourceGroupNa // Generated from API version 2023-05-01 func (client *AFDOriginsClient) update(ctx context.Context, resourceGroupName string, profileName string, originGroupName string, originName string, originUpdateProperties AFDOriginUpdateParameters, options *AFDOriginsClientBeginUpdateOptions) (*http.Response, error) { var err error + const operationName = "AFDOriginsClient.BeginUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceGroupName, profileName, originGroupName, originName, originUpdateProperties, options) if err != nil { return nil, err diff --git a/sdk/resourcemanager/cdn/armcdn/afdprofiles_client.go b/sdk/resourcemanager/cdn/armcdn/afdprofiles_client.go index 8e53073abef4..32d3afe5a5b4 100644 --- a/sdk/resourcemanager/cdn/armcdn/afdprofiles_client.go +++ b/sdk/resourcemanager/cdn/armcdn/afdprofiles_client.go @@ -32,7 +32,7 @@ type AFDProfilesClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewAFDProfilesClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*AFDProfilesClient, error) { - cl, err := arm.NewClient(moduleName+".AFDProfilesClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -55,6 +55,10 @@ func NewAFDProfilesClient(subscriptionID string, credential azcore.TokenCredenti // method. func (client *AFDProfilesClient) CheckEndpointNameAvailability(ctx context.Context, resourceGroupName string, profileName string, checkEndpointNameAvailabilityInput CheckEndpointNameAvailabilityInput, options *AFDProfilesClientCheckEndpointNameAvailabilityOptions) (AFDProfilesClientCheckEndpointNameAvailabilityResponse, error) { var err error + const operationName = "AFDProfilesClient.CheckEndpointNameAvailability" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.checkEndpointNameAvailabilityCreateRequest(ctx, resourceGroupName, profileName, checkEndpointNameAvailabilityInput, options) if err != nil { return AFDProfilesClientCheckEndpointNameAvailabilityResponse{}, err @@ -122,6 +126,10 @@ func (client *AFDProfilesClient) checkEndpointNameAvailabilityHandleResponse(res // method. func (client *AFDProfilesClient) CheckHostNameAvailability(ctx context.Context, resourceGroupName string, profileName string, checkHostNameAvailabilityInput CheckHostNameAvailabilityInput, options *AFDProfilesClientCheckHostNameAvailabilityOptions) (AFDProfilesClientCheckHostNameAvailabilityResponse, error) { var err error + const operationName = "AFDProfilesClient.CheckHostNameAvailability" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.checkHostNameAvailabilityCreateRequest(ctx, resourceGroupName, profileName, checkHostNameAvailabilityInput, options) if err != nil { return AFDProfilesClientCheckHostNameAvailabilityResponse{}, err @@ -190,25 +198,20 @@ func (client *AFDProfilesClient) NewListResourceUsagePager(resourceGroupName str return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *AFDProfilesClientListResourceUsageResponse) (AFDProfilesClientListResourceUsageResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listResourceUsageCreateRequest(ctx, resourceGroupName, profileName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "AFDProfilesClient.NewListResourceUsagePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listResourceUsageCreateRequest(ctx, resourceGroupName, profileName, options) + }, nil) if err != nil { return AFDProfilesClientListResourceUsageResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return AFDProfilesClientListResourceUsageResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AFDProfilesClientListResourceUsageResponse{}, runtime.NewResponseError(resp) - } return client.listResourceUsageHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -264,10 +267,13 @@ func (client *AFDProfilesClient) BeginUpgrade(ctx context.Context, resourceGroup } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[AFDProfilesClientUpgradeResponse]{ FinalStateVia: runtime.FinalStateViaLocation, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[AFDProfilesClientUpgradeResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[AFDProfilesClientUpgradeResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -277,6 +283,10 @@ func (client *AFDProfilesClient) BeginUpgrade(ctx context.Context, resourceGroup // Generated from API version 2023-05-01 func (client *AFDProfilesClient) upgrade(ctx context.Context, resourceGroupName string, profileName string, profileUpgradeParameters ProfileUpgradeParameters, options *AFDProfilesClientBeginUpgradeOptions) (*http.Response, error) { var err error + const operationName = "AFDProfilesClient.BeginUpgrade" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.upgradeCreateRequest(ctx, resourceGroupName, profileName, profileUpgradeParameters, options) if err != nil { return nil, err @@ -332,6 +342,10 @@ func (client *AFDProfilesClient) upgradeCreateRequest(ctx context.Context, resou // method. func (client *AFDProfilesClient) ValidateSecret(ctx context.Context, resourceGroupName string, profileName string, validateSecretInput ValidateSecretInput, options *AFDProfilesClientValidateSecretOptions) (AFDProfilesClientValidateSecretResponse, error) { var err error + const operationName = "AFDProfilesClient.ValidateSecret" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.validateSecretCreateRequest(ctx, resourceGroupName, profileName, validateSecretInput, options) if err != nil { return AFDProfilesClientValidateSecretResponse{}, err diff --git a/sdk/resourcemanager/cdn/armcdn/afdx_live_test.go b/sdk/resourcemanager/cdn/armcdn/afdx_live_test.go index 089d897d4b7f..6f777abf8627 100644 --- a/sdk/resourcemanager/cdn/armcdn/afdx_live_test.go +++ b/sdk/resourcemanager/cdn/armcdn/afdx_live_test.go @@ -18,7 +18,7 @@ import ( "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" "github.com/Azure/azure-sdk-for-go/sdk/internal/recording" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/testutil" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2/testutil" "github.com/stretchr/testify/suite" ) diff --git a/sdk/resourcemanager/cdn/armcdn/autorest.md b/sdk/resourcemanager/cdn/armcdn/autorest.md index fee20f2508f2..7265e81302c0 100644 --- a/sdk/resourcemanager/cdn/armcdn/autorest.md +++ b/sdk/resourcemanager/cdn/armcdn/autorest.md @@ -8,7 +8,7 @@ require: - https://github.com/Azure/azure-rest-api-specs/blob/7b551033155a63739b6d28f79b9c07569f6179b8/specification/cdn/resource-manager/readme.md - https://github.com/Azure/azure-rest-api-specs/blob/7b551033155a63739b6d28f79b9c07569f6179b8/specification/cdn/resource-manager/readme.go.md license-header: MICROSOFT_MIT_NO_VERSION -module-version: 2.0.0 +module-version: 2.1.0 modelerfour: lenient-model-deduplication: true tag: package-2023-05 diff --git a/sdk/resourcemanager/cdn/armcdn/cdn_live_test.go b/sdk/resourcemanager/cdn/armcdn/cdn_live_test.go index c52fe6da2859..87511ddda12e 100644 --- a/sdk/resourcemanager/cdn/armcdn/cdn_live_test.go +++ b/sdk/resourcemanager/cdn/armcdn/cdn_live_test.go @@ -16,7 +16,7 @@ import ( "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" "github.com/Azure/azure-sdk-for-go/sdk/internal/recording" "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/testutil" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2/testutil" "github.com/stretchr/testify/suite" ) diff --git a/sdk/resourcemanager/cdn/armcdn/client_factory.go b/sdk/resourcemanager/cdn/armcdn/client_factory.go index c1e449a93042..3cd40b53ac6e 100644 --- a/sdk/resourcemanager/cdn/armcdn/client_factory.go +++ b/sdk/resourcemanager/cdn/armcdn/client_factory.go @@ -27,7 +27,7 @@ type ClientFactory struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewClientFactory(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*ClientFactory, error) { - _, err := arm.NewClient(moduleName+".ClientFactory", moduleVersion, credential, options) + _, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -37,111 +37,133 @@ func NewClientFactory(subscriptionID string, credential azcore.TokenCredential, }, nil } +// NewAFDCustomDomainsClient creates a new instance of AFDCustomDomainsClient. func (c *ClientFactory) NewAFDCustomDomainsClient() *AFDCustomDomainsClient { subClient, _ := NewAFDCustomDomainsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewAFDEndpointsClient creates a new instance of AFDEndpointsClient. func (c *ClientFactory) NewAFDEndpointsClient() *AFDEndpointsClient { subClient, _ := NewAFDEndpointsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewAFDOriginGroupsClient creates a new instance of AFDOriginGroupsClient. func (c *ClientFactory) NewAFDOriginGroupsClient() *AFDOriginGroupsClient { subClient, _ := NewAFDOriginGroupsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewAFDOriginsClient creates a new instance of AFDOriginsClient. func (c *ClientFactory) NewAFDOriginsClient() *AFDOriginsClient { subClient, _ := NewAFDOriginsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewAFDProfilesClient creates a new instance of AFDProfilesClient. func (c *ClientFactory) NewAFDProfilesClient() *AFDProfilesClient { subClient, _ := NewAFDProfilesClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewCustomDomainsClient creates a new instance of CustomDomainsClient. func (c *ClientFactory) NewCustomDomainsClient() *CustomDomainsClient { subClient, _ := NewCustomDomainsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewEdgeNodesClient creates a new instance of EdgeNodesClient. func (c *ClientFactory) NewEdgeNodesClient() *EdgeNodesClient { subClient, _ := NewEdgeNodesClient(c.credential, c.options) return subClient } +// NewEndpointsClient creates a new instance of EndpointsClient. func (c *ClientFactory) NewEndpointsClient() *EndpointsClient { subClient, _ := NewEndpointsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewLogAnalyticsClient creates a new instance of LogAnalyticsClient. func (c *ClientFactory) NewLogAnalyticsClient() *LogAnalyticsClient { subClient, _ := NewLogAnalyticsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewManagedRuleSetsClient creates a new instance of ManagedRuleSetsClient. func (c *ClientFactory) NewManagedRuleSetsClient() *ManagedRuleSetsClient { subClient, _ := NewManagedRuleSetsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewManagementClient creates a new instance of ManagementClient. func (c *ClientFactory) NewManagementClient() *ManagementClient { subClient, _ := NewManagementClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewOperationsClient creates a new instance of OperationsClient. func (c *ClientFactory) NewOperationsClient() *OperationsClient { subClient, _ := NewOperationsClient(c.credential, c.options) return subClient } +// NewOriginGroupsClient creates a new instance of OriginGroupsClient. func (c *ClientFactory) NewOriginGroupsClient() *OriginGroupsClient { subClient, _ := NewOriginGroupsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewOriginsClient creates a new instance of OriginsClient. func (c *ClientFactory) NewOriginsClient() *OriginsClient { subClient, _ := NewOriginsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewPoliciesClient creates a new instance of PoliciesClient. func (c *ClientFactory) NewPoliciesClient() *PoliciesClient { subClient, _ := NewPoliciesClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewProfilesClient creates a new instance of ProfilesClient. func (c *ClientFactory) NewProfilesClient() *ProfilesClient { subClient, _ := NewProfilesClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewResourceUsageClient creates a new instance of ResourceUsageClient. func (c *ClientFactory) NewResourceUsageClient() *ResourceUsageClient { subClient, _ := NewResourceUsageClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewRoutesClient creates a new instance of RoutesClient. func (c *ClientFactory) NewRoutesClient() *RoutesClient { subClient, _ := NewRoutesClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewRuleSetsClient creates a new instance of RuleSetsClient. func (c *ClientFactory) NewRuleSetsClient() *RuleSetsClient { subClient, _ := NewRuleSetsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewRulesClient creates a new instance of RulesClient. func (c *ClientFactory) NewRulesClient() *RulesClient { subClient, _ := NewRulesClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewSecretsClient creates a new instance of SecretsClient. func (c *ClientFactory) NewSecretsClient() *SecretsClient { subClient, _ := NewSecretsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewSecurityPoliciesClient creates a new instance of SecurityPoliciesClient. func (c *ClientFactory) NewSecurityPoliciesClient() *SecurityPoliciesClient { subClient, _ := NewSecurityPoliciesClient(c.subscriptionID, c.credential, c.options) return subClient diff --git a/sdk/resourcemanager/cdn/armcdn/constants.go b/sdk/resourcemanager/cdn/armcdn/constants.go index ca2ea36f414c..9fcf5f1251d6 100644 --- a/sdk/resourcemanager/cdn/armcdn/constants.go +++ b/sdk/resourcemanager/cdn/armcdn/constants.go @@ -9,8 +9,8 @@ package armcdn const ( - moduleName = "armcdn" - moduleVersion = "v2.0.0" + moduleName = "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn" + moduleVersion = "v2.1.0" ) // AFDEndpointProtocols - Supported protocols for the customer's endpoint. diff --git a/sdk/resourcemanager/cdn/armcdn/customdomains_client.go b/sdk/resourcemanager/cdn/armcdn/customdomains_client.go index 4b24f27632a5..be3c5b8ce1c7 100644 --- a/sdk/resourcemanager/cdn/armcdn/customdomains_client.go +++ b/sdk/resourcemanager/cdn/armcdn/customdomains_client.go @@ -32,7 +32,7 @@ type CustomDomainsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewCustomDomainsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*CustomDomainsClient, error) { - cl, err := arm.NewClient(moduleName+".CustomDomainsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -60,10 +60,14 @@ func (client *CustomDomainsClient) BeginCreate(ctx context.Context, resourceGrou if err != nil { return nil, err } - poller, err := runtime.NewPoller[CustomDomainsClientCreateResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[CustomDomainsClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[CustomDomainsClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[CustomDomainsClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -73,6 +77,10 @@ func (client *CustomDomainsClient) BeginCreate(ctx context.Context, resourceGrou // Generated from API version 2023-05-01 func (client *CustomDomainsClient) create(ctx context.Context, resourceGroupName string, profileName string, endpointName string, customDomainName string, customDomainProperties CustomDomainParameters, options *CustomDomainsClientBeginCreateOptions) (*http.Response, error) { var err error + const operationName = "CustomDomainsClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, profileName, endpointName, customDomainName, customDomainProperties, options) if err != nil { return nil, err @@ -141,10 +149,14 @@ func (client *CustomDomainsClient) BeginDelete(ctx context.Context, resourceGrou if err != nil { return nil, err } - poller, err := runtime.NewPoller[CustomDomainsClientDeleteResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[CustomDomainsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[CustomDomainsClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[CustomDomainsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -154,6 +166,10 @@ func (client *CustomDomainsClient) BeginDelete(ctx context.Context, resourceGrou // Generated from API version 2023-05-01 func (client *CustomDomainsClient) deleteOperation(ctx context.Context, resourceGroupName string, profileName string, endpointName string, customDomainName string, options *CustomDomainsClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "CustomDomainsClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, profileName, endpointName, customDomainName, options) if err != nil { return nil, err @@ -219,10 +235,14 @@ func (client *CustomDomainsClient) BeginDisableCustomHTTPS(ctx context.Context, if err != nil { return nil, err } - poller, err := runtime.NewPoller[CustomDomainsClientDisableCustomHTTPSResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[CustomDomainsClientDisableCustomHTTPSResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[CustomDomainsClientDisableCustomHTTPSResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[CustomDomainsClientDisableCustomHTTPSResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -232,6 +252,10 @@ func (client *CustomDomainsClient) BeginDisableCustomHTTPS(ctx context.Context, // Generated from API version 2023-05-01 func (client *CustomDomainsClient) disableCustomHTTPS(ctx context.Context, resourceGroupName string, profileName string, endpointName string, customDomainName string, options *CustomDomainsClientBeginDisableCustomHTTPSOptions) (*http.Response, error) { var err error + const operationName = "CustomDomainsClient.BeginDisableCustomHTTPS" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.disableCustomHTTPSCreateRequest(ctx, resourceGroupName, profileName, endpointName, customDomainName, options) if err != nil { return nil, err @@ -297,10 +321,14 @@ func (client *CustomDomainsClient) BeginEnableCustomHTTPS(ctx context.Context, r if err != nil { return nil, err } - poller, err := runtime.NewPoller[CustomDomainsClientEnableCustomHTTPSResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[CustomDomainsClientEnableCustomHTTPSResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[CustomDomainsClientEnableCustomHTTPSResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[CustomDomainsClientEnableCustomHTTPSResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -310,6 +338,10 @@ func (client *CustomDomainsClient) BeginEnableCustomHTTPS(ctx context.Context, r // Generated from API version 2023-05-01 func (client *CustomDomainsClient) enableCustomHTTPS(ctx context.Context, resourceGroupName string, profileName string, endpointName string, customDomainName string, options *CustomDomainsClientBeginEnableCustomHTTPSOptions) (*http.Response, error) { var err error + const operationName = "CustomDomainsClient.BeginEnableCustomHTTPS" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.enableCustomHTTPSCreateRequest(ctx, resourceGroupName, profileName, endpointName, customDomainName, options) if err != nil { return nil, err @@ -376,6 +408,10 @@ func (client *CustomDomainsClient) enableCustomHTTPSCreateRequest(ctx context.Co // - options - CustomDomainsClientGetOptions contains the optional parameters for the CustomDomainsClient.Get method. func (client *CustomDomainsClient) Get(ctx context.Context, resourceGroupName string, profileName string, endpointName string, customDomainName string, options *CustomDomainsClientGetOptions) (CustomDomainsClientGetResponse, error) { var err error + const operationName = "CustomDomainsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, profileName, endpointName, customDomainName, options) if err != nil { return CustomDomainsClientGetResponse{}, err @@ -449,25 +485,20 @@ func (client *CustomDomainsClient) NewListByEndpointPager(resourceGroupName stri return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *CustomDomainsClientListByEndpointResponse) (CustomDomainsClientListByEndpointResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByEndpointCreateRequest(ctx, resourceGroupName, profileName, endpointName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "CustomDomainsClient.NewListByEndpointPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByEndpointCreateRequest(ctx, resourceGroupName, profileName, endpointName, options) + }, nil) if err != nil { return CustomDomainsClientListByEndpointResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return CustomDomainsClientListByEndpointResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return CustomDomainsClientListByEndpointResponse{}, runtime.NewResponseError(resp) - } return client.listByEndpointHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/cdn/armcdn/edgenodes_client.go b/sdk/resourcemanager/cdn/armcdn/edgenodes_client.go index feacfbdc2c74..4ed421574a06 100644 --- a/sdk/resourcemanager/cdn/armcdn/edgenodes_client.go +++ b/sdk/resourcemanager/cdn/armcdn/edgenodes_client.go @@ -27,7 +27,7 @@ type EdgeNodesClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewEdgeNodesClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*EdgeNodesClient, error) { - cl, err := arm.NewClient(moduleName+".EdgeNodesClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -47,25 +47,20 @@ func (client *EdgeNodesClient) NewListPager(options *EdgeNodesClientListOptions) return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *EdgeNodesClientListResponse) (EdgeNodesClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "EdgeNodesClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return EdgeNodesClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return EdgeNodesClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return EdgeNodesClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/cdn/armcdn/endpoints_client.go b/sdk/resourcemanager/cdn/armcdn/endpoints_client.go index a8afdd3ad16c..4e8fd5343a20 100644 --- a/sdk/resourcemanager/cdn/armcdn/endpoints_client.go +++ b/sdk/resourcemanager/cdn/armcdn/endpoints_client.go @@ -32,7 +32,7 @@ type EndpointsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewEndpointsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*EndpointsClient, error) { - cl, err := arm.NewClient(moduleName+".EndpointsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -59,10 +59,14 @@ func (client *EndpointsClient) BeginCreate(ctx context.Context, resourceGroupNam if err != nil { return nil, err } - poller, err := runtime.NewPoller[EndpointsClientCreateResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[EndpointsClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[EndpointsClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[EndpointsClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -73,6 +77,10 @@ func (client *EndpointsClient) BeginCreate(ctx context.Context, resourceGroupNam // Generated from API version 2023-05-01 func (client *EndpointsClient) create(ctx context.Context, resourceGroupName string, profileName string, endpointName string, endpoint Endpoint, options *EndpointsClientBeginCreateOptions) (*http.Response, error) { var err error + const operationName = "EndpointsClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, profileName, endpointName, endpoint, options) if err != nil { return nil, err @@ -136,10 +144,14 @@ func (client *EndpointsClient) BeginDelete(ctx context.Context, resourceGroupNam if err != nil { return nil, err } - poller, err := runtime.NewPoller[EndpointsClientDeleteResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[EndpointsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[EndpointsClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[EndpointsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -150,6 +162,10 @@ func (client *EndpointsClient) BeginDelete(ctx context.Context, resourceGroupNam // Generated from API version 2023-05-01 func (client *EndpointsClient) deleteOperation(ctx context.Context, resourceGroupName string, profileName string, endpointName string, options *EndpointsClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "EndpointsClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, profileName, endpointName, options) if err != nil { return nil, err @@ -206,6 +222,10 @@ func (client *EndpointsClient) deleteCreateRequest(ctx context.Context, resource // - options - EndpointsClientGetOptions contains the optional parameters for the EndpointsClient.Get method. func (client *EndpointsClient) Get(ctx context.Context, resourceGroupName string, profileName string, endpointName string, options *EndpointsClientGetOptions) (EndpointsClientGetResponse, error) { var err error + const operationName = "EndpointsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, profileName, endpointName, options) if err != nil { return EndpointsClientGetResponse{}, err @@ -274,25 +294,20 @@ func (client *EndpointsClient) NewListByProfilePager(resourceGroupName string, p return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *EndpointsClientListByProfileResponse) (EndpointsClientListByProfileResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByProfileCreateRequest(ctx, resourceGroupName, profileName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "EndpointsClient.NewListByProfilePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByProfileCreateRequest(ctx, resourceGroupName, profileName, options) + }, nil) if err != nil { return EndpointsClientListByProfileResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return EndpointsClientListByProfileResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return EndpointsClientListByProfileResponse{}, runtime.NewResponseError(resp) - } return client.listByProfileHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -345,25 +360,20 @@ func (client *EndpointsClient) NewListResourceUsagePager(resourceGroupName strin return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *EndpointsClientListResourceUsageResponse) (EndpointsClientListResourceUsageResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listResourceUsageCreateRequest(ctx, resourceGroupName, profileName, endpointName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "EndpointsClient.NewListResourceUsagePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listResourceUsageCreateRequest(ctx, resourceGroupName, profileName, endpointName, options) + }, nil) if err != nil { return EndpointsClientListResourceUsageResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return EndpointsClientListResourceUsageResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return EndpointsClientListResourceUsageResponse{}, runtime.NewResponseError(resp) - } return client.listResourceUsageHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -423,10 +433,14 @@ func (client *EndpointsClient) BeginLoadContent(ctx context.Context, resourceGro if err != nil { return nil, err } - poller, err := runtime.NewPoller[EndpointsClientLoadContentResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[EndpointsClientLoadContentResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[EndpointsClientLoadContentResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[EndpointsClientLoadContentResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -436,6 +450,10 @@ func (client *EndpointsClient) BeginLoadContent(ctx context.Context, resourceGro // Generated from API version 2023-05-01 func (client *EndpointsClient) loadContent(ctx context.Context, resourceGroupName string, profileName string, endpointName string, contentFilePaths LoadParameters, options *EndpointsClientBeginLoadContentOptions) (*http.Response, error) { var err error + const operationName = "EndpointsClient.BeginLoadContent" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.loadContentCreateRequest(ctx, resourceGroupName, profileName, endpointName, contentFilePaths, options) if err != nil { return nil, err @@ -502,10 +520,14 @@ func (client *EndpointsClient) BeginPurgeContent(ctx context.Context, resourceGr if err != nil { return nil, err } - poller, err := runtime.NewPoller[EndpointsClientPurgeContentResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[EndpointsClientPurgeContentResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[EndpointsClientPurgeContentResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[EndpointsClientPurgeContentResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -515,6 +537,10 @@ func (client *EndpointsClient) BeginPurgeContent(ctx context.Context, resourceGr // Generated from API version 2023-05-01 func (client *EndpointsClient) purgeContent(ctx context.Context, resourceGroupName string, profileName string, endpointName string, contentFilePaths PurgeParameters, options *EndpointsClientBeginPurgeContentOptions) (*http.Response, error) { var err error + const operationName = "EndpointsClient.BeginPurgeContent" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.purgeContentCreateRequest(ctx, resourceGroupName, profileName, endpointName, contentFilePaths, options) if err != nil { return nil, err @@ -577,10 +603,14 @@ func (client *EndpointsClient) BeginStart(ctx context.Context, resourceGroupName if err != nil { return nil, err } - poller, err := runtime.NewPoller[EndpointsClientStartResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[EndpointsClientStartResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[EndpointsClientStartResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[EndpointsClientStartResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -590,6 +620,10 @@ func (client *EndpointsClient) BeginStart(ctx context.Context, resourceGroupName // Generated from API version 2023-05-01 func (client *EndpointsClient) start(ctx context.Context, resourceGroupName string, profileName string, endpointName string, options *EndpointsClientBeginStartOptions) (*http.Response, error) { var err error + const operationName = "EndpointsClient.BeginStart" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.startCreateRequest(ctx, resourceGroupName, profileName, endpointName, options) if err != nil { return nil, err @@ -649,10 +683,14 @@ func (client *EndpointsClient) BeginStop(ctx context.Context, resourceGroupName if err != nil { return nil, err } - poller, err := runtime.NewPoller[EndpointsClientStopResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[EndpointsClientStopResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[EndpointsClientStopResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[EndpointsClientStopResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -662,6 +700,10 @@ func (client *EndpointsClient) BeginStop(ctx context.Context, resourceGroupName // Generated from API version 2023-05-01 func (client *EndpointsClient) stop(ctx context.Context, resourceGroupName string, profileName string, endpointName string, options *EndpointsClientBeginStopOptions) (*http.Response, error) { var err error + const operationName = "EndpointsClient.BeginStop" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.stopCreateRequest(ctx, resourceGroupName, profileName, endpointName, options) if err != nil { return nil, err @@ -725,10 +767,14 @@ func (client *EndpointsClient) BeginUpdate(ctx context.Context, resourceGroupNam if err != nil { return nil, err } - poller, err := runtime.NewPoller[EndpointsClientUpdateResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[EndpointsClientUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[EndpointsClientUpdateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[EndpointsClientUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -741,6 +787,10 @@ func (client *EndpointsClient) BeginUpdate(ctx context.Context, resourceGroupNam // Generated from API version 2023-05-01 func (client *EndpointsClient) update(ctx context.Context, resourceGroupName string, profileName string, endpointName string, endpointUpdateProperties EndpointUpdateParameters, options *EndpointsClientBeginUpdateOptions) (*http.Response, error) { var err error + const operationName = "EndpointsClient.BeginUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceGroupName, profileName, endpointName, endpointUpdateProperties, options) if err != nil { return nil, err @@ -801,6 +851,10 @@ func (client *EndpointsClient) updateCreateRequest(ctx context.Context, resource // method. func (client *EndpointsClient) ValidateCustomDomain(ctx context.Context, resourceGroupName string, profileName string, endpointName string, customDomainProperties ValidateCustomDomainInput, options *EndpointsClientValidateCustomDomainOptions) (EndpointsClientValidateCustomDomainResponse, error) { var err error + const operationName = "EndpointsClient.ValidateCustomDomain" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.validateCustomDomainCreateRequest(ctx, resourceGroupName, profileName, endpointName, customDomainProperties, options) if err != nil { return EndpointsClientValidateCustomDomainResponse{}, err diff --git a/sdk/resourcemanager/cdn/armcdn/fake/afdcustomdomains_server.go b/sdk/resourcemanager/cdn/armcdn/fake/afdcustomdomains_server.go new file mode 100644 index 000000000000..5cca8cf8d0e5 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/afdcustomdomains_server.go @@ -0,0 +1,388 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" + "net/http" + "net/url" + "regexp" +) + +// AFDCustomDomainsServer is a fake server for instances of the armcdn.AFDCustomDomainsClient type. +type AFDCustomDomainsServer struct { + // BeginCreate is the fake for method AFDCustomDomainsClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated, http.StatusAccepted + BeginCreate func(ctx context.Context, resourceGroupName string, profileName string, customDomainName string, customDomain armcdn.AFDDomain, options *armcdn.AFDCustomDomainsClientBeginCreateOptions) (resp azfake.PollerResponder[armcdn.AFDCustomDomainsClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method AFDCustomDomainsClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, profileName string, customDomainName string, options *armcdn.AFDCustomDomainsClientBeginDeleteOptions) (resp azfake.PollerResponder[armcdn.AFDCustomDomainsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method AFDCustomDomainsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, profileName string, customDomainName string, options *armcdn.AFDCustomDomainsClientGetOptions) (resp azfake.Responder[armcdn.AFDCustomDomainsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByProfilePager is the fake for method AFDCustomDomainsClient.NewListByProfilePager + // HTTP status codes to indicate success: http.StatusOK + NewListByProfilePager func(resourceGroupName string, profileName string, options *armcdn.AFDCustomDomainsClientListByProfileOptions) (resp azfake.PagerResponder[armcdn.AFDCustomDomainsClientListByProfileResponse]) + + // BeginRefreshValidationToken is the fake for method AFDCustomDomainsClient.BeginRefreshValidationToken + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginRefreshValidationToken func(ctx context.Context, resourceGroupName string, profileName string, customDomainName string, options *armcdn.AFDCustomDomainsClientBeginRefreshValidationTokenOptions) (resp azfake.PollerResponder[armcdn.AFDCustomDomainsClientRefreshValidationTokenResponse], errResp azfake.ErrorResponder) + + // BeginUpdate is the fake for method AFDCustomDomainsClient.BeginUpdate + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginUpdate func(ctx context.Context, resourceGroupName string, profileName string, customDomainName string, customDomainUpdateProperties armcdn.AFDDomainUpdateParameters, options *armcdn.AFDCustomDomainsClientBeginUpdateOptions) (resp azfake.PollerResponder[armcdn.AFDCustomDomainsClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewAFDCustomDomainsServerTransport creates a new instance of AFDCustomDomainsServerTransport with the provided implementation. +// The returned AFDCustomDomainsServerTransport instance is connected to an instance of armcdn.AFDCustomDomainsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewAFDCustomDomainsServerTransport(srv *AFDCustomDomainsServer) *AFDCustomDomainsServerTransport { + return &AFDCustomDomainsServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armcdn.AFDCustomDomainsClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armcdn.AFDCustomDomainsClientDeleteResponse]](), + newListByProfilePager: newTracker[azfake.PagerResponder[armcdn.AFDCustomDomainsClientListByProfileResponse]](), + beginRefreshValidationToken: newTracker[azfake.PollerResponder[armcdn.AFDCustomDomainsClientRefreshValidationTokenResponse]](), + beginUpdate: newTracker[azfake.PollerResponder[armcdn.AFDCustomDomainsClientUpdateResponse]](), + } +} + +// AFDCustomDomainsServerTransport connects instances of armcdn.AFDCustomDomainsClient to instances of AFDCustomDomainsServer. +// Don't use this type directly, use NewAFDCustomDomainsServerTransport instead. +type AFDCustomDomainsServerTransport struct { + srv *AFDCustomDomainsServer + beginCreate *tracker[azfake.PollerResponder[armcdn.AFDCustomDomainsClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armcdn.AFDCustomDomainsClientDeleteResponse]] + newListByProfilePager *tracker[azfake.PagerResponder[armcdn.AFDCustomDomainsClientListByProfileResponse]] + beginRefreshValidationToken *tracker[azfake.PollerResponder[armcdn.AFDCustomDomainsClientRefreshValidationTokenResponse]] + beginUpdate *tracker[azfake.PollerResponder[armcdn.AFDCustomDomainsClientUpdateResponse]] +} + +// Do implements the policy.Transporter interface for AFDCustomDomainsServerTransport. +func (a *AFDCustomDomainsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "AFDCustomDomainsClient.BeginCreate": + resp, err = a.dispatchBeginCreate(req) + case "AFDCustomDomainsClient.BeginDelete": + resp, err = a.dispatchBeginDelete(req) + case "AFDCustomDomainsClient.Get": + resp, err = a.dispatchGet(req) + case "AFDCustomDomainsClient.NewListByProfilePager": + resp, err = a.dispatchNewListByProfilePager(req) + case "AFDCustomDomainsClient.BeginRefreshValidationToken": + resp, err = a.dispatchBeginRefreshValidationToken(req) + case "AFDCustomDomainsClient.BeginUpdate": + resp, err = a.dispatchBeginUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (a *AFDCustomDomainsServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if a.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := a.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/customDomains/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.AFDDomain](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + customDomainNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("customDomainName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.BeginCreate(req.Context(), resourceGroupNameParam, profileNameParam, customDomainNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + a.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated, http.StatusAccepted}, resp.StatusCode) { + a.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + a.beginCreate.remove(req) + } + + return resp, nil +} + +func (a *AFDCustomDomainsServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if a.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := a.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/customDomains/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + customDomainNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("customDomainName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.BeginDelete(req.Context(), resourceGroupNameParam, profileNameParam, customDomainNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + a.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + a.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + a.beginDelete.remove(req) + } + + return resp, nil +} + +func (a *AFDCustomDomainsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if a.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/customDomains/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + customDomainNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("customDomainName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.Get(req.Context(), resourceGroupNameParam, profileNameParam, customDomainNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).AFDDomain, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (a *AFDCustomDomainsServerTransport) dispatchNewListByProfilePager(req *http.Request) (*http.Response, error) { + if a.srv.NewListByProfilePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByProfilePager not implemented")} + } + newListByProfilePager := a.newListByProfilePager.get(req) + if newListByProfilePager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/customDomains` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + resp := a.srv.NewListByProfilePager(resourceGroupNameParam, profileNameParam, nil) + newListByProfilePager = &resp + a.newListByProfilePager.add(req, newListByProfilePager) + server.PagerResponderInjectNextLinks(newListByProfilePager, req, func(page *armcdn.AFDCustomDomainsClientListByProfileResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByProfilePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + a.newListByProfilePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByProfilePager) { + a.newListByProfilePager.remove(req) + } + return resp, nil +} + +func (a *AFDCustomDomainsServerTransport) dispatchBeginRefreshValidationToken(req *http.Request) (*http.Response, error) { + if a.srv.BeginRefreshValidationToken == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginRefreshValidationToken not implemented")} + } + beginRefreshValidationToken := a.beginRefreshValidationToken.get(req) + if beginRefreshValidationToken == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/customDomains/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/refreshValidationToken` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + customDomainNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("customDomainName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.BeginRefreshValidationToken(req.Context(), resourceGroupNameParam, profileNameParam, customDomainNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginRefreshValidationToken = &respr + a.beginRefreshValidationToken.add(req, beginRefreshValidationToken) + } + + resp, err := server.PollerResponderNext(beginRefreshValidationToken, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + a.beginRefreshValidationToken.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginRefreshValidationToken) { + a.beginRefreshValidationToken.remove(req) + } + + return resp, nil +} + +func (a *AFDCustomDomainsServerTransport) dispatchBeginUpdate(req *http.Request) (*http.Response, error) { + if a.srv.BeginUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginUpdate not implemented")} + } + beginUpdate := a.beginUpdate.get(req) + if beginUpdate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/customDomains/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.AFDDomainUpdateParameters](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + customDomainNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("customDomainName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.BeginUpdate(req.Context(), resourceGroupNameParam, profileNameParam, customDomainNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginUpdate = &respr + a.beginUpdate.add(req, beginUpdate) + } + + resp, err := server.PollerResponderNext(beginUpdate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + a.beginUpdate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginUpdate) { + a.beginUpdate.remove(req) + } + + return resp, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/afdendpoints_server.go b/sdk/resourcemanager/cdn/armcdn/fake/afdendpoints_server.go new file mode 100644 index 000000000000..0d41a8e7e868 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/afdendpoints_server.go @@ -0,0 +1,492 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" + "net/http" + "net/url" + "regexp" +) + +// AFDEndpointsServer is a fake server for instances of the armcdn.AFDEndpointsClient type. +type AFDEndpointsServer struct { + // BeginCreate is the fake for method AFDEndpointsClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated, http.StatusAccepted + BeginCreate func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, endpoint armcdn.AFDEndpoint, options *armcdn.AFDEndpointsClientBeginCreateOptions) (resp azfake.PollerResponder[armcdn.AFDEndpointsClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method AFDEndpointsClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, options *armcdn.AFDEndpointsClientBeginDeleteOptions) (resp azfake.PollerResponder[armcdn.AFDEndpointsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method AFDEndpointsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, options *armcdn.AFDEndpointsClientGetOptions) (resp azfake.Responder[armcdn.AFDEndpointsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByProfilePager is the fake for method AFDEndpointsClient.NewListByProfilePager + // HTTP status codes to indicate success: http.StatusOK + NewListByProfilePager func(resourceGroupName string, profileName string, options *armcdn.AFDEndpointsClientListByProfileOptions) (resp azfake.PagerResponder[armcdn.AFDEndpointsClientListByProfileResponse]) + + // NewListResourceUsagePager is the fake for method AFDEndpointsClient.NewListResourceUsagePager + // HTTP status codes to indicate success: http.StatusOK + NewListResourceUsagePager func(resourceGroupName string, profileName string, endpointName string, options *armcdn.AFDEndpointsClientListResourceUsageOptions) (resp azfake.PagerResponder[armcdn.AFDEndpointsClientListResourceUsageResponse]) + + // BeginPurgeContent is the fake for method AFDEndpointsClient.BeginPurgeContent + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginPurgeContent func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, contents armcdn.AfdPurgeParameters, options *armcdn.AFDEndpointsClientBeginPurgeContentOptions) (resp azfake.PollerResponder[armcdn.AFDEndpointsClientPurgeContentResponse], errResp azfake.ErrorResponder) + + // BeginUpdate is the fake for method AFDEndpointsClient.BeginUpdate + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginUpdate func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, endpointUpdateProperties armcdn.AFDEndpointUpdateParameters, options *armcdn.AFDEndpointsClientBeginUpdateOptions) (resp azfake.PollerResponder[armcdn.AFDEndpointsClientUpdateResponse], errResp azfake.ErrorResponder) + + // ValidateCustomDomain is the fake for method AFDEndpointsClient.ValidateCustomDomain + // HTTP status codes to indicate success: http.StatusOK + ValidateCustomDomain func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, customDomainProperties armcdn.ValidateCustomDomainInput, options *armcdn.AFDEndpointsClientValidateCustomDomainOptions) (resp azfake.Responder[armcdn.AFDEndpointsClientValidateCustomDomainResponse], errResp azfake.ErrorResponder) +} + +// NewAFDEndpointsServerTransport creates a new instance of AFDEndpointsServerTransport with the provided implementation. +// The returned AFDEndpointsServerTransport instance is connected to an instance of armcdn.AFDEndpointsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewAFDEndpointsServerTransport(srv *AFDEndpointsServer) *AFDEndpointsServerTransport { + return &AFDEndpointsServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armcdn.AFDEndpointsClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armcdn.AFDEndpointsClientDeleteResponse]](), + newListByProfilePager: newTracker[azfake.PagerResponder[armcdn.AFDEndpointsClientListByProfileResponse]](), + newListResourceUsagePager: newTracker[azfake.PagerResponder[armcdn.AFDEndpointsClientListResourceUsageResponse]](), + beginPurgeContent: newTracker[azfake.PollerResponder[armcdn.AFDEndpointsClientPurgeContentResponse]](), + beginUpdate: newTracker[azfake.PollerResponder[armcdn.AFDEndpointsClientUpdateResponse]](), + } +} + +// AFDEndpointsServerTransport connects instances of armcdn.AFDEndpointsClient to instances of AFDEndpointsServer. +// Don't use this type directly, use NewAFDEndpointsServerTransport instead. +type AFDEndpointsServerTransport struct { + srv *AFDEndpointsServer + beginCreate *tracker[azfake.PollerResponder[armcdn.AFDEndpointsClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armcdn.AFDEndpointsClientDeleteResponse]] + newListByProfilePager *tracker[azfake.PagerResponder[armcdn.AFDEndpointsClientListByProfileResponse]] + newListResourceUsagePager *tracker[azfake.PagerResponder[armcdn.AFDEndpointsClientListResourceUsageResponse]] + beginPurgeContent *tracker[azfake.PollerResponder[armcdn.AFDEndpointsClientPurgeContentResponse]] + beginUpdate *tracker[azfake.PollerResponder[armcdn.AFDEndpointsClientUpdateResponse]] +} + +// Do implements the policy.Transporter interface for AFDEndpointsServerTransport. +func (a *AFDEndpointsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "AFDEndpointsClient.BeginCreate": + resp, err = a.dispatchBeginCreate(req) + case "AFDEndpointsClient.BeginDelete": + resp, err = a.dispatchBeginDelete(req) + case "AFDEndpointsClient.Get": + resp, err = a.dispatchGet(req) + case "AFDEndpointsClient.NewListByProfilePager": + resp, err = a.dispatchNewListByProfilePager(req) + case "AFDEndpointsClient.NewListResourceUsagePager": + resp, err = a.dispatchNewListResourceUsagePager(req) + case "AFDEndpointsClient.BeginPurgeContent": + resp, err = a.dispatchBeginPurgeContent(req) + case "AFDEndpointsClient.BeginUpdate": + resp, err = a.dispatchBeginUpdate(req) + case "AFDEndpointsClient.ValidateCustomDomain": + resp, err = a.dispatchValidateCustomDomain(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (a *AFDEndpointsServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if a.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := a.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/afdEndpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.AFDEndpoint](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.BeginCreate(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + a.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated, http.StatusAccepted}, resp.StatusCode) { + a.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + a.beginCreate.remove(req) + } + + return resp, nil +} + +func (a *AFDEndpointsServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if a.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := a.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/afdEndpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.BeginDelete(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + a.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + a.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + a.beginDelete.remove(req) + } + + return resp, nil +} + +func (a *AFDEndpointsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if a.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/afdEndpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.Get(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).AFDEndpoint, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (a *AFDEndpointsServerTransport) dispatchNewListByProfilePager(req *http.Request) (*http.Response, error) { + if a.srv.NewListByProfilePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByProfilePager not implemented")} + } + newListByProfilePager := a.newListByProfilePager.get(req) + if newListByProfilePager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/afdEndpoints` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + resp := a.srv.NewListByProfilePager(resourceGroupNameParam, profileNameParam, nil) + newListByProfilePager = &resp + a.newListByProfilePager.add(req, newListByProfilePager) + server.PagerResponderInjectNextLinks(newListByProfilePager, req, func(page *armcdn.AFDEndpointsClientListByProfileResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByProfilePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + a.newListByProfilePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByProfilePager) { + a.newListByProfilePager.remove(req) + } + return resp, nil +} + +func (a *AFDEndpointsServerTransport) dispatchNewListResourceUsagePager(req *http.Request) (*http.Response, error) { + if a.srv.NewListResourceUsagePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListResourceUsagePager not implemented")} + } + newListResourceUsagePager := a.newListResourceUsagePager.get(req) + if newListResourceUsagePager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/afdEndpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/usages` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + resp := a.srv.NewListResourceUsagePager(resourceGroupNameParam, profileNameParam, endpointNameParam, nil) + newListResourceUsagePager = &resp + a.newListResourceUsagePager.add(req, newListResourceUsagePager) + server.PagerResponderInjectNextLinks(newListResourceUsagePager, req, func(page *armcdn.AFDEndpointsClientListResourceUsageResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListResourceUsagePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + a.newListResourceUsagePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListResourceUsagePager) { + a.newListResourceUsagePager.remove(req) + } + return resp, nil +} + +func (a *AFDEndpointsServerTransport) dispatchBeginPurgeContent(req *http.Request) (*http.Response, error) { + if a.srv.BeginPurgeContent == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginPurgeContent not implemented")} + } + beginPurgeContent := a.beginPurgeContent.get(req) + if beginPurgeContent == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/afdEndpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/purge` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.AfdPurgeParameters](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.BeginPurgeContent(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginPurgeContent = &respr + a.beginPurgeContent.add(req, beginPurgeContent) + } + + resp, err := server.PollerResponderNext(beginPurgeContent, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + a.beginPurgeContent.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginPurgeContent) { + a.beginPurgeContent.remove(req) + } + + return resp, nil +} + +func (a *AFDEndpointsServerTransport) dispatchBeginUpdate(req *http.Request) (*http.Response, error) { + if a.srv.BeginUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginUpdate not implemented")} + } + beginUpdate := a.beginUpdate.get(req) + if beginUpdate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/afdEndpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.AFDEndpointUpdateParameters](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.BeginUpdate(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginUpdate = &respr + a.beginUpdate.add(req, beginUpdate) + } + + resp, err := server.PollerResponderNext(beginUpdate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + a.beginUpdate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginUpdate) { + a.beginUpdate.remove(req) + } + + return resp, nil +} + +func (a *AFDEndpointsServerTransport) dispatchValidateCustomDomain(req *http.Request) (*http.Response, error) { + if a.srv.ValidateCustomDomain == nil { + return nil, &nonRetriableError{errors.New("fake for method ValidateCustomDomain not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/afdEndpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/validateCustomDomain` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.ValidateCustomDomainInput](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.ValidateCustomDomain(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ValidateCustomDomainOutput, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/afdorigingroups_server.go b/sdk/resourcemanager/cdn/armcdn/fake/afdorigingroups_server.go new file mode 100644 index 000000000000..eb9a62314d84 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/afdorigingroups_server.go @@ -0,0 +1,385 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" + "net/http" + "net/url" + "regexp" +) + +// AFDOriginGroupsServer is a fake server for instances of the armcdn.AFDOriginGroupsClient type. +type AFDOriginGroupsServer struct { + // BeginCreate is the fake for method AFDOriginGroupsClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated, http.StatusAccepted + BeginCreate func(ctx context.Context, resourceGroupName string, profileName string, originGroupName string, originGroup armcdn.AFDOriginGroup, options *armcdn.AFDOriginGroupsClientBeginCreateOptions) (resp azfake.PollerResponder[armcdn.AFDOriginGroupsClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method AFDOriginGroupsClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, profileName string, originGroupName string, options *armcdn.AFDOriginGroupsClientBeginDeleteOptions) (resp azfake.PollerResponder[armcdn.AFDOriginGroupsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method AFDOriginGroupsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, profileName string, originGroupName string, options *armcdn.AFDOriginGroupsClientGetOptions) (resp azfake.Responder[armcdn.AFDOriginGroupsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByProfilePager is the fake for method AFDOriginGroupsClient.NewListByProfilePager + // HTTP status codes to indicate success: http.StatusOK + NewListByProfilePager func(resourceGroupName string, profileName string, options *armcdn.AFDOriginGroupsClientListByProfileOptions) (resp azfake.PagerResponder[armcdn.AFDOriginGroupsClientListByProfileResponse]) + + // NewListResourceUsagePager is the fake for method AFDOriginGroupsClient.NewListResourceUsagePager + // HTTP status codes to indicate success: http.StatusOK + NewListResourceUsagePager func(resourceGroupName string, profileName string, originGroupName string, options *armcdn.AFDOriginGroupsClientListResourceUsageOptions) (resp azfake.PagerResponder[armcdn.AFDOriginGroupsClientListResourceUsageResponse]) + + // BeginUpdate is the fake for method AFDOriginGroupsClient.BeginUpdate + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginUpdate func(ctx context.Context, resourceGroupName string, profileName string, originGroupName string, originGroupUpdateProperties armcdn.AFDOriginGroupUpdateParameters, options *armcdn.AFDOriginGroupsClientBeginUpdateOptions) (resp azfake.PollerResponder[armcdn.AFDOriginGroupsClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewAFDOriginGroupsServerTransport creates a new instance of AFDOriginGroupsServerTransport with the provided implementation. +// The returned AFDOriginGroupsServerTransport instance is connected to an instance of armcdn.AFDOriginGroupsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewAFDOriginGroupsServerTransport(srv *AFDOriginGroupsServer) *AFDOriginGroupsServerTransport { + return &AFDOriginGroupsServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armcdn.AFDOriginGroupsClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armcdn.AFDOriginGroupsClientDeleteResponse]](), + newListByProfilePager: newTracker[azfake.PagerResponder[armcdn.AFDOriginGroupsClientListByProfileResponse]](), + newListResourceUsagePager: newTracker[azfake.PagerResponder[armcdn.AFDOriginGroupsClientListResourceUsageResponse]](), + beginUpdate: newTracker[azfake.PollerResponder[armcdn.AFDOriginGroupsClientUpdateResponse]](), + } +} + +// AFDOriginGroupsServerTransport connects instances of armcdn.AFDOriginGroupsClient to instances of AFDOriginGroupsServer. +// Don't use this type directly, use NewAFDOriginGroupsServerTransport instead. +type AFDOriginGroupsServerTransport struct { + srv *AFDOriginGroupsServer + beginCreate *tracker[azfake.PollerResponder[armcdn.AFDOriginGroupsClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armcdn.AFDOriginGroupsClientDeleteResponse]] + newListByProfilePager *tracker[azfake.PagerResponder[armcdn.AFDOriginGroupsClientListByProfileResponse]] + newListResourceUsagePager *tracker[azfake.PagerResponder[armcdn.AFDOriginGroupsClientListResourceUsageResponse]] + beginUpdate *tracker[azfake.PollerResponder[armcdn.AFDOriginGroupsClientUpdateResponse]] +} + +// Do implements the policy.Transporter interface for AFDOriginGroupsServerTransport. +func (a *AFDOriginGroupsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "AFDOriginGroupsClient.BeginCreate": + resp, err = a.dispatchBeginCreate(req) + case "AFDOriginGroupsClient.BeginDelete": + resp, err = a.dispatchBeginDelete(req) + case "AFDOriginGroupsClient.Get": + resp, err = a.dispatchGet(req) + case "AFDOriginGroupsClient.NewListByProfilePager": + resp, err = a.dispatchNewListByProfilePager(req) + case "AFDOriginGroupsClient.NewListResourceUsagePager": + resp, err = a.dispatchNewListResourceUsagePager(req) + case "AFDOriginGroupsClient.BeginUpdate": + resp, err = a.dispatchBeginUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (a *AFDOriginGroupsServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if a.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := a.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/originGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.AFDOriginGroup](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + originGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("originGroupName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.BeginCreate(req.Context(), resourceGroupNameParam, profileNameParam, originGroupNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + a.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated, http.StatusAccepted}, resp.StatusCode) { + a.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + a.beginCreate.remove(req) + } + + return resp, nil +} + +func (a *AFDOriginGroupsServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if a.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := a.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/originGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + originGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("originGroupName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.BeginDelete(req.Context(), resourceGroupNameParam, profileNameParam, originGroupNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + a.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + a.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + a.beginDelete.remove(req) + } + + return resp, nil +} + +func (a *AFDOriginGroupsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if a.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/originGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + originGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("originGroupName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.Get(req.Context(), resourceGroupNameParam, profileNameParam, originGroupNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).AFDOriginGroup, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (a *AFDOriginGroupsServerTransport) dispatchNewListByProfilePager(req *http.Request) (*http.Response, error) { + if a.srv.NewListByProfilePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByProfilePager not implemented")} + } + newListByProfilePager := a.newListByProfilePager.get(req) + if newListByProfilePager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/originGroups` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + resp := a.srv.NewListByProfilePager(resourceGroupNameParam, profileNameParam, nil) + newListByProfilePager = &resp + a.newListByProfilePager.add(req, newListByProfilePager) + server.PagerResponderInjectNextLinks(newListByProfilePager, req, func(page *armcdn.AFDOriginGroupsClientListByProfileResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByProfilePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + a.newListByProfilePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByProfilePager) { + a.newListByProfilePager.remove(req) + } + return resp, nil +} + +func (a *AFDOriginGroupsServerTransport) dispatchNewListResourceUsagePager(req *http.Request) (*http.Response, error) { + if a.srv.NewListResourceUsagePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListResourceUsagePager not implemented")} + } + newListResourceUsagePager := a.newListResourceUsagePager.get(req) + if newListResourceUsagePager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/originGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/usages` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + originGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("originGroupName")]) + if err != nil { + return nil, err + } + resp := a.srv.NewListResourceUsagePager(resourceGroupNameParam, profileNameParam, originGroupNameParam, nil) + newListResourceUsagePager = &resp + a.newListResourceUsagePager.add(req, newListResourceUsagePager) + server.PagerResponderInjectNextLinks(newListResourceUsagePager, req, func(page *armcdn.AFDOriginGroupsClientListResourceUsageResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListResourceUsagePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + a.newListResourceUsagePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListResourceUsagePager) { + a.newListResourceUsagePager.remove(req) + } + return resp, nil +} + +func (a *AFDOriginGroupsServerTransport) dispatchBeginUpdate(req *http.Request) (*http.Response, error) { + if a.srv.BeginUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginUpdate not implemented")} + } + beginUpdate := a.beginUpdate.get(req) + if beginUpdate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/originGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.AFDOriginGroupUpdateParameters](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + originGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("originGroupName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.BeginUpdate(req.Context(), resourceGroupNameParam, profileNameParam, originGroupNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginUpdate = &respr + a.beginUpdate.add(req, beginUpdate) + } + + resp, err := server.PollerResponderNext(beginUpdate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + a.beginUpdate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginUpdate) { + a.beginUpdate.remove(req) + } + + return resp, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/afdorigins_server.go b/sdk/resourcemanager/cdn/armcdn/fake/afdorigins_server.go new file mode 100644 index 000000000000..0f078e43ba36 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/afdorigins_server.go @@ -0,0 +1,352 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" + "net/http" + "net/url" + "regexp" +) + +// AFDOriginsServer is a fake server for instances of the armcdn.AFDOriginsClient type. +type AFDOriginsServer struct { + // BeginCreate is the fake for method AFDOriginsClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated, http.StatusAccepted + BeginCreate func(ctx context.Context, resourceGroupName string, profileName string, originGroupName string, originName string, origin armcdn.AFDOrigin, options *armcdn.AFDOriginsClientBeginCreateOptions) (resp azfake.PollerResponder[armcdn.AFDOriginsClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method AFDOriginsClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, profileName string, originGroupName string, originName string, options *armcdn.AFDOriginsClientBeginDeleteOptions) (resp azfake.PollerResponder[armcdn.AFDOriginsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method AFDOriginsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, profileName string, originGroupName string, originName string, options *armcdn.AFDOriginsClientGetOptions) (resp azfake.Responder[armcdn.AFDOriginsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByOriginGroupPager is the fake for method AFDOriginsClient.NewListByOriginGroupPager + // HTTP status codes to indicate success: http.StatusOK + NewListByOriginGroupPager func(resourceGroupName string, profileName string, originGroupName string, options *armcdn.AFDOriginsClientListByOriginGroupOptions) (resp azfake.PagerResponder[armcdn.AFDOriginsClientListByOriginGroupResponse]) + + // BeginUpdate is the fake for method AFDOriginsClient.BeginUpdate + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginUpdate func(ctx context.Context, resourceGroupName string, profileName string, originGroupName string, originName string, originUpdateProperties armcdn.AFDOriginUpdateParameters, options *armcdn.AFDOriginsClientBeginUpdateOptions) (resp azfake.PollerResponder[armcdn.AFDOriginsClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewAFDOriginsServerTransport creates a new instance of AFDOriginsServerTransport with the provided implementation. +// The returned AFDOriginsServerTransport instance is connected to an instance of armcdn.AFDOriginsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewAFDOriginsServerTransport(srv *AFDOriginsServer) *AFDOriginsServerTransport { + return &AFDOriginsServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armcdn.AFDOriginsClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armcdn.AFDOriginsClientDeleteResponse]](), + newListByOriginGroupPager: newTracker[azfake.PagerResponder[armcdn.AFDOriginsClientListByOriginGroupResponse]](), + beginUpdate: newTracker[azfake.PollerResponder[armcdn.AFDOriginsClientUpdateResponse]](), + } +} + +// AFDOriginsServerTransport connects instances of armcdn.AFDOriginsClient to instances of AFDOriginsServer. +// Don't use this type directly, use NewAFDOriginsServerTransport instead. +type AFDOriginsServerTransport struct { + srv *AFDOriginsServer + beginCreate *tracker[azfake.PollerResponder[armcdn.AFDOriginsClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armcdn.AFDOriginsClientDeleteResponse]] + newListByOriginGroupPager *tracker[azfake.PagerResponder[armcdn.AFDOriginsClientListByOriginGroupResponse]] + beginUpdate *tracker[azfake.PollerResponder[armcdn.AFDOriginsClientUpdateResponse]] +} + +// Do implements the policy.Transporter interface for AFDOriginsServerTransport. +func (a *AFDOriginsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "AFDOriginsClient.BeginCreate": + resp, err = a.dispatchBeginCreate(req) + case "AFDOriginsClient.BeginDelete": + resp, err = a.dispatchBeginDelete(req) + case "AFDOriginsClient.Get": + resp, err = a.dispatchGet(req) + case "AFDOriginsClient.NewListByOriginGroupPager": + resp, err = a.dispatchNewListByOriginGroupPager(req) + case "AFDOriginsClient.BeginUpdate": + resp, err = a.dispatchBeginUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (a *AFDOriginsServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if a.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := a.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/originGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/origins/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.AFDOrigin](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + originGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("originGroupName")]) + if err != nil { + return nil, err + } + originNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("originName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.BeginCreate(req.Context(), resourceGroupNameParam, profileNameParam, originGroupNameParam, originNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + a.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated, http.StatusAccepted}, resp.StatusCode) { + a.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + a.beginCreate.remove(req) + } + + return resp, nil +} + +func (a *AFDOriginsServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if a.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := a.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/originGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/origins/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + originGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("originGroupName")]) + if err != nil { + return nil, err + } + originNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("originName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.BeginDelete(req.Context(), resourceGroupNameParam, profileNameParam, originGroupNameParam, originNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + a.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + a.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + a.beginDelete.remove(req) + } + + return resp, nil +} + +func (a *AFDOriginsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if a.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/originGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/origins/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + originGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("originGroupName")]) + if err != nil { + return nil, err + } + originNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("originName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.Get(req.Context(), resourceGroupNameParam, profileNameParam, originGroupNameParam, originNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).AFDOrigin, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (a *AFDOriginsServerTransport) dispatchNewListByOriginGroupPager(req *http.Request) (*http.Response, error) { + if a.srv.NewListByOriginGroupPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByOriginGroupPager not implemented")} + } + newListByOriginGroupPager := a.newListByOriginGroupPager.get(req) + if newListByOriginGroupPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/originGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/origins` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + originGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("originGroupName")]) + if err != nil { + return nil, err + } + resp := a.srv.NewListByOriginGroupPager(resourceGroupNameParam, profileNameParam, originGroupNameParam, nil) + newListByOriginGroupPager = &resp + a.newListByOriginGroupPager.add(req, newListByOriginGroupPager) + server.PagerResponderInjectNextLinks(newListByOriginGroupPager, req, func(page *armcdn.AFDOriginsClientListByOriginGroupResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByOriginGroupPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + a.newListByOriginGroupPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByOriginGroupPager) { + a.newListByOriginGroupPager.remove(req) + } + return resp, nil +} + +func (a *AFDOriginsServerTransport) dispatchBeginUpdate(req *http.Request) (*http.Response, error) { + if a.srv.BeginUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginUpdate not implemented")} + } + beginUpdate := a.beginUpdate.get(req) + if beginUpdate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/originGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/origins/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.AFDOriginUpdateParameters](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + originGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("originGroupName")]) + if err != nil { + return nil, err + } + originNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("originName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.BeginUpdate(req.Context(), resourceGroupNameParam, profileNameParam, originGroupNameParam, originNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginUpdate = &respr + a.beginUpdate.add(req, beginUpdate) + } + + resp, err := server.PollerResponderNext(beginUpdate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + a.beginUpdate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginUpdate) { + a.beginUpdate.remove(req) + } + + return resp, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/afdprofiles_server.go b/sdk/resourcemanager/cdn/armcdn/fake/afdprofiles_server.go new file mode 100644 index 000000000000..2705d16fd7d0 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/afdprofiles_server.go @@ -0,0 +1,298 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" + "net/http" + "net/url" + "regexp" +) + +// AFDProfilesServer is a fake server for instances of the armcdn.AFDProfilesClient type. +type AFDProfilesServer struct { + // CheckEndpointNameAvailability is the fake for method AFDProfilesClient.CheckEndpointNameAvailability + // HTTP status codes to indicate success: http.StatusOK + CheckEndpointNameAvailability func(ctx context.Context, resourceGroupName string, profileName string, checkEndpointNameAvailabilityInput armcdn.CheckEndpointNameAvailabilityInput, options *armcdn.AFDProfilesClientCheckEndpointNameAvailabilityOptions) (resp azfake.Responder[armcdn.AFDProfilesClientCheckEndpointNameAvailabilityResponse], errResp azfake.ErrorResponder) + + // CheckHostNameAvailability is the fake for method AFDProfilesClient.CheckHostNameAvailability + // HTTP status codes to indicate success: http.StatusOK + CheckHostNameAvailability func(ctx context.Context, resourceGroupName string, profileName string, checkHostNameAvailabilityInput armcdn.CheckHostNameAvailabilityInput, options *armcdn.AFDProfilesClientCheckHostNameAvailabilityOptions) (resp azfake.Responder[armcdn.AFDProfilesClientCheckHostNameAvailabilityResponse], errResp azfake.ErrorResponder) + + // NewListResourceUsagePager is the fake for method AFDProfilesClient.NewListResourceUsagePager + // HTTP status codes to indicate success: http.StatusOK + NewListResourceUsagePager func(resourceGroupName string, profileName string, options *armcdn.AFDProfilesClientListResourceUsageOptions) (resp azfake.PagerResponder[armcdn.AFDProfilesClientListResourceUsageResponse]) + + // BeginUpgrade is the fake for method AFDProfilesClient.BeginUpgrade + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginUpgrade func(ctx context.Context, resourceGroupName string, profileName string, profileUpgradeParameters armcdn.ProfileUpgradeParameters, options *armcdn.AFDProfilesClientBeginUpgradeOptions) (resp azfake.PollerResponder[armcdn.AFDProfilesClientUpgradeResponse], errResp azfake.ErrorResponder) + + // ValidateSecret is the fake for method AFDProfilesClient.ValidateSecret + // HTTP status codes to indicate success: http.StatusOK + ValidateSecret func(ctx context.Context, resourceGroupName string, profileName string, validateSecretInput armcdn.ValidateSecretInput, options *armcdn.AFDProfilesClientValidateSecretOptions) (resp azfake.Responder[armcdn.AFDProfilesClientValidateSecretResponse], errResp azfake.ErrorResponder) +} + +// NewAFDProfilesServerTransport creates a new instance of AFDProfilesServerTransport with the provided implementation. +// The returned AFDProfilesServerTransport instance is connected to an instance of armcdn.AFDProfilesClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewAFDProfilesServerTransport(srv *AFDProfilesServer) *AFDProfilesServerTransport { + return &AFDProfilesServerTransport{ + srv: srv, + newListResourceUsagePager: newTracker[azfake.PagerResponder[armcdn.AFDProfilesClientListResourceUsageResponse]](), + beginUpgrade: newTracker[azfake.PollerResponder[armcdn.AFDProfilesClientUpgradeResponse]](), + } +} + +// AFDProfilesServerTransport connects instances of armcdn.AFDProfilesClient to instances of AFDProfilesServer. +// Don't use this type directly, use NewAFDProfilesServerTransport instead. +type AFDProfilesServerTransport struct { + srv *AFDProfilesServer + newListResourceUsagePager *tracker[azfake.PagerResponder[armcdn.AFDProfilesClientListResourceUsageResponse]] + beginUpgrade *tracker[azfake.PollerResponder[armcdn.AFDProfilesClientUpgradeResponse]] +} + +// Do implements the policy.Transporter interface for AFDProfilesServerTransport. +func (a *AFDProfilesServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "AFDProfilesClient.CheckEndpointNameAvailability": + resp, err = a.dispatchCheckEndpointNameAvailability(req) + case "AFDProfilesClient.CheckHostNameAvailability": + resp, err = a.dispatchCheckHostNameAvailability(req) + case "AFDProfilesClient.NewListResourceUsagePager": + resp, err = a.dispatchNewListResourceUsagePager(req) + case "AFDProfilesClient.BeginUpgrade": + resp, err = a.dispatchBeginUpgrade(req) + case "AFDProfilesClient.ValidateSecret": + resp, err = a.dispatchValidateSecret(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (a *AFDProfilesServerTransport) dispatchCheckEndpointNameAvailability(req *http.Request) (*http.Response, error) { + if a.srv.CheckEndpointNameAvailability == nil { + return nil, &nonRetriableError{errors.New("fake for method CheckEndpointNameAvailability not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/checkEndpointNameAvailability` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.CheckEndpointNameAvailabilityInput](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.CheckEndpointNameAvailability(req.Context(), resourceGroupNameParam, profileNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).CheckEndpointNameAvailabilityOutput, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (a *AFDProfilesServerTransport) dispatchCheckHostNameAvailability(req *http.Request) (*http.Response, error) { + if a.srv.CheckHostNameAvailability == nil { + return nil, &nonRetriableError{errors.New("fake for method CheckHostNameAvailability not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/checkHostNameAvailability` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.CheckHostNameAvailabilityInput](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.CheckHostNameAvailability(req.Context(), resourceGroupNameParam, profileNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).CheckNameAvailabilityOutput, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (a *AFDProfilesServerTransport) dispatchNewListResourceUsagePager(req *http.Request) (*http.Response, error) { + if a.srv.NewListResourceUsagePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListResourceUsagePager not implemented")} + } + newListResourceUsagePager := a.newListResourceUsagePager.get(req) + if newListResourceUsagePager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/usages` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + resp := a.srv.NewListResourceUsagePager(resourceGroupNameParam, profileNameParam, nil) + newListResourceUsagePager = &resp + a.newListResourceUsagePager.add(req, newListResourceUsagePager) + server.PagerResponderInjectNextLinks(newListResourceUsagePager, req, func(page *armcdn.AFDProfilesClientListResourceUsageResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListResourceUsagePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + a.newListResourceUsagePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListResourceUsagePager) { + a.newListResourceUsagePager.remove(req) + } + return resp, nil +} + +func (a *AFDProfilesServerTransport) dispatchBeginUpgrade(req *http.Request) (*http.Response, error) { + if a.srv.BeginUpgrade == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginUpgrade not implemented")} + } + beginUpgrade := a.beginUpgrade.get(req) + if beginUpgrade == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/upgrade` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.ProfileUpgradeParameters](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.BeginUpgrade(req.Context(), resourceGroupNameParam, profileNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginUpgrade = &respr + a.beginUpgrade.add(req, beginUpgrade) + } + + resp, err := server.PollerResponderNext(beginUpgrade, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + a.beginUpgrade.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginUpgrade) { + a.beginUpgrade.remove(req) + } + + return resp, nil +} + +func (a *AFDProfilesServerTransport) dispatchValidateSecret(req *http.Request) (*http.Response, error) { + if a.srv.ValidateSecret == nil { + return nil, &nonRetriableError{errors.New("fake for method ValidateSecret not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/validateSecret` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.ValidateSecretInput](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.ValidateSecret(req.Context(), resourceGroupNameParam, profileNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ValidateSecretOutput, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/customdomains_server.go b/sdk/resourcemanager/cdn/armcdn/fake/customdomains_server.go new file mode 100644 index 000000000000..c527697fda24 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/customdomains_server.go @@ -0,0 +1,423 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" + "net/http" + "net/url" + "reflect" + "regexp" +) + +// CustomDomainsServer is a fake server for instances of the armcdn.CustomDomainsClient type. +type CustomDomainsServer struct { + // BeginCreate is the fake for method CustomDomainsClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated, http.StatusAccepted + BeginCreate func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, customDomainName string, customDomainProperties armcdn.CustomDomainParameters, options *armcdn.CustomDomainsClientBeginCreateOptions) (resp azfake.PollerResponder[armcdn.CustomDomainsClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method CustomDomainsClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, customDomainName string, options *armcdn.CustomDomainsClientBeginDeleteOptions) (resp azfake.PollerResponder[armcdn.CustomDomainsClientDeleteResponse], errResp azfake.ErrorResponder) + + // BeginDisableCustomHTTPS is the fake for method CustomDomainsClient.BeginDisableCustomHTTPS + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginDisableCustomHTTPS func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, customDomainName string, options *armcdn.CustomDomainsClientBeginDisableCustomHTTPSOptions) (resp azfake.PollerResponder[armcdn.CustomDomainsClientDisableCustomHTTPSResponse], errResp azfake.ErrorResponder) + + // BeginEnableCustomHTTPS is the fake for method CustomDomainsClient.BeginEnableCustomHTTPS + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginEnableCustomHTTPS func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, customDomainName string, options *armcdn.CustomDomainsClientBeginEnableCustomHTTPSOptions) (resp azfake.PollerResponder[armcdn.CustomDomainsClientEnableCustomHTTPSResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method CustomDomainsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, customDomainName string, options *armcdn.CustomDomainsClientGetOptions) (resp azfake.Responder[armcdn.CustomDomainsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByEndpointPager is the fake for method CustomDomainsClient.NewListByEndpointPager + // HTTP status codes to indicate success: http.StatusOK + NewListByEndpointPager func(resourceGroupName string, profileName string, endpointName string, options *armcdn.CustomDomainsClientListByEndpointOptions) (resp azfake.PagerResponder[armcdn.CustomDomainsClientListByEndpointResponse]) +} + +// NewCustomDomainsServerTransport creates a new instance of CustomDomainsServerTransport with the provided implementation. +// The returned CustomDomainsServerTransport instance is connected to an instance of armcdn.CustomDomainsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewCustomDomainsServerTransport(srv *CustomDomainsServer) *CustomDomainsServerTransport { + return &CustomDomainsServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armcdn.CustomDomainsClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armcdn.CustomDomainsClientDeleteResponse]](), + beginDisableCustomHTTPS: newTracker[azfake.PollerResponder[armcdn.CustomDomainsClientDisableCustomHTTPSResponse]](), + beginEnableCustomHTTPS: newTracker[azfake.PollerResponder[armcdn.CustomDomainsClientEnableCustomHTTPSResponse]](), + newListByEndpointPager: newTracker[azfake.PagerResponder[armcdn.CustomDomainsClientListByEndpointResponse]](), + } +} + +// CustomDomainsServerTransport connects instances of armcdn.CustomDomainsClient to instances of CustomDomainsServer. +// Don't use this type directly, use NewCustomDomainsServerTransport instead. +type CustomDomainsServerTransport struct { + srv *CustomDomainsServer + beginCreate *tracker[azfake.PollerResponder[armcdn.CustomDomainsClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armcdn.CustomDomainsClientDeleteResponse]] + beginDisableCustomHTTPS *tracker[azfake.PollerResponder[armcdn.CustomDomainsClientDisableCustomHTTPSResponse]] + beginEnableCustomHTTPS *tracker[azfake.PollerResponder[armcdn.CustomDomainsClientEnableCustomHTTPSResponse]] + newListByEndpointPager *tracker[azfake.PagerResponder[armcdn.CustomDomainsClientListByEndpointResponse]] +} + +// Do implements the policy.Transporter interface for CustomDomainsServerTransport. +func (c *CustomDomainsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "CustomDomainsClient.BeginCreate": + resp, err = c.dispatchBeginCreate(req) + case "CustomDomainsClient.BeginDelete": + resp, err = c.dispatchBeginDelete(req) + case "CustomDomainsClient.BeginDisableCustomHTTPS": + resp, err = c.dispatchBeginDisableCustomHTTPS(req) + case "CustomDomainsClient.BeginEnableCustomHTTPS": + resp, err = c.dispatchBeginEnableCustomHTTPS(req) + case "CustomDomainsClient.Get": + resp, err = c.dispatchGet(req) + case "CustomDomainsClient.NewListByEndpointPager": + resp, err = c.dispatchNewListByEndpointPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (c *CustomDomainsServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if c.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := c.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/customDomains/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.CustomDomainParameters](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + customDomainNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("customDomainName")]) + if err != nil { + return nil, err + } + respr, errRespr := c.srv.BeginCreate(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, customDomainNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + c.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated, http.StatusAccepted}, resp.StatusCode) { + c.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + c.beginCreate.remove(req) + } + + return resp, nil +} + +func (c *CustomDomainsServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if c.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := c.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/customDomains/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + customDomainNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("customDomainName")]) + if err != nil { + return nil, err + } + respr, errRespr := c.srv.BeginDelete(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, customDomainNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + c.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + c.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + c.beginDelete.remove(req) + } + + return resp, nil +} + +func (c *CustomDomainsServerTransport) dispatchBeginDisableCustomHTTPS(req *http.Request) (*http.Response, error) { + if c.srv.BeginDisableCustomHTTPS == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDisableCustomHTTPS not implemented")} + } + beginDisableCustomHTTPS := c.beginDisableCustomHTTPS.get(req) + if beginDisableCustomHTTPS == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/customDomains/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/disableCustomHttps` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + customDomainNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("customDomainName")]) + if err != nil { + return nil, err + } + respr, errRespr := c.srv.BeginDisableCustomHTTPS(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, customDomainNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDisableCustomHTTPS = &respr + c.beginDisableCustomHTTPS.add(req, beginDisableCustomHTTPS) + } + + resp, err := server.PollerResponderNext(beginDisableCustomHTTPS, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + c.beginDisableCustomHTTPS.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDisableCustomHTTPS) { + c.beginDisableCustomHTTPS.remove(req) + } + + return resp, nil +} + +func (c *CustomDomainsServerTransport) dispatchBeginEnableCustomHTTPS(req *http.Request) (*http.Response, error) { + if c.srv.BeginEnableCustomHTTPS == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginEnableCustomHTTPS not implemented")} + } + beginEnableCustomHTTPS := c.beginEnableCustomHTTPS.get(req) + if beginEnableCustomHTTPS == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/customDomains/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/enableCustomHttps` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + raw, err := readRequestBody(req) + if err != nil { + return nil, err + } + body, err := unmarshalCustomDomainHTTPSParametersClassification(raw) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + customDomainNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("customDomainName")]) + if err != nil { + return nil, err + } + var options *armcdn.CustomDomainsClientBeginEnableCustomHTTPSOptions + if !reflect.ValueOf(body).IsZero() { + options = &armcdn.CustomDomainsClientBeginEnableCustomHTTPSOptions{ + CustomDomainHTTPSParameters: body, + } + } + respr, errRespr := c.srv.BeginEnableCustomHTTPS(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, customDomainNameParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginEnableCustomHTTPS = &respr + c.beginEnableCustomHTTPS.add(req, beginEnableCustomHTTPS) + } + + resp, err := server.PollerResponderNext(beginEnableCustomHTTPS, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + c.beginEnableCustomHTTPS.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginEnableCustomHTTPS) { + c.beginEnableCustomHTTPS.remove(req) + } + + return resp, nil +} + +func (c *CustomDomainsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if c.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/customDomains/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + customDomainNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("customDomainName")]) + if err != nil { + return nil, err + } + respr, errRespr := c.srv.Get(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, customDomainNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).CustomDomain, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *CustomDomainsServerTransport) dispatchNewListByEndpointPager(req *http.Request) (*http.Response, error) { + if c.srv.NewListByEndpointPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByEndpointPager not implemented")} + } + newListByEndpointPager := c.newListByEndpointPager.get(req) + if newListByEndpointPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/customDomains` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + resp := c.srv.NewListByEndpointPager(resourceGroupNameParam, profileNameParam, endpointNameParam, nil) + newListByEndpointPager = &resp + c.newListByEndpointPager.add(req, newListByEndpointPager) + server.PagerResponderInjectNextLinks(newListByEndpointPager, req, func(page *armcdn.CustomDomainsClientListByEndpointResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByEndpointPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + c.newListByEndpointPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByEndpointPager) { + c.newListByEndpointPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/edgenodes_server.go b/sdk/resourcemanager/cdn/armcdn/fake/edgenodes_server.go new file mode 100644 index 000000000000..74ab17437ce1 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/edgenodes_server.go @@ -0,0 +1,96 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" + "net/http" +) + +// EdgeNodesServer is a fake server for instances of the armcdn.EdgeNodesClient type. +type EdgeNodesServer struct { + // NewListPager is the fake for method EdgeNodesClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armcdn.EdgeNodesClientListOptions) (resp azfake.PagerResponder[armcdn.EdgeNodesClientListResponse]) +} + +// NewEdgeNodesServerTransport creates a new instance of EdgeNodesServerTransport with the provided implementation. +// The returned EdgeNodesServerTransport instance is connected to an instance of armcdn.EdgeNodesClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewEdgeNodesServerTransport(srv *EdgeNodesServer) *EdgeNodesServerTransport { + return &EdgeNodesServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armcdn.EdgeNodesClientListResponse]](), + } +} + +// EdgeNodesServerTransport connects instances of armcdn.EdgeNodesClient to instances of EdgeNodesServer. +// Don't use this type directly, use NewEdgeNodesServerTransport instead. +type EdgeNodesServerTransport struct { + srv *EdgeNodesServer + newListPager *tracker[azfake.PagerResponder[armcdn.EdgeNodesClientListResponse]] +} + +// Do implements the policy.Transporter interface for EdgeNodesServerTransport. +func (e *EdgeNodesServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "EdgeNodesClient.NewListPager": + resp, err = e.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (e *EdgeNodesServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if e.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := e.newListPager.get(req) + if newListPager == nil { + resp := e.srv.NewListPager(nil) + newListPager = &resp + e.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armcdn.EdgeNodesClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + e.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + e.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/endpoints_server.go b/sdk/resourcemanager/cdn/armcdn/fake/endpoints_server.go new file mode 100644 index 000000000000..ba0342c7f429 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/endpoints_server.go @@ -0,0 +1,664 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" + "net/http" + "net/url" + "regexp" +) + +// EndpointsServer is a fake server for instances of the armcdn.EndpointsClient type. +type EndpointsServer struct { + // BeginCreate is the fake for method EndpointsClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated, http.StatusAccepted + BeginCreate func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, endpoint armcdn.Endpoint, options *armcdn.EndpointsClientBeginCreateOptions) (resp azfake.PollerResponder[armcdn.EndpointsClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method EndpointsClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, options *armcdn.EndpointsClientBeginDeleteOptions) (resp azfake.PollerResponder[armcdn.EndpointsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method EndpointsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, options *armcdn.EndpointsClientGetOptions) (resp azfake.Responder[armcdn.EndpointsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByProfilePager is the fake for method EndpointsClient.NewListByProfilePager + // HTTP status codes to indicate success: http.StatusOK + NewListByProfilePager func(resourceGroupName string, profileName string, options *armcdn.EndpointsClientListByProfileOptions) (resp azfake.PagerResponder[armcdn.EndpointsClientListByProfileResponse]) + + // NewListResourceUsagePager is the fake for method EndpointsClient.NewListResourceUsagePager + // HTTP status codes to indicate success: http.StatusOK + NewListResourceUsagePager func(resourceGroupName string, profileName string, endpointName string, options *armcdn.EndpointsClientListResourceUsageOptions) (resp azfake.PagerResponder[armcdn.EndpointsClientListResourceUsageResponse]) + + // BeginLoadContent is the fake for method EndpointsClient.BeginLoadContent + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginLoadContent func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, contentFilePaths armcdn.LoadParameters, options *armcdn.EndpointsClientBeginLoadContentOptions) (resp azfake.PollerResponder[armcdn.EndpointsClientLoadContentResponse], errResp azfake.ErrorResponder) + + // BeginPurgeContent is the fake for method EndpointsClient.BeginPurgeContent + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginPurgeContent func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, contentFilePaths armcdn.PurgeParameters, options *armcdn.EndpointsClientBeginPurgeContentOptions) (resp azfake.PollerResponder[armcdn.EndpointsClientPurgeContentResponse], errResp azfake.ErrorResponder) + + // BeginStart is the fake for method EndpointsClient.BeginStart + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginStart func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, options *armcdn.EndpointsClientBeginStartOptions) (resp azfake.PollerResponder[armcdn.EndpointsClientStartResponse], errResp azfake.ErrorResponder) + + // BeginStop is the fake for method EndpointsClient.BeginStop + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginStop func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, options *armcdn.EndpointsClientBeginStopOptions) (resp azfake.PollerResponder[armcdn.EndpointsClientStopResponse], errResp azfake.ErrorResponder) + + // BeginUpdate is the fake for method EndpointsClient.BeginUpdate + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginUpdate func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, endpointUpdateProperties armcdn.EndpointUpdateParameters, options *armcdn.EndpointsClientBeginUpdateOptions) (resp azfake.PollerResponder[armcdn.EndpointsClientUpdateResponse], errResp azfake.ErrorResponder) + + // ValidateCustomDomain is the fake for method EndpointsClient.ValidateCustomDomain + // HTTP status codes to indicate success: http.StatusOK + ValidateCustomDomain func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, customDomainProperties armcdn.ValidateCustomDomainInput, options *armcdn.EndpointsClientValidateCustomDomainOptions) (resp azfake.Responder[armcdn.EndpointsClientValidateCustomDomainResponse], errResp azfake.ErrorResponder) +} + +// NewEndpointsServerTransport creates a new instance of EndpointsServerTransport with the provided implementation. +// The returned EndpointsServerTransport instance is connected to an instance of armcdn.EndpointsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewEndpointsServerTransport(srv *EndpointsServer) *EndpointsServerTransport { + return &EndpointsServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armcdn.EndpointsClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armcdn.EndpointsClientDeleteResponse]](), + newListByProfilePager: newTracker[azfake.PagerResponder[armcdn.EndpointsClientListByProfileResponse]](), + newListResourceUsagePager: newTracker[azfake.PagerResponder[armcdn.EndpointsClientListResourceUsageResponse]](), + beginLoadContent: newTracker[azfake.PollerResponder[armcdn.EndpointsClientLoadContentResponse]](), + beginPurgeContent: newTracker[azfake.PollerResponder[armcdn.EndpointsClientPurgeContentResponse]](), + beginStart: newTracker[azfake.PollerResponder[armcdn.EndpointsClientStartResponse]](), + beginStop: newTracker[azfake.PollerResponder[armcdn.EndpointsClientStopResponse]](), + beginUpdate: newTracker[azfake.PollerResponder[armcdn.EndpointsClientUpdateResponse]](), + } +} + +// EndpointsServerTransport connects instances of armcdn.EndpointsClient to instances of EndpointsServer. +// Don't use this type directly, use NewEndpointsServerTransport instead. +type EndpointsServerTransport struct { + srv *EndpointsServer + beginCreate *tracker[azfake.PollerResponder[armcdn.EndpointsClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armcdn.EndpointsClientDeleteResponse]] + newListByProfilePager *tracker[azfake.PagerResponder[armcdn.EndpointsClientListByProfileResponse]] + newListResourceUsagePager *tracker[azfake.PagerResponder[armcdn.EndpointsClientListResourceUsageResponse]] + beginLoadContent *tracker[azfake.PollerResponder[armcdn.EndpointsClientLoadContentResponse]] + beginPurgeContent *tracker[azfake.PollerResponder[armcdn.EndpointsClientPurgeContentResponse]] + beginStart *tracker[azfake.PollerResponder[armcdn.EndpointsClientStartResponse]] + beginStop *tracker[azfake.PollerResponder[armcdn.EndpointsClientStopResponse]] + beginUpdate *tracker[azfake.PollerResponder[armcdn.EndpointsClientUpdateResponse]] +} + +// Do implements the policy.Transporter interface for EndpointsServerTransport. +func (e *EndpointsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "EndpointsClient.BeginCreate": + resp, err = e.dispatchBeginCreate(req) + case "EndpointsClient.BeginDelete": + resp, err = e.dispatchBeginDelete(req) + case "EndpointsClient.Get": + resp, err = e.dispatchGet(req) + case "EndpointsClient.NewListByProfilePager": + resp, err = e.dispatchNewListByProfilePager(req) + case "EndpointsClient.NewListResourceUsagePager": + resp, err = e.dispatchNewListResourceUsagePager(req) + case "EndpointsClient.BeginLoadContent": + resp, err = e.dispatchBeginLoadContent(req) + case "EndpointsClient.BeginPurgeContent": + resp, err = e.dispatchBeginPurgeContent(req) + case "EndpointsClient.BeginStart": + resp, err = e.dispatchBeginStart(req) + case "EndpointsClient.BeginStop": + resp, err = e.dispatchBeginStop(req) + case "EndpointsClient.BeginUpdate": + resp, err = e.dispatchBeginUpdate(req) + case "EndpointsClient.ValidateCustomDomain": + resp, err = e.dispatchValidateCustomDomain(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (e *EndpointsServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if e.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := e.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.Endpoint](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + respr, errRespr := e.srv.BeginCreate(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + e.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated, http.StatusAccepted}, resp.StatusCode) { + e.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + e.beginCreate.remove(req) + } + + return resp, nil +} + +func (e *EndpointsServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if e.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := e.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + respr, errRespr := e.srv.BeginDelete(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + e.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + e.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + e.beginDelete.remove(req) + } + + return resp, nil +} + +func (e *EndpointsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if e.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + respr, errRespr := e.srv.Get(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Endpoint, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (e *EndpointsServerTransport) dispatchNewListByProfilePager(req *http.Request) (*http.Response, error) { + if e.srv.NewListByProfilePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByProfilePager not implemented")} + } + newListByProfilePager := e.newListByProfilePager.get(req) + if newListByProfilePager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + resp := e.srv.NewListByProfilePager(resourceGroupNameParam, profileNameParam, nil) + newListByProfilePager = &resp + e.newListByProfilePager.add(req, newListByProfilePager) + server.PagerResponderInjectNextLinks(newListByProfilePager, req, func(page *armcdn.EndpointsClientListByProfileResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByProfilePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + e.newListByProfilePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByProfilePager) { + e.newListByProfilePager.remove(req) + } + return resp, nil +} + +func (e *EndpointsServerTransport) dispatchNewListResourceUsagePager(req *http.Request) (*http.Response, error) { + if e.srv.NewListResourceUsagePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListResourceUsagePager not implemented")} + } + newListResourceUsagePager := e.newListResourceUsagePager.get(req) + if newListResourceUsagePager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/checkResourceUsage` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + resp := e.srv.NewListResourceUsagePager(resourceGroupNameParam, profileNameParam, endpointNameParam, nil) + newListResourceUsagePager = &resp + e.newListResourceUsagePager.add(req, newListResourceUsagePager) + server.PagerResponderInjectNextLinks(newListResourceUsagePager, req, func(page *armcdn.EndpointsClientListResourceUsageResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListResourceUsagePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + e.newListResourceUsagePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListResourceUsagePager) { + e.newListResourceUsagePager.remove(req) + } + return resp, nil +} + +func (e *EndpointsServerTransport) dispatchBeginLoadContent(req *http.Request) (*http.Response, error) { + if e.srv.BeginLoadContent == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginLoadContent not implemented")} + } + beginLoadContent := e.beginLoadContent.get(req) + if beginLoadContent == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/load` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.LoadParameters](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + respr, errRespr := e.srv.BeginLoadContent(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginLoadContent = &respr + e.beginLoadContent.add(req, beginLoadContent) + } + + resp, err := server.PollerResponderNext(beginLoadContent, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + e.beginLoadContent.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginLoadContent) { + e.beginLoadContent.remove(req) + } + + return resp, nil +} + +func (e *EndpointsServerTransport) dispatchBeginPurgeContent(req *http.Request) (*http.Response, error) { + if e.srv.BeginPurgeContent == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginPurgeContent not implemented")} + } + beginPurgeContent := e.beginPurgeContent.get(req) + if beginPurgeContent == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/purge` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.PurgeParameters](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + respr, errRespr := e.srv.BeginPurgeContent(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginPurgeContent = &respr + e.beginPurgeContent.add(req, beginPurgeContent) + } + + resp, err := server.PollerResponderNext(beginPurgeContent, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + e.beginPurgeContent.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginPurgeContent) { + e.beginPurgeContent.remove(req) + } + + return resp, nil +} + +func (e *EndpointsServerTransport) dispatchBeginStart(req *http.Request) (*http.Response, error) { + if e.srv.BeginStart == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginStart not implemented")} + } + beginStart := e.beginStart.get(req) + if beginStart == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/start` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + respr, errRespr := e.srv.BeginStart(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginStart = &respr + e.beginStart.add(req, beginStart) + } + + resp, err := server.PollerResponderNext(beginStart, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + e.beginStart.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginStart) { + e.beginStart.remove(req) + } + + return resp, nil +} + +func (e *EndpointsServerTransport) dispatchBeginStop(req *http.Request) (*http.Response, error) { + if e.srv.BeginStop == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginStop not implemented")} + } + beginStop := e.beginStop.get(req) + if beginStop == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/stop` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + respr, errRespr := e.srv.BeginStop(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginStop = &respr + e.beginStop.add(req, beginStop) + } + + resp, err := server.PollerResponderNext(beginStop, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + e.beginStop.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginStop) { + e.beginStop.remove(req) + } + + return resp, nil +} + +func (e *EndpointsServerTransport) dispatchBeginUpdate(req *http.Request) (*http.Response, error) { + if e.srv.BeginUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginUpdate not implemented")} + } + beginUpdate := e.beginUpdate.get(req) + if beginUpdate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.EndpointUpdateParameters](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + respr, errRespr := e.srv.BeginUpdate(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginUpdate = &respr + e.beginUpdate.add(req, beginUpdate) + } + + resp, err := server.PollerResponderNext(beginUpdate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + e.beginUpdate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginUpdate) { + e.beginUpdate.remove(req) + } + + return resp, nil +} + +func (e *EndpointsServerTransport) dispatchValidateCustomDomain(req *http.Request) (*http.Response, error) { + if e.srv.ValidateCustomDomain == nil { + return nil, &nonRetriableError{errors.New("fake for method ValidateCustomDomain not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/validateCustomDomain` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.ValidateCustomDomainInput](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + respr, errRespr := e.srv.ValidateCustomDomain(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ValidateCustomDomainOutput, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/internal.go b/sdk/resourcemanager/cdn/armcdn/fake/internal.go new file mode 100644 index 000000000000..51c60fb49a12 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/internal.go @@ -0,0 +1,85 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "io" + "net/http" + "sync" +) + +type nonRetriableError struct { + error +} + +func (nonRetriableError) NonRetriable() { + // marker method +} + +func contains[T comparable](s []T, v T) bool { + for _, vv := range s { + if vv == v { + return true + } + } + return false +} + +func parseWithCast[T any](v string, parse func(v string) (T, error)) (T, error) { + t, err := parse(v) + if err != nil { + return *new(T), err + } + return t, err +} + +func readRequestBody(req *http.Request) ([]byte, error) { + if req.Body == nil { + return nil, nil + } + body, err := io.ReadAll(req.Body) + if err != nil { + return nil, err + } + req.Body.Close() + return body, nil +} + +func newTracker[T any]() *tracker[T] { + return &tracker[T]{ + items: map[string]*T{}, + } +} + +type tracker[T any] struct { + items map[string]*T + mu sync.Mutex +} + +func (p *tracker[T]) get(req *http.Request) *T { + p.mu.Lock() + defer p.mu.Unlock() + if item, ok := p.items[server.SanitizePagerPollerPath(req.URL.Path)]; ok { + return item + } + return nil +} + +func (p *tracker[T]) add(req *http.Request, item *T) { + p.mu.Lock() + defer p.mu.Unlock() + p.items[server.SanitizePagerPollerPath(req.URL.Path)] = item +} + +func (p *tracker[T]) remove(req *http.Request) { + p.mu.Lock() + defer p.mu.Unlock() + delete(p.items, server.SanitizePagerPollerPath(req.URL.Path)) +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/loganalytics_server.go b/sdk/resourcemanager/cdn/armcdn/fake/loganalytics_server.go new file mode 100644 index 000000000000..9348004032ae --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/loganalytics_server.go @@ -0,0 +1,643 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" + "net/http" + "net/url" + "regexp" + "strconv" + "time" +) + +// LogAnalyticsServer is a fake server for instances of the armcdn.LogAnalyticsClient type. +type LogAnalyticsServer struct { + // GetLogAnalyticsLocations is the fake for method LogAnalyticsClient.GetLogAnalyticsLocations + // HTTP status codes to indicate success: http.StatusOK + GetLogAnalyticsLocations func(ctx context.Context, resourceGroupName string, profileName string, options *armcdn.LogAnalyticsClientGetLogAnalyticsLocationsOptions) (resp azfake.Responder[armcdn.LogAnalyticsClientGetLogAnalyticsLocationsResponse], errResp azfake.ErrorResponder) + + // GetLogAnalyticsMetrics is the fake for method LogAnalyticsClient.GetLogAnalyticsMetrics + // HTTP status codes to indicate success: http.StatusOK + GetLogAnalyticsMetrics func(ctx context.Context, resourceGroupName string, profileName string, metrics []armcdn.LogMetric, dateTimeBegin time.Time, dateTimeEnd time.Time, granularity armcdn.LogMetricsGranularity, customDomains []string, protocols []string, options *armcdn.LogAnalyticsClientGetLogAnalyticsMetricsOptions) (resp azfake.Responder[armcdn.LogAnalyticsClientGetLogAnalyticsMetricsResponse], errResp azfake.ErrorResponder) + + // GetLogAnalyticsRankings is the fake for method LogAnalyticsClient.GetLogAnalyticsRankings + // HTTP status codes to indicate success: http.StatusOK + GetLogAnalyticsRankings func(ctx context.Context, resourceGroupName string, profileName string, rankings []armcdn.LogRanking, metrics []armcdn.LogRankingMetric, maxRanking int32, dateTimeBegin time.Time, dateTimeEnd time.Time, options *armcdn.LogAnalyticsClientGetLogAnalyticsRankingsOptions) (resp azfake.Responder[armcdn.LogAnalyticsClientGetLogAnalyticsRankingsResponse], errResp azfake.ErrorResponder) + + // GetLogAnalyticsResources is the fake for method LogAnalyticsClient.GetLogAnalyticsResources + // HTTP status codes to indicate success: http.StatusOK + GetLogAnalyticsResources func(ctx context.Context, resourceGroupName string, profileName string, options *armcdn.LogAnalyticsClientGetLogAnalyticsResourcesOptions) (resp azfake.Responder[armcdn.LogAnalyticsClientGetLogAnalyticsResourcesResponse], errResp azfake.ErrorResponder) + + // GetWafLogAnalyticsMetrics is the fake for method LogAnalyticsClient.GetWafLogAnalyticsMetrics + // HTTP status codes to indicate success: http.StatusOK + GetWafLogAnalyticsMetrics func(ctx context.Context, resourceGroupName string, profileName string, metrics []armcdn.WafMetric, dateTimeBegin time.Time, dateTimeEnd time.Time, granularity armcdn.WafGranularity, options *armcdn.LogAnalyticsClientGetWafLogAnalyticsMetricsOptions) (resp azfake.Responder[armcdn.LogAnalyticsClientGetWafLogAnalyticsMetricsResponse], errResp azfake.ErrorResponder) + + // GetWafLogAnalyticsRankings is the fake for method LogAnalyticsClient.GetWafLogAnalyticsRankings + // HTTP status codes to indicate success: http.StatusOK + GetWafLogAnalyticsRankings func(ctx context.Context, resourceGroupName string, profileName string, metrics []armcdn.WafMetric, dateTimeBegin time.Time, dateTimeEnd time.Time, maxRanking int32, rankings []armcdn.WafRankingType, options *armcdn.LogAnalyticsClientGetWafLogAnalyticsRankingsOptions) (resp azfake.Responder[armcdn.LogAnalyticsClientGetWafLogAnalyticsRankingsResponse], errResp azfake.ErrorResponder) +} + +// NewLogAnalyticsServerTransport creates a new instance of LogAnalyticsServerTransport with the provided implementation. +// The returned LogAnalyticsServerTransport instance is connected to an instance of armcdn.LogAnalyticsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewLogAnalyticsServerTransport(srv *LogAnalyticsServer) *LogAnalyticsServerTransport { + return &LogAnalyticsServerTransport{srv: srv} +} + +// LogAnalyticsServerTransport connects instances of armcdn.LogAnalyticsClient to instances of LogAnalyticsServer. +// Don't use this type directly, use NewLogAnalyticsServerTransport instead. +type LogAnalyticsServerTransport struct { + srv *LogAnalyticsServer +} + +// Do implements the policy.Transporter interface for LogAnalyticsServerTransport. +func (l *LogAnalyticsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "LogAnalyticsClient.GetLogAnalyticsLocations": + resp, err = l.dispatchGetLogAnalyticsLocations(req) + case "LogAnalyticsClient.GetLogAnalyticsMetrics": + resp, err = l.dispatchGetLogAnalyticsMetrics(req) + case "LogAnalyticsClient.GetLogAnalyticsRankings": + resp, err = l.dispatchGetLogAnalyticsRankings(req) + case "LogAnalyticsClient.GetLogAnalyticsResources": + resp, err = l.dispatchGetLogAnalyticsResources(req) + case "LogAnalyticsClient.GetWafLogAnalyticsMetrics": + resp, err = l.dispatchGetWafLogAnalyticsMetrics(req) + case "LogAnalyticsClient.GetWafLogAnalyticsRankings": + resp, err = l.dispatchGetWafLogAnalyticsRankings(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (l *LogAnalyticsServerTransport) dispatchGetLogAnalyticsLocations(req *http.Request) (*http.Response, error) { + if l.srv.GetLogAnalyticsLocations == nil { + return nil, &nonRetriableError{errors.New("fake for method GetLogAnalyticsLocations not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/getLogAnalyticsLocations` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + respr, errRespr := l.srv.GetLogAnalyticsLocations(req.Context(), resourceGroupNameParam, profileNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ContinentsResponse, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (l *LogAnalyticsServerTransport) dispatchGetLogAnalyticsMetrics(req *http.Request) (*http.Response, error) { + if l.srv.GetLogAnalyticsMetrics == nil { + return nil, &nonRetriableError{errors.New("fake for method GetLogAnalyticsMetrics not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/getLogAnalyticsMetrics` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + metricsEscaped := qp["metrics"] + metricsUnescaped := make([]string, len(metricsEscaped)) + for i, v := range metricsEscaped { + u, unescapeErr := url.QueryUnescape(v) + if unescapeErr != nil { + return nil, unescapeErr + } + metricsUnescaped[i] = u + } + metricsParam := make([]armcdn.LogMetric, len(metricsUnescaped)) + for i := 0; i < len(metricsUnescaped); i++ { + metricsParam[i] = armcdn.LogMetric(metricsUnescaped[i]) + } + dateTimeBeginUnescaped, err := url.QueryUnescape(qp.Get("dateTimeBegin")) + if err != nil { + return nil, err + } + dateTimeBeginParam, err := time.Parse(time.RFC3339Nano, dateTimeBeginUnescaped) + if err != nil { + return nil, err + } + dateTimeEndUnescaped, err := url.QueryUnescape(qp.Get("dateTimeEnd")) + if err != nil { + return nil, err + } + dateTimeEndParam, err := time.Parse(time.RFC3339Nano, dateTimeEndUnescaped) + if err != nil { + return nil, err + } + granularityParam, err := parseWithCast(qp.Get("granularity"), func(v string) (armcdn.LogMetricsGranularity, error) { + p, unescapeErr := url.QueryUnescape(v) + if unescapeErr != nil { + return "", unescapeErr + } + return armcdn.LogMetricsGranularity(p), nil + }) + if err != nil { + return nil, err + } + groupByEscaped := qp["groupBy"] + groupByUnescaped := make([]string, len(groupByEscaped)) + for i, v := range groupByEscaped { + u, unescapeErr := url.QueryUnescape(v) + if unescapeErr != nil { + return nil, unescapeErr + } + groupByUnescaped[i] = u + } + groupByParam := make([]armcdn.LogMetricsGroupBy, len(groupByUnescaped)) + for i := 0; i < len(groupByUnescaped); i++ { + groupByParam[i] = armcdn.LogMetricsGroupBy(groupByUnescaped[i]) + } + continentsEscaped := qp["continents"] + continentsParam := make([]string, len(continentsEscaped)) + for i, v := range continentsEscaped { + u, unescapeErr := url.QueryUnescape(v) + if unescapeErr != nil { + return nil, unescapeErr + } + continentsParam[i] = u + } + countryOrRegionsEscaped := qp["countryOrRegions"] + countryOrRegionsParam := make([]string, len(countryOrRegionsEscaped)) + for i, v := range countryOrRegionsEscaped { + u, unescapeErr := url.QueryUnescape(v) + if unescapeErr != nil { + return nil, unescapeErr + } + countryOrRegionsParam[i] = u + } + customDomainsEscaped := qp["customDomains"] + customDomainsParam := make([]string, len(customDomainsEscaped)) + for i, v := range customDomainsEscaped { + u, unescapeErr := url.QueryUnescape(v) + if unescapeErr != nil { + return nil, unescapeErr + } + customDomainsParam[i] = u + } + protocolsEscaped := qp["protocols"] + protocolsParam := make([]string, len(protocolsEscaped)) + for i, v := range protocolsEscaped { + u, unescapeErr := url.QueryUnescape(v) + if unescapeErr != nil { + return nil, unescapeErr + } + protocolsParam[i] = u + } + var options *armcdn.LogAnalyticsClientGetLogAnalyticsMetricsOptions + if len(groupByParam) > 0 || len(continentsParam) > 0 || len(countryOrRegionsParam) > 0 { + options = &armcdn.LogAnalyticsClientGetLogAnalyticsMetricsOptions{ + GroupBy: groupByParam, + Continents: continentsParam, + CountryOrRegions: countryOrRegionsParam, + } + } + respr, errRespr := l.srv.GetLogAnalyticsMetrics(req.Context(), resourceGroupNameParam, profileNameParam, metricsParam, dateTimeBeginParam, dateTimeEndParam, granularityParam, customDomainsParam, protocolsParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).MetricsResponse, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (l *LogAnalyticsServerTransport) dispatchGetLogAnalyticsRankings(req *http.Request) (*http.Response, error) { + if l.srv.GetLogAnalyticsRankings == nil { + return nil, &nonRetriableError{errors.New("fake for method GetLogAnalyticsRankings not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/getLogAnalyticsRankings` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + rankingsEscaped := qp["rankings"] + rankingsUnescaped := make([]string, len(rankingsEscaped)) + for i, v := range rankingsEscaped { + u, unescapeErr := url.QueryUnescape(v) + if unescapeErr != nil { + return nil, unescapeErr + } + rankingsUnescaped[i] = u + } + rankingsParam := make([]armcdn.LogRanking, len(rankingsUnescaped)) + for i := 0; i < len(rankingsUnescaped); i++ { + rankingsParam[i] = armcdn.LogRanking(rankingsUnescaped[i]) + } + metricsEscaped := qp["metrics"] + metricsUnescaped := make([]string, len(metricsEscaped)) + for i, v := range metricsEscaped { + u, unescapeErr := url.QueryUnescape(v) + if unescapeErr != nil { + return nil, unescapeErr + } + metricsUnescaped[i] = u + } + metricsParam := make([]armcdn.LogRankingMetric, len(metricsUnescaped)) + for i := 0; i < len(metricsUnescaped); i++ { + metricsParam[i] = armcdn.LogRankingMetric(metricsUnescaped[i]) + } + maxRankingUnescaped, err := url.QueryUnescape(qp.Get("maxRanking")) + if err != nil { + return nil, err + } + maxRankingParam, err := parseWithCast(maxRankingUnescaped, func(v string) (int32, error) { + p, parseErr := strconv.ParseInt(v, 10, 32) + if parseErr != nil { + return 0, parseErr + } + return int32(p), nil + }) + if err != nil { + return nil, err + } + dateTimeBeginUnescaped, err := url.QueryUnescape(qp.Get("dateTimeBegin")) + if err != nil { + return nil, err + } + dateTimeBeginParam, err := time.Parse(time.RFC3339Nano, dateTimeBeginUnescaped) + if err != nil { + return nil, err + } + dateTimeEndUnescaped, err := url.QueryUnescape(qp.Get("dateTimeEnd")) + if err != nil { + return nil, err + } + dateTimeEndParam, err := time.Parse(time.RFC3339Nano, dateTimeEndUnescaped) + if err != nil { + return nil, err + } + customDomainsEscaped := qp["customDomains"] + customDomainsParam := make([]string, len(customDomainsEscaped)) + for i, v := range customDomainsEscaped { + u, unescapeErr := url.QueryUnescape(v) + if unescapeErr != nil { + return nil, unescapeErr + } + customDomainsParam[i] = u + } + var options *armcdn.LogAnalyticsClientGetLogAnalyticsRankingsOptions + if len(customDomainsParam) > 0 { + options = &armcdn.LogAnalyticsClientGetLogAnalyticsRankingsOptions{ + CustomDomains: customDomainsParam, + } + } + respr, errRespr := l.srv.GetLogAnalyticsRankings(req.Context(), resourceGroupNameParam, profileNameParam, rankingsParam, metricsParam, maxRankingParam, dateTimeBeginParam, dateTimeEndParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).RankingsResponse, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (l *LogAnalyticsServerTransport) dispatchGetLogAnalyticsResources(req *http.Request) (*http.Response, error) { + if l.srv.GetLogAnalyticsResources == nil { + return nil, &nonRetriableError{errors.New("fake for method GetLogAnalyticsResources not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/getLogAnalyticsResources` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + respr, errRespr := l.srv.GetLogAnalyticsResources(req.Context(), resourceGroupNameParam, profileNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ResourcesResponse, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (l *LogAnalyticsServerTransport) dispatchGetWafLogAnalyticsMetrics(req *http.Request) (*http.Response, error) { + if l.srv.GetWafLogAnalyticsMetrics == nil { + return nil, &nonRetriableError{errors.New("fake for method GetWafLogAnalyticsMetrics not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/getWafLogAnalyticsMetrics` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + metricsEscaped := qp["metrics"] + metricsUnescaped := make([]string, len(metricsEscaped)) + for i, v := range metricsEscaped { + u, unescapeErr := url.QueryUnescape(v) + if unescapeErr != nil { + return nil, unescapeErr + } + metricsUnescaped[i] = u + } + metricsParam := make([]armcdn.WafMetric, len(metricsUnescaped)) + for i := 0; i < len(metricsUnescaped); i++ { + metricsParam[i] = armcdn.WafMetric(metricsUnescaped[i]) + } + dateTimeBeginUnescaped, err := url.QueryUnescape(qp.Get("dateTimeBegin")) + if err != nil { + return nil, err + } + dateTimeBeginParam, err := time.Parse(time.RFC3339Nano, dateTimeBeginUnescaped) + if err != nil { + return nil, err + } + dateTimeEndUnescaped, err := url.QueryUnescape(qp.Get("dateTimeEnd")) + if err != nil { + return nil, err + } + dateTimeEndParam, err := time.Parse(time.RFC3339Nano, dateTimeEndUnescaped) + if err != nil { + return nil, err + } + granularityParam, err := parseWithCast(qp.Get("granularity"), func(v string) (armcdn.WafGranularity, error) { + p, unescapeErr := url.QueryUnescape(v) + if unescapeErr != nil { + return "", unescapeErr + } + return armcdn.WafGranularity(p), nil + }) + if err != nil { + return nil, err + } + actionsEscaped := qp["actions"] + actionsUnescaped := make([]string, len(actionsEscaped)) + for i, v := range actionsEscaped { + u, unescapeErr := url.QueryUnescape(v) + if unescapeErr != nil { + return nil, unescapeErr + } + actionsUnescaped[i] = u + } + actionsParam := make([]armcdn.WafAction, len(actionsUnescaped)) + for i := 0; i < len(actionsUnescaped); i++ { + actionsParam[i] = armcdn.WafAction(actionsUnescaped[i]) + } + groupByEscaped := qp["groupBy"] + groupByUnescaped := make([]string, len(groupByEscaped)) + for i, v := range groupByEscaped { + u, unescapeErr := url.QueryUnescape(v) + if unescapeErr != nil { + return nil, unescapeErr + } + groupByUnescaped[i] = u + } + groupByParam := make([]armcdn.WafRankingGroupBy, len(groupByUnescaped)) + for i := 0; i < len(groupByUnescaped); i++ { + groupByParam[i] = armcdn.WafRankingGroupBy(groupByUnescaped[i]) + } + ruleTypesEscaped := qp["ruleTypes"] + ruleTypesUnescaped := make([]string, len(ruleTypesEscaped)) + for i, v := range ruleTypesEscaped { + u, unescapeErr := url.QueryUnescape(v) + if unescapeErr != nil { + return nil, unescapeErr + } + ruleTypesUnescaped[i] = u + } + ruleTypesParam := make([]armcdn.WafRuleType, len(ruleTypesUnescaped)) + for i := 0; i < len(ruleTypesUnescaped); i++ { + ruleTypesParam[i] = armcdn.WafRuleType(ruleTypesUnescaped[i]) + } + var options *armcdn.LogAnalyticsClientGetWafLogAnalyticsMetricsOptions + if len(actionsParam) > 0 || len(groupByParam) > 0 || len(ruleTypesParam) > 0 { + options = &armcdn.LogAnalyticsClientGetWafLogAnalyticsMetricsOptions{ + Actions: actionsParam, + GroupBy: groupByParam, + RuleTypes: ruleTypesParam, + } + } + respr, errRespr := l.srv.GetWafLogAnalyticsMetrics(req.Context(), resourceGroupNameParam, profileNameParam, metricsParam, dateTimeBeginParam, dateTimeEndParam, granularityParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).WafMetricsResponse, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (l *LogAnalyticsServerTransport) dispatchGetWafLogAnalyticsRankings(req *http.Request) (*http.Response, error) { + if l.srv.GetWafLogAnalyticsRankings == nil { + return nil, &nonRetriableError{errors.New("fake for method GetWafLogAnalyticsRankings not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/getWafLogAnalyticsRankings` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + metricsEscaped := qp["metrics"] + metricsUnescaped := make([]string, len(metricsEscaped)) + for i, v := range metricsEscaped { + u, unescapeErr := url.QueryUnescape(v) + if unescapeErr != nil { + return nil, unescapeErr + } + metricsUnescaped[i] = u + } + metricsParam := make([]armcdn.WafMetric, len(metricsUnescaped)) + for i := 0; i < len(metricsUnescaped); i++ { + metricsParam[i] = armcdn.WafMetric(metricsUnescaped[i]) + } + dateTimeBeginUnescaped, err := url.QueryUnescape(qp.Get("dateTimeBegin")) + if err != nil { + return nil, err + } + dateTimeBeginParam, err := time.Parse(time.RFC3339Nano, dateTimeBeginUnescaped) + if err != nil { + return nil, err + } + dateTimeEndUnescaped, err := url.QueryUnescape(qp.Get("dateTimeEnd")) + if err != nil { + return nil, err + } + dateTimeEndParam, err := time.Parse(time.RFC3339Nano, dateTimeEndUnescaped) + if err != nil { + return nil, err + } + maxRankingUnescaped, err := url.QueryUnescape(qp.Get("maxRanking")) + if err != nil { + return nil, err + } + maxRankingParam, err := parseWithCast(maxRankingUnescaped, func(v string) (int32, error) { + p, parseErr := strconv.ParseInt(v, 10, 32) + if parseErr != nil { + return 0, parseErr + } + return int32(p), nil + }) + if err != nil { + return nil, err + } + rankingsEscaped := qp["rankings"] + rankingsUnescaped := make([]string, len(rankingsEscaped)) + for i, v := range rankingsEscaped { + u, unescapeErr := url.QueryUnescape(v) + if unescapeErr != nil { + return nil, unescapeErr + } + rankingsUnescaped[i] = u + } + rankingsParam := make([]armcdn.WafRankingType, len(rankingsUnescaped)) + for i := 0; i < len(rankingsUnescaped); i++ { + rankingsParam[i] = armcdn.WafRankingType(rankingsUnescaped[i]) + } + actionsEscaped := qp["actions"] + actionsUnescaped := make([]string, len(actionsEscaped)) + for i, v := range actionsEscaped { + u, unescapeErr := url.QueryUnescape(v) + if unescapeErr != nil { + return nil, unescapeErr + } + actionsUnescaped[i] = u + } + actionsParam := make([]armcdn.WafAction, len(actionsUnescaped)) + for i := 0; i < len(actionsUnescaped); i++ { + actionsParam[i] = armcdn.WafAction(actionsUnescaped[i]) + } + ruleTypesEscaped := qp["ruleTypes"] + ruleTypesUnescaped := make([]string, len(ruleTypesEscaped)) + for i, v := range ruleTypesEscaped { + u, unescapeErr := url.QueryUnescape(v) + if unescapeErr != nil { + return nil, unescapeErr + } + ruleTypesUnescaped[i] = u + } + ruleTypesParam := make([]armcdn.WafRuleType, len(ruleTypesUnescaped)) + for i := 0; i < len(ruleTypesUnescaped); i++ { + ruleTypesParam[i] = armcdn.WafRuleType(ruleTypesUnescaped[i]) + } + var options *armcdn.LogAnalyticsClientGetWafLogAnalyticsRankingsOptions + if len(actionsParam) > 0 || len(ruleTypesParam) > 0 { + options = &armcdn.LogAnalyticsClientGetWafLogAnalyticsRankingsOptions{ + Actions: actionsParam, + RuleTypes: ruleTypesParam, + } + } + respr, errRespr := l.srv.GetWafLogAnalyticsRankings(req.Context(), resourceGroupNameParam, profileNameParam, metricsParam, dateTimeBeginParam, dateTimeEndParam, maxRankingParam, rankingsParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).WafRankingsResponse, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/managedrulesets_server.go b/sdk/resourcemanager/cdn/armcdn/fake/managedrulesets_server.go new file mode 100644 index 000000000000..8c589742a302 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/managedrulesets_server.go @@ -0,0 +1,103 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" + "net/http" + "regexp" +) + +// ManagedRuleSetsServer is a fake server for instances of the armcdn.ManagedRuleSetsClient type. +type ManagedRuleSetsServer struct { + // NewListPager is the fake for method ManagedRuleSetsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armcdn.ManagedRuleSetsClientListOptions) (resp azfake.PagerResponder[armcdn.ManagedRuleSetsClientListResponse]) +} + +// NewManagedRuleSetsServerTransport creates a new instance of ManagedRuleSetsServerTransport with the provided implementation. +// The returned ManagedRuleSetsServerTransport instance is connected to an instance of armcdn.ManagedRuleSetsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewManagedRuleSetsServerTransport(srv *ManagedRuleSetsServer) *ManagedRuleSetsServerTransport { + return &ManagedRuleSetsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armcdn.ManagedRuleSetsClientListResponse]](), + } +} + +// ManagedRuleSetsServerTransport connects instances of armcdn.ManagedRuleSetsClient to instances of ManagedRuleSetsServer. +// Don't use this type directly, use NewManagedRuleSetsServerTransport instead. +type ManagedRuleSetsServerTransport struct { + srv *ManagedRuleSetsServer + newListPager *tracker[azfake.PagerResponder[armcdn.ManagedRuleSetsClientListResponse]] +} + +// Do implements the policy.Transporter interface for ManagedRuleSetsServerTransport. +func (m *ManagedRuleSetsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "ManagedRuleSetsClient.NewListPager": + resp, err = m.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (m *ManagedRuleSetsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if m.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := m.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/cdnWebApplicationFirewallManagedRuleSets` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resp := m.srv.NewListPager(nil) + newListPager = &resp + m.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armcdn.ManagedRuleSetsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + m.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + m.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/management_server.go b/sdk/resourcemanager/cdn/armcdn/fake/management_server.go new file mode 100644 index 000000000000..d57afe006f70 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/management_server.go @@ -0,0 +1,199 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" + "net/http" + "net/url" + "regexp" +) + +// ManagementServer is a fake server for instances of the armcdn.ManagementClient type. +type ManagementServer struct { + // CheckEndpointNameAvailability is the fake for method ManagementClient.CheckEndpointNameAvailability + // HTTP status codes to indicate success: http.StatusOK + CheckEndpointNameAvailability func(ctx context.Context, resourceGroupName string, checkEndpointNameAvailabilityInput armcdn.CheckEndpointNameAvailabilityInput, options *armcdn.ManagementClientCheckEndpointNameAvailabilityOptions) (resp azfake.Responder[armcdn.ManagementClientCheckEndpointNameAvailabilityResponse], errResp azfake.ErrorResponder) + + // CheckNameAvailability is the fake for method ManagementClient.CheckNameAvailability + // HTTP status codes to indicate success: http.StatusOK + CheckNameAvailability func(ctx context.Context, checkNameAvailabilityInput armcdn.CheckNameAvailabilityInput, options *armcdn.ManagementClientCheckNameAvailabilityOptions) (resp azfake.Responder[armcdn.ManagementClientCheckNameAvailabilityResponse], errResp azfake.ErrorResponder) + + // CheckNameAvailabilityWithSubscription is the fake for method ManagementClient.CheckNameAvailabilityWithSubscription + // HTTP status codes to indicate success: http.StatusOK + CheckNameAvailabilityWithSubscription func(ctx context.Context, checkNameAvailabilityInput armcdn.CheckNameAvailabilityInput, options *armcdn.ManagementClientCheckNameAvailabilityWithSubscriptionOptions) (resp azfake.Responder[armcdn.ManagementClientCheckNameAvailabilityWithSubscriptionResponse], errResp azfake.ErrorResponder) + + // ValidateProbe is the fake for method ManagementClient.ValidateProbe + // HTTP status codes to indicate success: http.StatusOK + ValidateProbe func(ctx context.Context, validateProbeInput armcdn.ValidateProbeInput, options *armcdn.ManagementClientValidateProbeOptions) (resp azfake.Responder[armcdn.ManagementClientValidateProbeResponse], errResp azfake.ErrorResponder) +} + +// NewManagementServerTransport creates a new instance of ManagementServerTransport with the provided implementation. +// The returned ManagementServerTransport instance is connected to an instance of armcdn.ManagementClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewManagementServerTransport(srv *ManagementServer) *ManagementServerTransport { + return &ManagementServerTransport{srv: srv} +} + +// ManagementServerTransport connects instances of armcdn.ManagementClient to instances of ManagementServer. +// Don't use this type directly, use NewManagementServerTransport instead. +type ManagementServerTransport struct { + srv *ManagementServer +} + +// Do implements the policy.Transporter interface for ManagementServerTransport. +func (m *ManagementServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "ManagementClient.CheckEndpointNameAvailability": + resp, err = m.dispatchCheckEndpointNameAvailability(req) + case "ManagementClient.CheckNameAvailability": + resp, err = m.dispatchCheckNameAvailability(req) + case "ManagementClient.CheckNameAvailabilityWithSubscription": + resp, err = m.dispatchCheckNameAvailabilityWithSubscription(req) + case "ManagementClient.ValidateProbe": + resp, err = m.dispatchValidateProbe(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (m *ManagementServerTransport) dispatchCheckEndpointNameAvailability(req *http.Request) (*http.Response, error) { + if m.srv.CheckEndpointNameAvailability == nil { + return nil, &nonRetriableError{errors.New("fake for method CheckEndpointNameAvailability not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/checkEndpointNameAvailability` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.CheckEndpointNameAvailabilityInput](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + respr, errRespr := m.srv.CheckEndpointNameAvailability(req.Context(), resourceGroupNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).CheckEndpointNameAvailabilityOutput, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (m *ManagementServerTransport) dispatchCheckNameAvailability(req *http.Request) (*http.Response, error) { + if m.srv.CheckNameAvailability == nil { + return nil, &nonRetriableError{errors.New("fake for method CheckNameAvailability not implemented")} + } + body, err := server.UnmarshalRequestAsJSON[armcdn.CheckNameAvailabilityInput](req) + if err != nil { + return nil, err + } + respr, errRespr := m.srv.CheckNameAvailability(req.Context(), body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).CheckNameAvailabilityOutput, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (m *ManagementServerTransport) dispatchCheckNameAvailabilityWithSubscription(req *http.Request) (*http.Response, error) { + if m.srv.CheckNameAvailabilityWithSubscription == nil { + return nil, &nonRetriableError{errors.New("fake for method CheckNameAvailabilityWithSubscription not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/checkNameAvailability` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.CheckNameAvailabilityInput](req) + if err != nil { + return nil, err + } + respr, errRespr := m.srv.CheckNameAvailabilityWithSubscription(req.Context(), body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).CheckNameAvailabilityOutput, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (m *ManagementServerTransport) dispatchValidateProbe(req *http.Request) (*http.Response, error) { + if m.srv.ValidateProbe == nil { + return nil, &nonRetriableError{errors.New("fake for method ValidateProbe not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/validateProbe` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.ValidateProbeInput](req) + if err != nil { + return nil, err + } + respr, errRespr := m.srv.ValidateProbe(req.Context(), body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ValidateProbeOutput, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/operations_server.go b/sdk/resourcemanager/cdn/armcdn/fake/operations_server.go new file mode 100644 index 000000000000..f4de089ed641 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/operations_server.go @@ -0,0 +1,96 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" + "net/http" +) + +// OperationsServer is a fake server for instances of the armcdn.OperationsClient type. +type OperationsServer struct { + // NewListPager is the fake for method OperationsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armcdn.OperationsClientListOptions) (resp azfake.PagerResponder[armcdn.OperationsClientListResponse]) +} + +// NewOperationsServerTransport creates a new instance of OperationsServerTransport with the provided implementation. +// The returned OperationsServerTransport instance is connected to an instance of armcdn.OperationsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewOperationsServerTransport(srv *OperationsServer) *OperationsServerTransport { + return &OperationsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armcdn.OperationsClientListResponse]](), + } +} + +// OperationsServerTransport connects instances of armcdn.OperationsClient to instances of OperationsServer. +// Don't use this type directly, use NewOperationsServerTransport instead. +type OperationsServerTransport struct { + srv *OperationsServer + newListPager *tracker[azfake.PagerResponder[armcdn.OperationsClientListResponse]] +} + +// Do implements the policy.Transporter interface for OperationsServerTransport. +func (o *OperationsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "OperationsClient.NewListPager": + resp, err = o.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (o *OperationsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if o.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := o.newListPager.get(req) + if newListPager == nil { + resp := o.srv.NewListPager(nil) + newListPager = &resp + o.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armcdn.OperationsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + o.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + o.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/origingroups_server.go b/sdk/resourcemanager/cdn/armcdn/fake/origingroups_server.go new file mode 100644 index 000000000000..ac27d5136716 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/origingroups_server.go @@ -0,0 +1,352 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" + "net/http" + "net/url" + "regexp" +) + +// OriginGroupsServer is a fake server for instances of the armcdn.OriginGroupsClient type. +type OriginGroupsServer struct { + // BeginCreate is the fake for method OriginGroupsClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated, http.StatusAccepted + BeginCreate func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, originGroupName string, originGroup armcdn.OriginGroup, options *armcdn.OriginGroupsClientBeginCreateOptions) (resp azfake.PollerResponder[armcdn.OriginGroupsClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method OriginGroupsClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, originGroupName string, options *armcdn.OriginGroupsClientBeginDeleteOptions) (resp azfake.PollerResponder[armcdn.OriginGroupsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method OriginGroupsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, originGroupName string, options *armcdn.OriginGroupsClientGetOptions) (resp azfake.Responder[armcdn.OriginGroupsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByEndpointPager is the fake for method OriginGroupsClient.NewListByEndpointPager + // HTTP status codes to indicate success: http.StatusOK + NewListByEndpointPager func(resourceGroupName string, profileName string, endpointName string, options *armcdn.OriginGroupsClientListByEndpointOptions) (resp azfake.PagerResponder[armcdn.OriginGroupsClientListByEndpointResponse]) + + // BeginUpdate is the fake for method OriginGroupsClient.BeginUpdate + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginUpdate func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, originGroupName string, originGroupUpdateProperties armcdn.OriginGroupUpdateParameters, options *armcdn.OriginGroupsClientBeginUpdateOptions) (resp azfake.PollerResponder[armcdn.OriginGroupsClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewOriginGroupsServerTransport creates a new instance of OriginGroupsServerTransport with the provided implementation. +// The returned OriginGroupsServerTransport instance is connected to an instance of armcdn.OriginGroupsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewOriginGroupsServerTransport(srv *OriginGroupsServer) *OriginGroupsServerTransport { + return &OriginGroupsServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armcdn.OriginGroupsClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armcdn.OriginGroupsClientDeleteResponse]](), + newListByEndpointPager: newTracker[azfake.PagerResponder[armcdn.OriginGroupsClientListByEndpointResponse]](), + beginUpdate: newTracker[azfake.PollerResponder[armcdn.OriginGroupsClientUpdateResponse]](), + } +} + +// OriginGroupsServerTransport connects instances of armcdn.OriginGroupsClient to instances of OriginGroupsServer. +// Don't use this type directly, use NewOriginGroupsServerTransport instead. +type OriginGroupsServerTransport struct { + srv *OriginGroupsServer + beginCreate *tracker[azfake.PollerResponder[armcdn.OriginGroupsClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armcdn.OriginGroupsClientDeleteResponse]] + newListByEndpointPager *tracker[azfake.PagerResponder[armcdn.OriginGroupsClientListByEndpointResponse]] + beginUpdate *tracker[azfake.PollerResponder[armcdn.OriginGroupsClientUpdateResponse]] +} + +// Do implements the policy.Transporter interface for OriginGroupsServerTransport. +func (o *OriginGroupsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "OriginGroupsClient.BeginCreate": + resp, err = o.dispatchBeginCreate(req) + case "OriginGroupsClient.BeginDelete": + resp, err = o.dispatchBeginDelete(req) + case "OriginGroupsClient.Get": + resp, err = o.dispatchGet(req) + case "OriginGroupsClient.NewListByEndpointPager": + resp, err = o.dispatchNewListByEndpointPager(req) + case "OriginGroupsClient.BeginUpdate": + resp, err = o.dispatchBeginUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (o *OriginGroupsServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if o.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := o.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/originGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.OriginGroup](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + originGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("originGroupName")]) + if err != nil { + return nil, err + } + respr, errRespr := o.srv.BeginCreate(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, originGroupNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + o.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated, http.StatusAccepted}, resp.StatusCode) { + o.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + o.beginCreate.remove(req) + } + + return resp, nil +} + +func (o *OriginGroupsServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if o.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := o.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/originGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + originGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("originGroupName")]) + if err != nil { + return nil, err + } + respr, errRespr := o.srv.BeginDelete(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, originGroupNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + o.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + o.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + o.beginDelete.remove(req) + } + + return resp, nil +} + +func (o *OriginGroupsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if o.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/originGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + originGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("originGroupName")]) + if err != nil { + return nil, err + } + respr, errRespr := o.srv.Get(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, originGroupNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).OriginGroup, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (o *OriginGroupsServerTransport) dispatchNewListByEndpointPager(req *http.Request) (*http.Response, error) { + if o.srv.NewListByEndpointPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByEndpointPager not implemented")} + } + newListByEndpointPager := o.newListByEndpointPager.get(req) + if newListByEndpointPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/originGroups` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + resp := o.srv.NewListByEndpointPager(resourceGroupNameParam, profileNameParam, endpointNameParam, nil) + newListByEndpointPager = &resp + o.newListByEndpointPager.add(req, newListByEndpointPager) + server.PagerResponderInjectNextLinks(newListByEndpointPager, req, func(page *armcdn.OriginGroupsClientListByEndpointResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByEndpointPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + o.newListByEndpointPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByEndpointPager) { + o.newListByEndpointPager.remove(req) + } + return resp, nil +} + +func (o *OriginGroupsServerTransport) dispatchBeginUpdate(req *http.Request) (*http.Response, error) { + if o.srv.BeginUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginUpdate not implemented")} + } + beginUpdate := o.beginUpdate.get(req) + if beginUpdate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/originGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.OriginGroupUpdateParameters](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + originGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("originGroupName")]) + if err != nil { + return nil, err + } + respr, errRespr := o.srv.BeginUpdate(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, originGroupNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginUpdate = &respr + o.beginUpdate.add(req, beginUpdate) + } + + resp, err := server.PollerResponderNext(beginUpdate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + o.beginUpdate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginUpdate) { + o.beginUpdate.remove(req) + } + + return resp, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/origins_server.go b/sdk/resourcemanager/cdn/armcdn/fake/origins_server.go new file mode 100644 index 000000000000..57b03b604561 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/origins_server.go @@ -0,0 +1,352 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" + "net/http" + "net/url" + "regexp" +) + +// OriginsServer is a fake server for instances of the armcdn.OriginsClient type. +type OriginsServer struct { + // BeginCreate is the fake for method OriginsClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated, http.StatusAccepted + BeginCreate func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, originName string, origin armcdn.Origin, options *armcdn.OriginsClientBeginCreateOptions) (resp azfake.PollerResponder[armcdn.OriginsClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method OriginsClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, originName string, options *armcdn.OriginsClientBeginDeleteOptions) (resp azfake.PollerResponder[armcdn.OriginsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method OriginsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, originName string, options *armcdn.OriginsClientGetOptions) (resp azfake.Responder[armcdn.OriginsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByEndpointPager is the fake for method OriginsClient.NewListByEndpointPager + // HTTP status codes to indicate success: http.StatusOK + NewListByEndpointPager func(resourceGroupName string, profileName string, endpointName string, options *armcdn.OriginsClientListByEndpointOptions) (resp azfake.PagerResponder[armcdn.OriginsClientListByEndpointResponse]) + + // BeginUpdate is the fake for method OriginsClient.BeginUpdate + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginUpdate func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, originName string, originUpdateProperties armcdn.OriginUpdateParameters, options *armcdn.OriginsClientBeginUpdateOptions) (resp azfake.PollerResponder[armcdn.OriginsClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewOriginsServerTransport creates a new instance of OriginsServerTransport with the provided implementation. +// The returned OriginsServerTransport instance is connected to an instance of armcdn.OriginsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewOriginsServerTransport(srv *OriginsServer) *OriginsServerTransport { + return &OriginsServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armcdn.OriginsClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armcdn.OriginsClientDeleteResponse]](), + newListByEndpointPager: newTracker[azfake.PagerResponder[armcdn.OriginsClientListByEndpointResponse]](), + beginUpdate: newTracker[azfake.PollerResponder[armcdn.OriginsClientUpdateResponse]](), + } +} + +// OriginsServerTransport connects instances of armcdn.OriginsClient to instances of OriginsServer. +// Don't use this type directly, use NewOriginsServerTransport instead. +type OriginsServerTransport struct { + srv *OriginsServer + beginCreate *tracker[azfake.PollerResponder[armcdn.OriginsClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armcdn.OriginsClientDeleteResponse]] + newListByEndpointPager *tracker[azfake.PagerResponder[armcdn.OriginsClientListByEndpointResponse]] + beginUpdate *tracker[azfake.PollerResponder[armcdn.OriginsClientUpdateResponse]] +} + +// Do implements the policy.Transporter interface for OriginsServerTransport. +func (o *OriginsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "OriginsClient.BeginCreate": + resp, err = o.dispatchBeginCreate(req) + case "OriginsClient.BeginDelete": + resp, err = o.dispatchBeginDelete(req) + case "OriginsClient.Get": + resp, err = o.dispatchGet(req) + case "OriginsClient.NewListByEndpointPager": + resp, err = o.dispatchNewListByEndpointPager(req) + case "OriginsClient.BeginUpdate": + resp, err = o.dispatchBeginUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (o *OriginsServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if o.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := o.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/origins/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.Origin](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + originNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("originName")]) + if err != nil { + return nil, err + } + respr, errRespr := o.srv.BeginCreate(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, originNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + o.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated, http.StatusAccepted}, resp.StatusCode) { + o.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + o.beginCreate.remove(req) + } + + return resp, nil +} + +func (o *OriginsServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if o.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := o.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/origins/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + originNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("originName")]) + if err != nil { + return nil, err + } + respr, errRespr := o.srv.BeginDelete(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, originNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + o.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + o.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + o.beginDelete.remove(req) + } + + return resp, nil +} + +func (o *OriginsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if o.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/origins/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + originNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("originName")]) + if err != nil { + return nil, err + } + respr, errRespr := o.srv.Get(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, originNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Origin, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (o *OriginsServerTransport) dispatchNewListByEndpointPager(req *http.Request) (*http.Response, error) { + if o.srv.NewListByEndpointPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByEndpointPager not implemented")} + } + newListByEndpointPager := o.newListByEndpointPager.get(req) + if newListByEndpointPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/origins` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + resp := o.srv.NewListByEndpointPager(resourceGroupNameParam, profileNameParam, endpointNameParam, nil) + newListByEndpointPager = &resp + o.newListByEndpointPager.add(req, newListByEndpointPager) + server.PagerResponderInjectNextLinks(newListByEndpointPager, req, func(page *armcdn.OriginsClientListByEndpointResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByEndpointPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + o.newListByEndpointPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByEndpointPager) { + o.newListByEndpointPager.remove(req) + } + return resp, nil +} + +func (o *OriginsServerTransport) dispatchBeginUpdate(req *http.Request) (*http.Response, error) { + if o.srv.BeginUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginUpdate not implemented")} + } + beginUpdate := o.beginUpdate.get(req) + if beginUpdate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/endpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/origins/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.OriginUpdateParameters](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + originNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("originName")]) + if err != nil { + return nil, err + } + respr, errRespr := o.srv.BeginUpdate(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, originNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginUpdate = &respr + o.beginUpdate.add(req, beginUpdate) + } + + resp, err := server.PollerResponderNext(beginUpdate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + o.beginUpdate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginUpdate) { + o.beginUpdate.remove(req) + } + + return resp, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/policies_server.go b/sdk/resourcemanager/cdn/armcdn/fake/policies_server.go new file mode 100644 index 000000000000..167722882268 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/policies_server.go @@ -0,0 +1,299 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" + "net/http" + "net/url" + "regexp" +) + +// PoliciesServer is a fake server for instances of the armcdn.PoliciesClient type. +type PoliciesServer struct { + // BeginCreateOrUpdate is the fake for method PoliciesClient.BeginCreateOrUpdate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated, http.StatusAccepted + BeginCreateOrUpdate func(ctx context.Context, resourceGroupName string, policyName string, cdnWebApplicationFirewallPolicy armcdn.WebApplicationFirewallPolicy, options *armcdn.PoliciesClientBeginCreateOrUpdateOptions) (resp azfake.PollerResponder[armcdn.PoliciesClientCreateOrUpdateResponse], errResp azfake.ErrorResponder) + + // Delete is the fake for method PoliciesClient.Delete + // HTTP status codes to indicate success: http.StatusOK, http.StatusNoContent + Delete func(ctx context.Context, resourceGroupName string, policyName string, options *armcdn.PoliciesClientDeleteOptions) (resp azfake.Responder[armcdn.PoliciesClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method PoliciesClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, policyName string, options *armcdn.PoliciesClientGetOptions) (resp azfake.Responder[armcdn.PoliciesClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method PoliciesClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(resourceGroupName string, options *armcdn.PoliciesClientListOptions) (resp azfake.PagerResponder[armcdn.PoliciesClientListResponse]) + + // BeginUpdate is the fake for method PoliciesClient.BeginUpdate + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginUpdate func(ctx context.Context, resourceGroupName string, policyName string, cdnWebApplicationFirewallPolicyPatchParameters armcdn.WebApplicationFirewallPolicyPatchParameters, options *armcdn.PoliciesClientBeginUpdateOptions) (resp azfake.PollerResponder[armcdn.PoliciesClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewPoliciesServerTransport creates a new instance of PoliciesServerTransport with the provided implementation. +// The returned PoliciesServerTransport instance is connected to an instance of armcdn.PoliciesClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewPoliciesServerTransport(srv *PoliciesServer) *PoliciesServerTransport { + return &PoliciesServerTransport{ + srv: srv, + beginCreateOrUpdate: newTracker[azfake.PollerResponder[armcdn.PoliciesClientCreateOrUpdateResponse]](), + newListPager: newTracker[azfake.PagerResponder[armcdn.PoliciesClientListResponse]](), + beginUpdate: newTracker[azfake.PollerResponder[armcdn.PoliciesClientUpdateResponse]](), + } +} + +// PoliciesServerTransport connects instances of armcdn.PoliciesClient to instances of PoliciesServer. +// Don't use this type directly, use NewPoliciesServerTransport instead. +type PoliciesServerTransport struct { + srv *PoliciesServer + beginCreateOrUpdate *tracker[azfake.PollerResponder[armcdn.PoliciesClientCreateOrUpdateResponse]] + newListPager *tracker[azfake.PagerResponder[armcdn.PoliciesClientListResponse]] + beginUpdate *tracker[azfake.PollerResponder[armcdn.PoliciesClientUpdateResponse]] +} + +// Do implements the policy.Transporter interface for PoliciesServerTransport. +func (p *PoliciesServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "PoliciesClient.BeginCreateOrUpdate": + resp, err = p.dispatchBeginCreateOrUpdate(req) + case "PoliciesClient.Delete": + resp, err = p.dispatchDelete(req) + case "PoliciesClient.Get": + resp, err = p.dispatchGet(req) + case "PoliciesClient.NewListPager": + resp, err = p.dispatchNewListPager(req) + case "PoliciesClient.BeginUpdate": + resp, err = p.dispatchBeginUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (p *PoliciesServerTransport) dispatchBeginCreateOrUpdate(req *http.Request) (*http.Response, error) { + if p.srv.BeginCreateOrUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreateOrUpdate not implemented")} + } + beginCreateOrUpdate := p.beginCreateOrUpdate.get(req) + if beginCreateOrUpdate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/cdnWebApplicationFirewallPolicies/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.WebApplicationFirewallPolicy](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + policyNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("policyName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.BeginCreateOrUpdate(req.Context(), resourceGroupNameParam, policyNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreateOrUpdate = &respr + p.beginCreateOrUpdate.add(req, beginCreateOrUpdate) + } + + resp, err := server.PollerResponderNext(beginCreateOrUpdate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated, http.StatusAccepted}, resp.StatusCode) { + p.beginCreateOrUpdate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreateOrUpdate) { + p.beginCreateOrUpdate.remove(req) + } + + return resp, nil +} + +func (p *PoliciesServerTransport) dispatchDelete(req *http.Request) (*http.Response, error) { + if p.srv.Delete == nil { + return nil, &nonRetriableError{errors.New("fake for method Delete not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/cdnWebApplicationFirewallPolicies/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + policyNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("policyName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.Delete(req.Context(), resourceGroupNameParam, policyNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK, http.StatusNoContent}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusNoContent", respContent.HTTPStatus)} + } + resp, err := server.NewResponse(respContent, req, nil) + if err != nil { + return nil, err + } + return resp, nil +} + +func (p *PoliciesServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if p.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/cdnWebApplicationFirewallPolicies/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + policyNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("policyName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.Get(req.Context(), resourceGroupNameParam, policyNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).WebApplicationFirewallPolicy, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (p *PoliciesServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if p.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := p.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/cdnWebApplicationFirewallPolicies` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resp := p.srv.NewListPager(resourceGroupNameParam, nil) + newListPager = &resp + p.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armcdn.PoliciesClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + p.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + p.newListPager.remove(req) + } + return resp, nil +} + +func (p *PoliciesServerTransport) dispatchBeginUpdate(req *http.Request) (*http.Response, error) { + if p.srv.BeginUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginUpdate not implemented")} + } + beginUpdate := p.beginUpdate.get(req) + if beginUpdate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/cdnWebApplicationFirewallPolicies/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.WebApplicationFirewallPolicyPatchParameters](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + policyNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("policyName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.BeginUpdate(req.Context(), resourceGroupNameParam, policyNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginUpdate = &respr + p.beginUpdate.add(req, beginUpdate) + } + + resp, err := server.PollerResponderNext(beginUpdate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + p.beginUpdate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginUpdate) { + p.beginUpdate.remove(req) + } + + return resp, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/polymorphic_helpers.go b/sdk/resourcemanager/cdn/armcdn/fake/polymorphic_helpers.go new file mode 100644 index 000000000000..a41167d0dce6 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/polymorphic_helpers.go @@ -0,0 +1,37 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "encoding/json" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" +) + +func unmarshalCustomDomainHTTPSParametersClassification(rawMsg json.RawMessage) (armcdn.CustomDomainHTTPSParametersClassification, error) { + if rawMsg == nil { + return nil, nil + } + var m map[string]any + if err := json.Unmarshal(rawMsg, &m); err != nil { + return nil, err + } + var b armcdn.CustomDomainHTTPSParametersClassification + switch m["certificateSource"] { + case string(armcdn.CertificateSourceAzureKeyVault): + b = &armcdn.UserManagedHTTPSParameters{} + case string(armcdn.CertificateSourceCdn): + b = &armcdn.ManagedHTTPSParameters{} + default: + b = &armcdn.CustomDomainHTTPSParameters{} + } + if err := json.Unmarshal(rawMsg, b); err != nil { + return nil, err + } + return b, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/profiles_server.go b/sdk/resourcemanager/cdn/armcdn/fake/profiles_server.go new file mode 100644 index 000000000000..7a160e4d6972 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/profiles_server.go @@ -0,0 +1,636 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" + "net/http" + "net/url" + "regexp" +) + +// ProfilesServer is a fake server for instances of the armcdn.ProfilesClient type. +type ProfilesServer struct { + // BeginCanMigrate is the fake for method ProfilesClient.BeginCanMigrate + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginCanMigrate func(ctx context.Context, resourceGroupName string, canMigrateParameters armcdn.CanMigrateParameters, options *armcdn.ProfilesClientBeginCanMigrateOptions) (resp azfake.PollerResponder[armcdn.ProfilesClientCanMigrateResponse], errResp azfake.ErrorResponder) + + // BeginCreate is the fake for method ProfilesClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated, http.StatusAccepted + BeginCreate func(ctx context.Context, resourceGroupName string, profileName string, profile armcdn.Profile, options *armcdn.ProfilesClientBeginCreateOptions) (resp azfake.PollerResponder[armcdn.ProfilesClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method ProfilesClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, profileName string, options *armcdn.ProfilesClientBeginDeleteOptions) (resp azfake.PollerResponder[armcdn.ProfilesClientDeleteResponse], errResp azfake.ErrorResponder) + + // GenerateSsoURI is the fake for method ProfilesClient.GenerateSsoURI + // HTTP status codes to indicate success: http.StatusOK + GenerateSsoURI func(ctx context.Context, resourceGroupName string, profileName string, options *armcdn.ProfilesClientGenerateSsoURIOptions) (resp azfake.Responder[armcdn.ProfilesClientGenerateSsoURIResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method ProfilesClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, profileName string, options *armcdn.ProfilesClientGetOptions) (resp azfake.Responder[armcdn.ProfilesClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method ProfilesClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armcdn.ProfilesClientListOptions) (resp azfake.PagerResponder[armcdn.ProfilesClientListResponse]) + + // NewListByResourceGroupPager is the fake for method ProfilesClient.NewListByResourceGroupPager + // HTTP status codes to indicate success: http.StatusOK + NewListByResourceGroupPager func(resourceGroupName string, options *armcdn.ProfilesClientListByResourceGroupOptions) (resp azfake.PagerResponder[armcdn.ProfilesClientListByResourceGroupResponse]) + + // NewListResourceUsagePager is the fake for method ProfilesClient.NewListResourceUsagePager + // HTTP status codes to indicate success: http.StatusOK + NewListResourceUsagePager func(resourceGroupName string, profileName string, options *armcdn.ProfilesClientListResourceUsageOptions) (resp azfake.PagerResponder[armcdn.ProfilesClientListResourceUsageResponse]) + + // ListSupportedOptimizationTypes is the fake for method ProfilesClient.ListSupportedOptimizationTypes + // HTTP status codes to indicate success: http.StatusOK + ListSupportedOptimizationTypes func(ctx context.Context, resourceGroupName string, profileName string, options *armcdn.ProfilesClientListSupportedOptimizationTypesOptions) (resp azfake.Responder[armcdn.ProfilesClientListSupportedOptimizationTypesResponse], errResp azfake.ErrorResponder) + + // BeginMigrate is the fake for method ProfilesClient.BeginMigrate + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginMigrate func(ctx context.Context, resourceGroupName string, migrationParameters armcdn.MigrationParameters, options *armcdn.ProfilesClientBeginMigrateOptions) (resp azfake.PollerResponder[armcdn.ProfilesClientMigrateResponse], errResp azfake.ErrorResponder) + + // BeginMigrationCommit is the fake for method ProfilesClient.BeginMigrationCommit + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginMigrationCommit func(ctx context.Context, resourceGroupName string, profileName string, options *armcdn.ProfilesClientBeginMigrationCommitOptions) (resp azfake.PollerResponder[armcdn.ProfilesClientMigrationCommitResponse], errResp azfake.ErrorResponder) + + // BeginUpdate is the fake for method ProfilesClient.BeginUpdate + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginUpdate func(ctx context.Context, resourceGroupName string, profileName string, profileUpdateParameters armcdn.ProfileUpdateParameters, options *armcdn.ProfilesClientBeginUpdateOptions) (resp azfake.PollerResponder[armcdn.ProfilesClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewProfilesServerTransport creates a new instance of ProfilesServerTransport with the provided implementation. +// The returned ProfilesServerTransport instance is connected to an instance of armcdn.ProfilesClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewProfilesServerTransport(srv *ProfilesServer) *ProfilesServerTransport { + return &ProfilesServerTransport{ + srv: srv, + beginCanMigrate: newTracker[azfake.PollerResponder[armcdn.ProfilesClientCanMigrateResponse]](), + beginCreate: newTracker[azfake.PollerResponder[armcdn.ProfilesClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armcdn.ProfilesClientDeleteResponse]](), + newListPager: newTracker[azfake.PagerResponder[armcdn.ProfilesClientListResponse]](), + newListByResourceGroupPager: newTracker[azfake.PagerResponder[armcdn.ProfilesClientListByResourceGroupResponse]](), + newListResourceUsagePager: newTracker[azfake.PagerResponder[armcdn.ProfilesClientListResourceUsageResponse]](), + beginMigrate: newTracker[azfake.PollerResponder[armcdn.ProfilesClientMigrateResponse]](), + beginMigrationCommit: newTracker[azfake.PollerResponder[armcdn.ProfilesClientMigrationCommitResponse]](), + beginUpdate: newTracker[azfake.PollerResponder[armcdn.ProfilesClientUpdateResponse]](), + } +} + +// ProfilesServerTransport connects instances of armcdn.ProfilesClient to instances of ProfilesServer. +// Don't use this type directly, use NewProfilesServerTransport instead. +type ProfilesServerTransport struct { + srv *ProfilesServer + beginCanMigrate *tracker[azfake.PollerResponder[armcdn.ProfilesClientCanMigrateResponse]] + beginCreate *tracker[azfake.PollerResponder[armcdn.ProfilesClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armcdn.ProfilesClientDeleteResponse]] + newListPager *tracker[azfake.PagerResponder[armcdn.ProfilesClientListResponse]] + newListByResourceGroupPager *tracker[azfake.PagerResponder[armcdn.ProfilesClientListByResourceGroupResponse]] + newListResourceUsagePager *tracker[azfake.PagerResponder[armcdn.ProfilesClientListResourceUsageResponse]] + beginMigrate *tracker[azfake.PollerResponder[armcdn.ProfilesClientMigrateResponse]] + beginMigrationCommit *tracker[azfake.PollerResponder[armcdn.ProfilesClientMigrationCommitResponse]] + beginUpdate *tracker[azfake.PollerResponder[armcdn.ProfilesClientUpdateResponse]] +} + +// Do implements the policy.Transporter interface for ProfilesServerTransport. +func (p *ProfilesServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "ProfilesClient.BeginCanMigrate": + resp, err = p.dispatchBeginCanMigrate(req) + case "ProfilesClient.BeginCreate": + resp, err = p.dispatchBeginCreate(req) + case "ProfilesClient.BeginDelete": + resp, err = p.dispatchBeginDelete(req) + case "ProfilesClient.GenerateSsoURI": + resp, err = p.dispatchGenerateSsoURI(req) + case "ProfilesClient.Get": + resp, err = p.dispatchGet(req) + case "ProfilesClient.NewListPager": + resp, err = p.dispatchNewListPager(req) + case "ProfilesClient.NewListByResourceGroupPager": + resp, err = p.dispatchNewListByResourceGroupPager(req) + case "ProfilesClient.NewListResourceUsagePager": + resp, err = p.dispatchNewListResourceUsagePager(req) + case "ProfilesClient.ListSupportedOptimizationTypes": + resp, err = p.dispatchListSupportedOptimizationTypes(req) + case "ProfilesClient.BeginMigrate": + resp, err = p.dispatchBeginMigrate(req) + case "ProfilesClient.BeginMigrationCommit": + resp, err = p.dispatchBeginMigrationCommit(req) + case "ProfilesClient.BeginUpdate": + resp, err = p.dispatchBeginUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (p *ProfilesServerTransport) dispatchBeginCanMigrate(req *http.Request) (*http.Response, error) { + if p.srv.BeginCanMigrate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCanMigrate not implemented")} + } + beginCanMigrate := p.beginCanMigrate.get(req) + if beginCanMigrate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/canMigrate` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.CanMigrateParameters](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.BeginCanMigrate(req.Context(), resourceGroupNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCanMigrate = &respr + p.beginCanMigrate.add(req, beginCanMigrate) + } + + resp, err := server.PollerResponderNext(beginCanMigrate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + p.beginCanMigrate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCanMigrate) { + p.beginCanMigrate.remove(req) + } + + return resp, nil +} + +func (p *ProfilesServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if p.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := p.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.Profile](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.BeginCreate(req.Context(), resourceGroupNameParam, profileNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + p.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated, http.StatusAccepted}, resp.StatusCode) { + p.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + p.beginCreate.remove(req) + } + + return resp, nil +} + +func (p *ProfilesServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if p.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := p.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.BeginDelete(req.Context(), resourceGroupNameParam, profileNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + p.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + p.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + p.beginDelete.remove(req) + } + + return resp, nil +} + +func (p *ProfilesServerTransport) dispatchGenerateSsoURI(req *http.Request) (*http.Response, error) { + if p.srv.GenerateSsoURI == nil { + return nil, &nonRetriableError{errors.New("fake for method GenerateSsoURI not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/generateSsoUri` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.GenerateSsoURI(req.Context(), resourceGroupNameParam, profileNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).SsoURI, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (p *ProfilesServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if p.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.Get(req.Context(), resourceGroupNameParam, profileNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Profile, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (p *ProfilesServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if p.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := p.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resp := p.srv.NewListPager(nil) + newListPager = &resp + p.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armcdn.ProfilesClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + p.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + p.newListPager.remove(req) + } + return resp, nil +} + +func (p *ProfilesServerTransport) dispatchNewListByResourceGroupPager(req *http.Request) (*http.Response, error) { + if p.srv.NewListByResourceGroupPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByResourceGroupPager not implemented")} + } + newListByResourceGroupPager := p.newListByResourceGroupPager.get(req) + if newListByResourceGroupPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resp := p.srv.NewListByResourceGroupPager(resourceGroupNameParam, nil) + newListByResourceGroupPager = &resp + p.newListByResourceGroupPager.add(req, newListByResourceGroupPager) + server.PagerResponderInjectNextLinks(newListByResourceGroupPager, req, func(page *armcdn.ProfilesClientListByResourceGroupResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByResourceGroupPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + p.newListByResourceGroupPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByResourceGroupPager) { + p.newListByResourceGroupPager.remove(req) + } + return resp, nil +} + +func (p *ProfilesServerTransport) dispatchNewListResourceUsagePager(req *http.Request) (*http.Response, error) { + if p.srv.NewListResourceUsagePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListResourceUsagePager not implemented")} + } + newListResourceUsagePager := p.newListResourceUsagePager.get(req) + if newListResourceUsagePager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/checkResourceUsage` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + resp := p.srv.NewListResourceUsagePager(resourceGroupNameParam, profileNameParam, nil) + newListResourceUsagePager = &resp + p.newListResourceUsagePager.add(req, newListResourceUsagePager) + server.PagerResponderInjectNextLinks(newListResourceUsagePager, req, func(page *armcdn.ProfilesClientListResourceUsageResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListResourceUsagePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + p.newListResourceUsagePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListResourceUsagePager) { + p.newListResourceUsagePager.remove(req) + } + return resp, nil +} + +func (p *ProfilesServerTransport) dispatchListSupportedOptimizationTypes(req *http.Request) (*http.Response, error) { + if p.srv.ListSupportedOptimizationTypes == nil { + return nil, &nonRetriableError{errors.New("fake for method ListSupportedOptimizationTypes not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/getSupportedOptimizationTypes` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.ListSupportedOptimizationTypes(req.Context(), resourceGroupNameParam, profileNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).SupportedOptimizationTypesListResult, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (p *ProfilesServerTransport) dispatchBeginMigrate(req *http.Request) (*http.Response, error) { + if p.srv.BeginMigrate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginMigrate not implemented")} + } + beginMigrate := p.beginMigrate.get(req) + if beginMigrate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/migrate` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.MigrationParameters](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.BeginMigrate(req.Context(), resourceGroupNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginMigrate = &respr + p.beginMigrate.add(req, beginMigrate) + } + + resp, err := server.PollerResponderNext(beginMigrate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + p.beginMigrate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginMigrate) { + p.beginMigrate.remove(req) + } + + return resp, nil +} + +func (p *ProfilesServerTransport) dispatchBeginMigrationCommit(req *http.Request) (*http.Response, error) { + if p.srv.BeginMigrationCommit == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginMigrationCommit not implemented")} + } + beginMigrationCommit := p.beginMigrationCommit.get(req) + if beginMigrationCommit == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/migrationCommit` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.BeginMigrationCommit(req.Context(), resourceGroupNameParam, profileNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginMigrationCommit = &respr + p.beginMigrationCommit.add(req, beginMigrationCommit) + } + + resp, err := server.PollerResponderNext(beginMigrationCommit, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + p.beginMigrationCommit.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginMigrationCommit) { + p.beginMigrationCommit.remove(req) + } + + return resp, nil +} + +func (p *ProfilesServerTransport) dispatchBeginUpdate(req *http.Request) (*http.Response, error) { + if p.srv.BeginUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginUpdate not implemented")} + } + beginUpdate := p.beginUpdate.get(req) + if beginUpdate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.ProfileUpdateParameters](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.BeginUpdate(req.Context(), resourceGroupNameParam, profileNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginUpdate = &respr + p.beginUpdate.add(req, beginUpdate) + } + + resp, err := server.PollerResponderNext(beginUpdate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + p.beginUpdate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginUpdate) { + p.beginUpdate.remove(req) + } + + return resp, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/resourceusage_server.go b/sdk/resourcemanager/cdn/armcdn/fake/resourceusage_server.go new file mode 100644 index 000000000000..dce9e421eb98 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/resourceusage_server.go @@ -0,0 +1,103 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" + "net/http" + "regexp" +) + +// ResourceUsageServer is a fake server for instances of the armcdn.ResourceUsageClient type. +type ResourceUsageServer struct { + // NewListPager is the fake for method ResourceUsageClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armcdn.ResourceUsageClientListOptions) (resp azfake.PagerResponder[armcdn.ResourceUsageClientListResponse]) +} + +// NewResourceUsageServerTransport creates a new instance of ResourceUsageServerTransport with the provided implementation. +// The returned ResourceUsageServerTransport instance is connected to an instance of armcdn.ResourceUsageClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewResourceUsageServerTransport(srv *ResourceUsageServer) *ResourceUsageServerTransport { + return &ResourceUsageServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armcdn.ResourceUsageClientListResponse]](), + } +} + +// ResourceUsageServerTransport connects instances of armcdn.ResourceUsageClient to instances of ResourceUsageServer. +// Don't use this type directly, use NewResourceUsageServerTransport instead. +type ResourceUsageServerTransport struct { + srv *ResourceUsageServer + newListPager *tracker[azfake.PagerResponder[armcdn.ResourceUsageClientListResponse]] +} + +// Do implements the policy.Transporter interface for ResourceUsageServerTransport. +func (r *ResourceUsageServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "ResourceUsageClient.NewListPager": + resp, err = r.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (r *ResourceUsageServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if r.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := r.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/checkResourceUsage` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resp := r.srv.NewListPager(nil) + newListPager = &resp + r.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armcdn.ResourceUsageClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + r.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + r.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/routes_server.go b/sdk/resourcemanager/cdn/armcdn/fake/routes_server.go new file mode 100644 index 000000000000..443f17c01649 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/routes_server.go @@ -0,0 +1,352 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" + "net/http" + "net/url" + "regexp" +) + +// RoutesServer is a fake server for instances of the armcdn.RoutesClient type. +type RoutesServer struct { + // BeginCreate is the fake for method RoutesClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated, http.StatusAccepted + BeginCreate func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, routeName string, route armcdn.Route, options *armcdn.RoutesClientBeginCreateOptions) (resp azfake.PollerResponder[armcdn.RoutesClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method RoutesClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, routeName string, options *armcdn.RoutesClientBeginDeleteOptions) (resp azfake.PollerResponder[armcdn.RoutesClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method RoutesClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, routeName string, options *armcdn.RoutesClientGetOptions) (resp azfake.Responder[armcdn.RoutesClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByEndpointPager is the fake for method RoutesClient.NewListByEndpointPager + // HTTP status codes to indicate success: http.StatusOK + NewListByEndpointPager func(resourceGroupName string, profileName string, endpointName string, options *armcdn.RoutesClientListByEndpointOptions) (resp azfake.PagerResponder[armcdn.RoutesClientListByEndpointResponse]) + + // BeginUpdate is the fake for method RoutesClient.BeginUpdate + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginUpdate func(ctx context.Context, resourceGroupName string, profileName string, endpointName string, routeName string, routeUpdateProperties armcdn.RouteUpdateParameters, options *armcdn.RoutesClientBeginUpdateOptions) (resp azfake.PollerResponder[armcdn.RoutesClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewRoutesServerTransport creates a new instance of RoutesServerTransport with the provided implementation. +// The returned RoutesServerTransport instance is connected to an instance of armcdn.RoutesClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewRoutesServerTransport(srv *RoutesServer) *RoutesServerTransport { + return &RoutesServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armcdn.RoutesClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armcdn.RoutesClientDeleteResponse]](), + newListByEndpointPager: newTracker[azfake.PagerResponder[armcdn.RoutesClientListByEndpointResponse]](), + beginUpdate: newTracker[azfake.PollerResponder[armcdn.RoutesClientUpdateResponse]](), + } +} + +// RoutesServerTransport connects instances of armcdn.RoutesClient to instances of RoutesServer. +// Don't use this type directly, use NewRoutesServerTransport instead. +type RoutesServerTransport struct { + srv *RoutesServer + beginCreate *tracker[azfake.PollerResponder[armcdn.RoutesClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armcdn.RoutesClientDeleteResponse]] + newListByEndpointPager *tracker[azfake.PagerResponder[armcdn.RoutesClientListByEndpointResponse]] + beginUpdate *tracker[azfake.PollerResponder[armcdn.RoutesClientUpdateResponse]] +} + +// Do implements the policy.Transporter interface for RoutesServerTransport. +func (r *RoutesServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "RoutesClient.BeginCreate": + resp, err = r.dispatchBeginCreate(req) + case "RoutesClient.BeginDelete": + resp, err = r.dispatchBeginDelete(req) + case "RoutesClient.Get": + resp, err = r.dispatchGet(req) + case "RoutesClient.NewListByEndpointPager": + resp, err = r.dispatchNewListByEndpointPager(req) + case "RoutesClient.BeginUpdate": + resp, err = r.dispatchBeginUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (r *RoutesServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if r.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := r.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/afdEndpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/routes/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.Route](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + routeNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("routeName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.BeginCreate(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, routeNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + r.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated, http.StatusAccepted}, resp.StatusCode) { + r.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + r.beginCreate.remove(req) + } + + return resp, nil +} + +func (r *RoutesServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if r.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := r.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/afdEndpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/routes/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + routeNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("routeName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.BeginDelete(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, routeNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + r.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + r.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + r.beginDelete.remove(req) + } + + return resp, nil +} + +func (r *RoutesServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if r.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/afdEndpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/routes/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + routeNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("routeName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.Get(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, routeNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Route, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (r *RoutesServerTransport) dispatchNewListByEndpointPager(req *http.Request) (*http.Response, error) { + if r.srv.NewListByEndpointPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByEndpointPager not implemented")} + } + newListByEndpointPager := r.newListByEndpointPager.get(req) + if newListByEndpointPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/afdEndpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/routes` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + resp := r.srv.NewListByEndpointPager(resourceGroupNameParam, profileNameParam, endpointNameParam, nil) + newListByEndpointPager = &resp + r.newListByEndpointPager.add(req, newListByEndpointPager) + server.PagerResponderInjectNextLinks(newListByEndpointPager, req, func(page *armcdn.RoutesClientListByEndpointResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByEndpointPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + r.newListByEndpointPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByEndpointPager) { + r.newListByEndpointPager.remove(req) + } + return resp, nil +} + +func (r *RoutesServerTransport) dispatchBeginUpdate(req *http.Request) (*http.Response, error) { + if r.srv.BeginUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginUpdate not implemented")} + } + beginUpdate := r.beginUpdate.get(req) + if beginUpdate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/afdEndpoints/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/routes/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.RouteUpdateParameters](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + endpointNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("endpointName")]) + if err != nil { + return nil, err + } + routeNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("routeName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.BeginUpdate(req.Context(), resourceGroupNameParam, profileNameParam, endpointNameParam, routeNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginUpdate = &respr + r.beginUpdate.add(req, beginUpdate) + } + + resp, err := server.PollerResponderNext(beginUpdate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + r.beginUpdate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginUpdate) { + r.beginUpdate.remove(req) + } + + return resp, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/rules_server.go b/sdk/resourcemanager/cdn/armcdn/fake/rules_server.go new file mode 100644 index 000000000000..7f14d5f6d60c --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/rules_server.go @@ -0,0 +1,352 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" + "net/http" + "net/url" + "regexp" +) + +// RulesServer is a fake server for instances of the armcdn.RulesClient type. +type RulesServer struct { + // BeginCreate is the fake for method RulesClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated, http.StatusAccepted + BeginCreate func(ctx context.Context, resourceGroupName string, profileName string, ruleSetName string, ruleName string, rule armcdn.Rule, options *armcdn.RulesClientBeginCreateOptions) (resp azfake.PollerResponder[armcdn.RulesClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method RulesClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, profileName string, ruleSetName string, ruleName string, options *armcdn.RulesClientBeginDeleteOptions) (resp azfake.PollerResponder[armcdn.RulesClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method RulesClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, profileName string, ruleSetName string, ruleName string, options *armcdn.RulesClientGetOptions) (resp azfake.Responder[armcdn.RulesClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByRuleSetPager is the fake for method RulesClient.NewListByRuleSetPager + // HTTP status codes to indicate success: http.StatusOK + NewListByRuleSetPager func(resourceGroupName string, profileName string, ruleSetName string, options *armcdn.RulesClientListByRuleSetOptions) (resp azfake.PagerResponder[armcdn.RulesClientListByRuleSetResponse]) + + // BeginUpdate is the fake for method RulesClient.BeginUpdate + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginUpdate func(ctx context.Context, resourceGroupName string, profileName string, ruleSetName string, ruleName string, ruleUpdateProperties armcdn.RuleUpdateParameters, options *armcdn.RulesClientBeginUpdateOptions) (resp azfake.PollerResponder[armcdn.RulesClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewRulesServerTransport creates a new instance of RulesServerTransport with the provided implementation. +// The returned RulesServerTransport instance is connected to an instance of armcdn.RulesClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewRulesServerTransport(srv *RulesServer) *RulesServerTransport { + return &RulesServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armcdn.RulesClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armcdn.RulesClientDeleteResponse]](), + newListByRuleSetPager: newTracker[azfake.PagerResponder[armcdn.RulesClientListByRuleSetResponse]](), + beginUpdate: newTracker[azfake.PollerResponder[armcdn.RulesClientUpdateResponse]](), + } +} + +// RulesServerTransport connects instances of armcdn.RulesClient to instances of RulesServer. +// Don't use this type directly, use NewRulesServerTransport instead. +type RulesServerTransport struct { + srv *RulesServer + beginCreate *tracker[azfake.PollerResponder[armcdn.RulesClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armcdn.RulesClientDeleteResponse]] + newListByRuleSetPager *tracker[azfake.PagerResponder[armcdn.RulesClientListByRuleSetResponse]] + beginUpdate *tracker[azfake.PollerResponder[armcdn.RulesClientUpdateResponse]] +} + +// Do implements the policy.Transporter interface for RulesServerTransport. +func (r *RulesServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "RulesClient.BeginCreate": + resp, err = r.dispatchBeginCreate(req) + case "RulesClient.BeginDelete": + resp, err = r.dispatchBeginDelete(req) + case "RulesClient.Get": + resp, err = r.dispatchGet(req) + case "RulesClient.NewListByRuleSetPager": + resp, err = r.dispatchNewListByRuleSetPager(req) + case "RulesClient.BeginUpdate": + resp, err = r.dispatchBeginUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (r *RulesServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if r.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := r.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/ruleSets/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/rules/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.Rule](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + ruleSetNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("ruleSetName")]) + if err != nil { + return nil, err + } + ruleNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("ruleName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.BeginCreate(req.Context(), resourceGroupNameParam, profileNameParam, ruleSetNameParam, ruleNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + r.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated, http.StatusAccepted}, resp.StatusCode) { + r.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + r.beginCreate.remove(req) + } + + return resp, nil +} + +func (r *RulesServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if r.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := r.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/ruleSets/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/rules/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + ruleSetNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("ruleSetName")]) + if err != nil { + return nil, err + } + ruleNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("ruleName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.BeginDelete(req.Context(), resourceGroupNameParam, profileNameParam, ruleSetNameParam, ruleNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + r.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + r.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + r.beginDelete.remove(req) + } + + return resp, nil +} + +func (r *RulesServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if r.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/ruleSets/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/rules/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + ruleSetNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("ruleSetName")]) + if err != nil { + return nil, err + } + ruleNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("ruleName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.Get(req.Context(), resourceGroupNameParam, profileNameParam, ruleSetNameParam, ruleNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Rule, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (r *RulesServerTransport) dispatchNewListByRuleSetPager(req *http.Request) (*http.Response, error) { + if r.srv.NewListByRuleSetPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByRuleSetPager not implemented")} + } + newListByRuleSetPager := r.newListByRuleSetPager.get(req) + if newListByRuleSetPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/ruleSets/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/rules` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + ruleSetNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("ruleSetName")]) + if err != nil { + return nil, err + } + resp := r.srv.NewListByRuleSetPager(resourceGroupNameParam, profileNameParam, ruleSetNameParam, nil) + newListByRuleSetPager = &resp + r.newListByRuleSetPager.add(req, newListByRuleSetPager) + server.PagerResponderInjectNextLinks(newListByRuleSetPager, req, func(page *armcdn.RulesClientListByRuleSetResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByRuleSetPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + r.newListByRuleSetPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByRuleSetPager) { + r.newListByRuleSetPager.remove(req) + } + return resp, nil +} + +func (r *RulesServerTransport) dispatchBeginUpdate(req *http.Request) (*http.Response, error) { + if r.srv.BeginUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginUpdate not implemented")} + } + beginUpdate := r.beginUpdate.get(req) + if beginUpdate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/ruleSets/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/rules/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 5 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.RuleUpdateParameters](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + ruleSetNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("ruleSetName")]) + if err != nil { + return nil, err + } + ruleNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("ruleName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.BeginUpdate(req.Context(), resourceGroupNameParam, profileNameParam, ruleSetNameParam, ruleNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginUpdate = &respr + r.beginUpdate.add(req, beginUpdate) + } + + resp, err := server.PollerResponderNext(beginUpdate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + r.beginUpdate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginUpdate) { + r.beginUpdate.remove(req) + } + + return resp, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/rulesets_server.go b/sdk/resourcemanager/cdn/armcdn/fake/rulesets_server.go new file mode 100644 index 000000000000..bd7bcaa7a6d5 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/rulesets_server.go @@ -0,0 +1,308 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" + "net/http" + "net/url" + "regexp" +) + +// RuleSetsServer is a fake server for instances of the armcdn.RuleSetsClient type. +type RuleSetsServer struct { + // Create is the fake for method RuleSetsClient.Create + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + Create func(ctx context.Context, resourceGroupName string, profileName string, ruleSetName string, options *armcdn.RuleSetsClientCreateOptions) (resp azfake.Responder[armcdn.RuleSetsClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method RuleSetsClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, profileName string, ruleSetName string, options *armcdn.RuleSetsClientBeginDeleteOptions) (resp azfake.PollerResponder[armcdn.RuleSetsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method RuleSetsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, profileName string, ruleSetName string, options *armcdn.RuleSetsClientGetOptions) (resp azfake.Responder[armcdn.RuleSetsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByProfilePager is the fake for method RuleSetsClient.NewListByProfilePager + // HTTP status codes to indicate success: http.StatusOK + NewListByProfilePager func(resourceGroupName string, profileName string, options *armcdn.RuleSetsClientListByProfileOptions) (resp azfake.PagerResponder[armcdn.RuleSetsClientListByProfileResponse]) + + // NewListResourceUsagePager is the fake for method RuleSetsClient.NewListResourceUsagePager + // HTTP status codes to indicate success: http.StatusOK + NewListResourceUsagePager func(resourceGroupName string, profileName string, ruleSetName string, options *armcdn.RuleSetsClientListResourceUsageOptions) (resp azfake.PagerResponder[armcdn.RuleSetsClientListResourceUsageResponse]) +} + +// NewRuleSetsServerTransport creates a new instance of RuleSetsServerTransport with the provided implementation. +// The returned RuleSetsServerTransport instance is connected to an instance of armcdn.RuleSetsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewRuleSetsServerTransport(srv *RuleSetsServer) *RuleSetsServerTransport { + return &RuleSetsServerTransport{ + srv: srv, + beginDelete: newTracker[azfake.PollerResponder[armcdn.RuleSetsClientDeleteResponse]](), + newListByProfilePager: newTracker[azfake.PagerResponder[armcdn.RuleSetsClientListByProfileResponse]](), + newListResourceUsagePager: newTracker[azfake.PagerResponder[armcdn.RuleSetsClientListResourceUsageResponse]](), + } +} + +// RuleSetsServerTransport connects instances of armcdn.RuleSetsClient to instances of RuleSetsServer. +// Don't use this type directly, use NewRuleSetsServerTransport instead. +type RuleSetsServerTransport struct { + srv *RuleSetsServer + beginDelete *tracker[azfake.PollerResponder[armcdn.RuleSetsClientDeleteResponse]] + newListByProfilePager *tracker[azfake.PagerResponder[armcdn.RuleSetsClientListByProfileResponse]] + newListResourceUsagePager *tracker[azfake.PagerResponder[armcdn.RuleSetsClientListResourceUsageResponse]] +} + +// Do implements the policy.Transporter interface for RuleSetsServerTransport. +func (r *RuleSetsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "RuleSetsClient.Create": + resp, err = r.dispatchCreate(req) + case "RuleSetsClient.BeginDelete": + resp, err = r.dispatchBeginDelete(req) + case "RuleSetsClient.Get": + resp, err = r.dispatchGet(req) + case "RuleSetsClient.NewListByProfilePager": + resp, err = r.dispatchNewListByProfilePager(req) + case "RuleSetsClient.NewListResourceUsagePager": + resp, err = r.dispatchNewListResourceUsagePager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (r *RuleSetsServerTransport) dispatchCreate(req *http.Request) (*http.Response, error) { + if r.srv.Create == nil { + return nil, &nonRetriableError{errors.New("fake for method Create not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/ruleSets/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + ruleSetNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("ruleSetName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.Create(req.Context(), resourceGroupNameParam, profileNameParam, ruleSetNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK, http.StatusCreated}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).RuleSet, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (r *RuleSetsServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if r.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := r.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/ruleSets/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + ruleSetNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("ruleSetName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.BeginDelete(req.Context(), resourceGroupNameParam, profileNameParam, ruleSetNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + r.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + r.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + r.beginDelete.remove(req) + } + + return resp, nil +} + +func (r *RuleSetsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if r.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/ruleSets/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + ruleSetNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("ruleSetName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.Get(req.Context(), resourceGroupNameParam, profileNameParam, ruleSetNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).RuleSet, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (r *RuleSetsServerTransport) dispatchNewListByProfilePager(req *http.Request) (*http.Response, error) { + if r.srv.NewListByProfilePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByProfilePager not implemented")} + } + newListByProfilePager := r.newListByProfilePager.get(req) + if newListByProfilePager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/ruleSets` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + resp := r.srv.NewListByProfilePager(resourceGroupNameParam, profileNameParam, nil) + newListByProfilePager = &resp + r.newListByProfilePager.add(req, newListByProfilePager) + server.PagerResponderInjectNextLinks(newListByProfilePager, req, func(page *armcdn.RuleSetsClientListByProfileResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByProfilePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + r.newListByProfilePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByProfilePager) { + r.newListByProfilePager.remove(req) + } + return resp, nil +} + +func (r *RuleSetsServerTransport) dispatchNewListResourceUsagePager(req *http.Request) (*http.Response, error) { + if r.srv.NewListResourceUsagePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListResourceUsagePager not implemented")} + } + newListResourceUsagePager := r.newListResourceUsagePager.get(req) + if newListResourceUsagePager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/ruleSets/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/usages` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + ruleSetNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("ruleSetName")]) + if err != nil { + return nil, err + } + resp := r.srv.NewListResourceUsagePager(resourceGroupNameParam, profileNameParam, ruleSetNameParam, nil) + newListResourceUsagePager = &resp + r.newListResourceUsagePager.add(req, newListResourceUsagePager) + server.PagerResponderInjectNextLinks(newListResourceUsagePager, req, func(page *armcdn.RuleSetsClientListResourceUsageResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListResourceUsagePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + r.newListResourceUsagePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListResourceUsagePager) { + r.newListResourceUsagePager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/secrets_server.go b/sdk/resourcemanager/cdn/armcdn/fake/secrets_server.go new file mode 100644 index 000000000000..56a948651d93 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/secrets_server.go @@ -0,0 +1,272 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" + "net/http" + "net/url" + "regexp" +) + +// SecretsServer is a fake server for instances of the armcdn.SecretsClient type. +type SecretsServer struct { + // BeginCreate is the fake for method SecretsClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated, http.StatusAccepted + BeginCreate func(ctx context.Context, resourceGroupName string, profileName string, secretName string, secret armcdn.Secret, options *armcdn.SecretsClientBeginCreateOptions) (resp azfake.PollerResponder[armcdn.SecretsClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method SecretsClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, profileName string, secretName string, options *armcdn.SecretsClientBeginDeleteOptions) (resp azfake.PollerResponder[armcdn.SecretsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method SecretsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, profileName string, secretName string, options *armcdn.SecretsClientGetOptions) (resp azfake.Responder[armcdn.SecretsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByProfilePager is the fake for method SecretsClient.NewListByProfilePager + // HTTP status codes to indicate success: http.StatusOK + NewListByProfilePager func(resourceGroupName string, profileName string, options *armcdn.SecretsClientListByProfileOptions) (resp azfake.PagerResponder[armcdn.SecretsClientListByProfileResponse]) +} + +// NewSecretsServerTransport creates a new instance of SecretsServerTransport with the provided implementation. +// The returned SecretsServerTransport instance is connected to an instance of armcdn.SecretsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewSecretsServerTransport(srv *SecretsServer) *SecretsServerTransport { + return &SecretsServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armcdn.SecretsClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armcdn.SecretsClientDeleteResponse]](), + newListByProfilePager: newTracker[azfake.PagerResponder[armcdn.SecretsClientListByProfileResponse]](), + } +} + +// SecretsServerTransport connects instances of armcdn.SecretsClient to instances of SecretsServer. +// Don't use this type directly, use NewSecretsServerTransport instead. +type SecretsServerTransport struct { + srv *SecretsServer + beginCreate *tracker[azfake.PollerResponder[armcdn.SecretsClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armcdn.SecretsClientDeleteResponse]] + newListByProfilePager *tracker[azfake.PagerResponder[armcdn.SecretsClientListByProfileResponse]] +} + +// Do implements the policy.Transporter interface for SecretsServerTransport. +func (s *SecretsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "SecretsClient.BeginCreate": + resp, err = s.dispatchBeginCreate(req) + case "SecretsClient.BeginDelete": + resp, err = s.dispatchBeginDelete(req) + case "SecretsClient.Get": + resp, err = s.dispatchGet(req) + case "SecretsClient.NewListByProfilePager": + resp, err = s.dispatchNewListByProfilePager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (s *SecretsServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if s.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := s.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/secrets/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.Secret](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + secretNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("secretName")]) + if err != nil { + return nil, err + } + respr, errRespr := s.srv.BeginCreate(req.Context(), resourceGroupNameParam, profileNameParam, secretNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + s.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated, http.StatusAccepted}, resp.StatusCode) { + s.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + s.beginCreate.remove(req) + } + + return resp, nil +} + +func (s *SecretsServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if s.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := s.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/secrets/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + secretNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("secretName")]) + if err != nil { + return nil, err + } + respr, errRespr := s.srv.BeginDelete(req.Context(), resourceGroupNameParam, profileNameParam, secretNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + s.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + s.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + s.beginDelete.remove(req) + } + + return resp, nil +} + +func (s *SecretsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if s.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/secrets/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + secretNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("secretName")]) + if err != nil { + return nil, err + } + respr, errRespr := s.srv.Get(req.Context(), resourceGroupNameParam, profileNameParam, secretNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Secret, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (s *SecretsServerTransport) dispatchNewListByProfilePager(req *http.Request) (*http.Response, error) { + if s.srv.NewListByProfilePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByProfilePager not implemented")} + } + newListByProfilePager := s.newListByProfilePager.get(req) + if newListByProfilePager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/secrets` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + resp := s.srv.NewListByProfilePager(resourceGroupNameParam, profileNameParam, nil) + newListByProfilePager = &resp + s.newListByProfilePager.add(req, newListByProfilePager) + server.PagerResponderInjectNextLinks(newListByProfilePager, req, func(page *armcdn.SecretsClientListByProfileResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByProfilePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + s.newListByProfilePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByProfilePager) { + s.newListByProfilePager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/securitypolicies_server.go b/sdk/resourcemanager/cdn/armcdn/fake/securitypolicies_server.go new file mode 100644 index 000000000000..d4ce8961895d --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/securitypolicies_server.go @@ -0,0 +1,332 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2" + "net/http" + "net/url" + "regexp" +) + +// SecurityPoliciesServer is a fake server for instances of the armcdn.SecurityPoliciesClient type. +type SecurityPoliciesServer struct { + // BeginCreate is the fake for method SecurityPoliciesClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated, http.StatusAccepted + BeginCreate func(ctx context.Context, resourceGroupName string, profileName string, securityPolicyName string, securityPolicy armcdn.SecurityPolicy, options *armcdn.SecurityPoliciesClientBeginCreateOptions) (resp azfake.PollerResponder[armcdn.SecurityPoliciesClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method SecurityPoliciesClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, profileName string, securityPolicyName string, options *armcdn.SecurityPoliciesClientBeginDeleteOptions) (resp azfake.PollerResponder[armcdn.SecurityPoliciesClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method SecurityPoliciesClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, profileName string, securityPolicyName string, options *armcdn.SecurityPoliciesClientGetOptions) (resp azfake.Responder[armcdn.SecurityPoliciesClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByProfilePager is the fake for method SecurityPoliciesClient.NewListByProfilePager + // HTTP status codes to indicate success: http.StatusOK + NewListByProfilePager func(resourceGroupName string, profileName string, options *armcdn.SecurityPoliciesClientListByProfileOptions) (resp azfake.PagerResponder[armcdn.SecurityPoliciesClientListByProfileResponse]) + + // BeginPatch is the fake for method SecurityPoliciesClient.BeginPatch + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginPatch func(ctx context.Context, resourceGroupName string, profileName string, securityPolicyName string, securityPolicyUpdateProperties armcdn.SecurityPolicyUpdateParameters, options *armcdn.SecurityPoliciesClientBeginPatchOptions) (resp azfake.PollerResponder[armcdn.SecurityPoliciesClientPatchResponse], errResp azfake.ErrorResponder) +} + +// NewSecurityPoliciesServerTransport creates a new instance of SecurityPoliciesServerTransport with the provided implementation. +// The returned SecurityPoliciesServerTransport instance is connected to an instance of armcdn.SecurityPoliciesClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewSecurityPoliciesServerTransport(srv *SecurityPoliciesServer) *SecurityPoliciesServerTransport { + return &SecurityPoliciesServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armcdn.SecurityPoliciesClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armcdn.SecurityPoliciesClientDeleteResponse]](), + newListByProfilePager: newTracker[azfake.PagerResponder[armcdn.SecurityPoliciesClientListByProfileResponse]](), + beginPatch: newTracker[azfake.PollerResponder[armcdn.SecurityPoliciesClientPatchResponse]](), + } +} + +// SecurityPoliciesServerTransport connects instances of armcdn.SecurityPoliciesClient to instances of SecurityPoliciesServer. +// Don't use this type directly, use NewSecurityPoliciesServerTransport instead. +type SecurityPoliciesServerTransport struct { + srv *SecurityPoliciesServer + beginCreate *tracker[azfake.PollerResponder[armcdn.SecurityPoliciesClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armcdn.SecurityPoliciesClientDeleteResponse]] + newListByProfilePager *tracker[azfake.PagerResponder[armcdn.SecurityPoliciesClientListByProfileResponse]] + beginPatch *tracker[azfake.PollerResponder[armcdn.SecurityPoliciesClientPatchResponse]] +} + +// Do implements the policy.Transporter interface for SecurityPoliciesServerTransport. +func (s *SecurityPoliciesServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "SecurityPoliciesClient.BeginCreate": + resp, err = s.dispatchBeginCreate(req) + case "SecurityPoliciesClient.BeginDelete": + resp, err = s.dispatchBeginDelete(req) + case "SecurityPoliciesClient.Get": + resp, err = s.dispatchGet(req) + case "SecurityPoliciesClient.NewListByProfilePager": + resp, err = s.dispatchNewListByProfilePager(req) + case "SecurityPoliciesClient.BeginPatch": + resp, err = s.dispatchBeginPatch(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (s *SecurityPoliciesServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if s.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := s.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/securityPolicies/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.SecurityPolicy](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + securityPolicyNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("securityPolicyName")]) + if err != nil { + return nil, err + } + respr, errRespr := s.srv.BeginCreate(req.Context(), resourceGroupNameParam, profileNameParam, securityPolicyNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + s.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated, http.StatusAccepted}, resp.StatusCode) { + s.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + s.beginCreate.remove(req) + } + + return resp, nil +} + +func (s *SecurityPoliciesServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if s.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := s.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/securityPolicies/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + securityPolicyNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("securityPolicyName")]) + if err != nil { + return nil, err + } + respr, errRespr := s.srv.BeginDelete(req.Context(), resourceGroupNameParam, profileNameParam, securityPolicyNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + s.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + s.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + s.beginDelete.remove(req) + } + + return resp, nil +} + +func (s *SecurityPoliciesServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if s.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/securityPolicies/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + securityPolicyNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("securityPolicyName")]) + if err != nil { + return nil, err + } + respr, errRespr := s.srv.Get(req.Context(), resourceGroupNameParam, profileNameParam, securityPolicyNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).SecurityPolicy, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (s *SecurityPoliciesServerTransport) dispatchNewListByProfilePager(req *http.Request) (*http.Response, error) { + if s.srv.NewListByProfilePager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByProfilePager not implemented")} + } + newListByProfilePager := s.newListByProfilePager.get(req) + if newListByProfilePager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/securityPolicies` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + resp := s.srv.NewListByProfilePager(resourceGroupNameParam, profileNameParam, nil) + newListByProfilePager = &resp + s.newListByProfilePager.add(req, newListByProfilePager) + server.PagerResponderInjectNextLinks(newListByProfilePager, req, func(page *armcdn.SecurityPoliciesClientListByProfileResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByProfilePager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + s.newListByProfilePager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByProfilePager) { + s.newListByProfilePager.remove(req) + } + return resp, nil +} + +func (s *SecurityPoliciesServerTransport) dispatchBeginPatch(req *http.Request) (*http.Response, error) { + if s.srv.BeginPatch == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginPatch not implemented")} + } + beginPatch := s.beginPatch.get(req) + if beginPatch == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Cdn/profiles/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/securityPolicies/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcdn.SecurityPolicyUpdateParameters](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + profileNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("profileName")]) + if err != nil { + return nil, err + } + securityPolicyNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("securityPolicyName")]) + if err != nil { + return nil, err + } + respr, errRespr := s.srv.BeginPatch(req.Context(), resourceGroupNameParam, profileNameParam, securityPolicyNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginPatch = &respr + s.beginPatch.add(req, beginPatch) + } + + resp, err := server.PollerResponderNext(beginPatch, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + s.beginPatch.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginPatch) { + s.beginPatch.remove(req) + } + + return resp, nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/server_factory.go b/sdk/resourcemanager/cdn/armcdn/fake/server_factory.go new file mode 100644 index 000000000000..f73773114d59 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/server_factory.go @@ -0,0 +1,192 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "net/http" + "strings" + "sync" +) + +// ServerFactory is a fake server for instances of the armcdn.ClientFactory type. +type ServerFactory struct { + AFDCustomDomainsServer AFDCustomDomainsServer + AFDEndpointsServer AFDEndpointsServer + AFDOriginGroupsServer AFDOriginGroupsServer + AFDOriginsServer AFDOriginsServer + AFDProfilesServer AFDProfilesServer + CustomDomainsServer CustomDomainsServer + EdgeNodesServer EdgeNodesServer + EndpointsServer EndpointsServer + LogAnalyticsServer LogAnalyticsServer + ManagedRuleSetsServer ManagedRuleSetsServer + ManagementServer ManagementServer + OperationsServer OperationsServer + OriginGroupsServer OriginGroupsServer + OriginsServer OriginsServer + PoliciesServer PoliciesServer + ProfilesServer ProfilesServer + ResourceUsageServer ResourceUsageServer + RoutesServer RoutesServer + RuleSetsServer RuleSetsServer + RulesServer RulesServer + SecretsServer SecretsServer + SecurityPoliciesServer SecurityPoliciesServer +} + +// NewServerFactoryTransport creates a new instance of ServerFactoryTransport with the provided implementation. +// The returned ServerFactoryTransport instance is connected to an instance of armcdn.ClientFactory via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewServerFactoryTransport(srv *ServerFactory) *ServerFactoryTransport { + return &ServerFactoryTransport{ + srv: srv, + } +} + +// ServerFactoryTransport connects instances of armcdn.ClientFactory to instances of ServerFactory. +// Don't use this type directly, use NewServerFactoryTransport instead. +type ServerFactoryTransport struct { + srv *ServerFactory + trMu sync.Mutex + trAFDCustomDomainsServer *AFDCustomDomainsServerTransport + trAFDEndpointsServer *AFDEndpointsServerTransport + trAFDOriginGroupsServer *AFDOriginGroupsServerTransport + trAFDOriginsServer *AFDOriginsServerTransport + trAFDProfilesServer *AFDProfilesServerTransport + trCustomDomainsServer *CustomDomainsServerTransport + trEdgeNodesServer *EdgeNodesServerTransport + trEndpointsServer *EndpointsServerTransport + trLogAnalyticsServer *LogAnalyticsServerTransport + trManagedRuleSetsServer *ManagedRuleSetsServerTransport + trManagementServer *ManagementServerTransport + trOperationsServer *OperationsServerTransport + trOriginGroupsServer *OriginGroupsServerTransport + trOriginsServer *OriginsServerTransport + trPoliciesServer *PoliciesServerTransport + trProfilesServer *ProfilesServerTransport + trResourceUsageServer *ResourceUsageServerTransport + trRoutesServer *RoutesServerTransport + trRuleSetsServer *RuleSetsServerTransport + trRulesServer *RulesServerTransport + trSecretsServer *SecretsServerTransport + trSecurityPoliciesServer *SecurityPoliciesServerTransport +} + +// Do implements the policy.Transporter interface for ServerFactoryTransport. +func (s *ServerFactoryTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + client := method[:strings.Index(method, ".")] + var resp *http.Response + var err error + + switch client { + case "AFDCustomDomainsClient": + initServer(s, &s.trAFDCustomDomainsServer, func() *AFDCustomDomainsServerTransport { + return NewAFDCustomDomainsServerTransport(&s.srv.AFDCustomDomainsServer) + }) + resp, err = s.trAFDCustomDomainsServer.Do(req) + case "AFDEndpointsClient": + initServer(s, &s.trAFDEndpointsServer, func() *AFDEndpointsServerTransport { return NewAFDEndpointsServerTransport(&s.srv.AFDEndpointsServer) }) + resp, err = s.trAFDEndpointsServer.Do(req) + case "AFDOriginGroupsClient": + initServer(s, &s.trAFDOriginGroupsServer, func() *AFDOriginGroupsServerTransport { + return NewAFDOriginGroupsServerTransport(&s.srv.AFDOriginGroupsServer) + }) + resp, err = s.trAFDOriginGroupsServer.Do(req) + case "AFDOriginsClient": + initServer(s, &s.trAFDOriginsServer, func() *AFDOriginsServerTransport { return NewAFDOriginsServerTransport(&s.srv.AFDOriginsServer) }) + resp, err = s.trAFDOriginsServer.Do(req) + case "AFDProfilesClient": + initServer(s, &s.trAFDProfilesServer, func() *AFDProfilesServerTransport { return NewAFDProfilesServerTransport(&s.srv.AFDProfilesServer) }) + resp, err = s.trAFDProfilesServer.Do(req) + case "CustomDomainsClient": + initServer(s, &s.trCustomDomainsServer, func() *CustomDomainsServerTransport { + return NewCustomDomainsServerTransport(&s.srv.CustomDomainsServer) + }) + resp, err = s.trCustomDomainsServer.Do(req) + case "EdgeNodesClient": + initServer(s, &s.trEdgeNodesServer, func() *EdgeNodesServerTransport { return NewEdgeNodesServerTransport(&s.srv.EdgeNodesServer) }) + resp, err = s.trEdgeNodesServer.Do(req) + case "EndpointsClient": + initServer(s, &s.trEndpointsServer, func() *EndpointsServerTransport { return NewEndpointsServerTransport(&s.srv.EndpointsServer) }) + resp, err = s.trEndpointsServer.Do(req) + case "LogAnalyticsClient": + initServer(s, &s.trLogAnalyticsServer, func() *LogAnalyticsServerTransport { return NewLogAnalyticsServerTransport(&s.srv.LogAnalyticsServer) }) + resp, err = s.trLogAnalyticsServer.Do(req) + case "ManagedRuleSetsClient": + initServer(s, &s.trManagedRuleSetsServer, func() *ManagedRuleSetsServerTransport { + return NewManagedRuleSetsServerTransport(&s.srv.ManagedRuleSetsServer) + }) + resp, err = s.trManagedRuleSetsServer.Do(req) + case "ManagementClient": + initServer(s, &s.trManagementServer, func() *ManagementServerTransport { return NewManagementServerTransport(&s.srv.ManagementServer) }) + resp, err = s.trManagementServer.Do(req) + case "OperationsClient": + initServer(s, &s.trOperationsServer, func() *OperationsServerTransport { return NewOperationsServerTransport(&s.srv.OperationsServer) }) + resp, err = s.trOperationsServer.Do(req) + case "OriginGroupsClient": + initServer(s, &s.trOriginGroupsServer, func() *OriginGroupsServerTransport { return NewOriginGroupsServerTransport(&s.srv.OriginGroupsServer) }) + resp, err = s.trOriginGroupsServer.Do(req) + case "OriginsClient": + initServer(s, &s.trOriginsServer, func() *OriginsServerTransport { return NewOriginsServerTransport(&s.srv.OriginsServer) }) + resp, err = s.trOriginsServer.Do(req) + case "PoliciesClient": + initServer(s, &s.trPoliciesServer, func() *PoliciesServerTransport { return NewPoliciesServerTransport(&s.srv.PoliciesServer) }) + resp, err = s.trPoliciesServer.Do(req) + case "ProfilesClient": + initServer(s, &s.trProfilesServer, func() *ProfilesServerTransport { return NewProfilesServerTransport(&s.srv.ProfilesServer) }) + resp, err = s.trProfilesServer.Do(req) + case "ResourceUsageClient": + initServer(s, &s.trResourceUsageServer, func() *ResourceUsageServerTransport { + return NewResourceUsageServerTransport(&s.srv.ResourceUsageServer) + }) + resp, err = s.trResourceUsageServer.Do(req) + case "RoutesClient": + initServer(s, &s.trRoutesServer, func() *RoutesServerTransport { return NewRoutesServerTransport(&s.srv.RoutesServer) }) + resp, err = s.trRoutesServer.Do(req) + case "RuleSetsClient": + initServer(s, &s.trRuleSetsServer, func() *RuleSetsServerTransport { return NewRuleSetsServerTransport(&s.srv.RuleSetsServer) }) + resp, err = s.trRuleSetsServer.Do(req) + case "RulesClient": + initServer(s, &s.trRulesServer, func() *RulesServerTransport { return NewRulesServerTransport(&s.srv.RulesServer) }) + resp, err = s.trRulesServer.Do(req) + case "SecretsClient": + initServer(s, &s.trSecretsServer, func() *SecretsServerTransport { return NewSecretsServerTransport(&s.srv.SecretsServer) }) + resp, err = s.trSecretsServer.Do(req) + case "SecurityPoliciesClient": + initServer(s, &s.trSecurityPoliciesServer, func() *SecurityPoliciesServerTransport { + return NewSecurityPoliciesServerTransport(&s.srv.SecurityPoliciesServer) + }) + resp, err = s.trSecurityPoliciesServer.Do(req) + default: + err = fmt.Errorf("unhandled client %s", client) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func initServer[T any](s *ServerFactoryTransport, dst **T, src func() *T) { + s.trMu.Lock() + if *dst == nil { + *dst = src() + } + s.trMu.Unlock() +} diff --git a/sdk/resourcemanager/cdn/armcdn/fake/time_rfc3339.go b/sdk/resourcemanager/cdn/armcdn/fake/time_rfc3339.go new file mode 100644 index 000000000000..b0535a7b63e6 --- /dev/null +++ b/sdk/resourcemanager/cdn/armcdn/fake/time_rfc3339.go @@ -0,0 +1,86 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "encoding/json" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "reflect" + "regexp" + "strings" + "time" +) + +// Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases. +var tzOffsetRegex = regexp.MustCompile(`(Z|z|\+|-)(\d+:\d+)*"*$`) + +const ( + utcDateTimeJSON = `"2006-01-02T15:04:05.999999999"` + utcDateTime = "2006-01-02T15:04:05.999999999" + dateTimeJSON = `"` + time.RFC3339Nano + `"` +) + +type dateTimeRFC3339 time.Time + +func (t dateTimeRFC3339) MarshalJSON() ([]byte, error) { + tt := time.Time(t) + return tt.MarshalJSON() +} + +func (t dateTimeRFC3339) MarshalText() ([]byte, error) { + tt := time.Time(t) + return tt.MarshalText() +} + +func (t *dateTimeRFC3339) UnmarshalJSON(data []byte) error { + layout := utcDateTimeJSON + if tzOffsetRegex.Match(data) { + layout = dateTimeJSON + } + return t.Parse(layout, string(data)) +} + +func (t *dateTimeRFC3339) UnmarshalText(data []byte) error { + layout := utcDateTime + if tzOffsetRegex.Match(data) { + layout = time.RFC3339Nano + } + return t.Parse(layout, string(data)) +} + +func (t *dateTimeRFC3339) Parse(layout, value string) error { + p, err := time.Parse(layout, strings.ToUpper(value)) + *t = dateTimeRFC3339(p) + return err +} + +func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) { + if t == nil { + return + } else if azcore.IsNullValue(t) { + m[k] = nil + return + } else if reflect.ValueOf(t).IsNil() { + return + } + m[k] = (*dateTimeRFC3339)(t) +} + +func unpopulateDateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { + if data == nil || strings.EqualFold(string(data), "null") { + return nil + } + var aux dateTimeRFC3339 + if err := json.Unmarshal(data, &aux); err != nil { + return fmt.Errorf("struct field %s: %v", fn, err) + } + *t = (*time.Time)(&aux) + return nil +} diff --git a/sdk/resourcemanager/cdn/armcdn/go.mod b/sdk/resourcemanager/cdn/armcdn/go.mod index 7cbcdcbde013..83d964e8f6c0 100644 --- a/sdk/resourcemanager/cdn/armcdn/go.mod +++ b/sdk/resourcemanager/cdn/armcdn/go.mod @@ -3,27 +3,27 @@ module github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cdn/armcdn/v2 go 1.18 require ( - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.1 - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2 - github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 - github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal v1.1.2 - github.com/stretchr/testify v1.7.0 + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 + github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0 + github.com/stretchr/testify v1.8.4 ) require ( - github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.0.0 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/dnaeon/go-vcr v1.1.0 // indirect - github.com/golang-jwt/jwt/v4 v4.5.0 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/dnaeon/go-vcr v1.2.0 // indirect + github.com/golang-jwt/jwt/v5 v5.0.0 // indirect + github.com/google/uuid v1.3.1 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - golang.org/x/crypto v0.6.0 // indirect - golang.org/x/net v0.8.0 // indirect - golang.org/x/sys v0.6.0 // indirect - golang.org/x/text v0.8.0 // indirect + golang.org/x/crypto v0.14.0 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/sdk/resourcemanager/cdn/armcdn/go.sum b/sdk/resourcemanager/cdn/armcdn/go.sum index 93fdfc2850cd..88bb72abf2ba 100644 --- a/sdk/resourcemanager/cdn/armcdn/go.sum +++ b/sdk/resourcemanager/cdn/armcdn/go.sum @@ -1,24 +1,25 @@ -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.1 h1:SEy2xmstIphdPwNBUi7uhvjyjhVKISfwjfOJmuy7kg4= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.1/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2 h1:uqM+VoHjVH6zdlkLF2b6O0ZANcHoj3rO0PoQ3jglUJA= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2/go.mod h1:twTKAa1E6hLmSDjLhaCkbTMQKc7p/rNLU40rLxGEOCI= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 h1:sXr+ck84g/ZlZUOZiNELInmMgOsuGwdjjVkEIde0OtY= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 h1:fb8kj/Dh4CSwgsOzHeZY4Xh68cFVbzXx+ONXGMY//4w= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0/go.mod h1:uReU2sSxZExRPBAg3qKzmAucSi51+SP1OhohieR821Q= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 h1:BMAjVKJM0U/CYF27gA0ZMmXGkOcvfFtD0oHVZ1TIPRI= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0/go.mod h1:1fXstnBMas5kzG+S3q8UoJcmyU6nUeunJcMDHcRYHhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 h1:d81/ng9rET2YqdVkVwkb6EXeRrLJIwyGnJcAlAWKwhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0/go.mod h1:s4kgfzA0covAXNicZHDMN58jExvcng2mC/DepXiF1EI= 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/internal v1.1.2/go.mod h1:FbdwsQ2EzwvXxOPcMFYO8ogEc9uMMIj3YkmCdXdAFmk= -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/resources/armresources v1.0.0/go.mod h1:s1tW/At+xHqjNFvWU4G0c0Qv33KOhvbGNj0RCTQDV8s= -github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0 h1:UE9n9rkJF62ArLb1F3DEjRt8O3jLwMWdSoypKV4f3MU= -github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0 h1:PTFGRSlMKCQelWwxUyYVEUqseBJVemLyqWJjvMyt0do= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 v2.0.0/go.mod h1:LRr2FzBTQlONPPa5HREE5+RjSCTXl7BwOvYOaWTqCaI= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/managementgroups/armmanagementgroups v1.0.0 h1:pPvTJ1dY0sA35JOeFq6TsY2xj6Z85Yo23Pj4wCCvu4o= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1 h1:7CBQ+Ei8SP2c6ydQTGCCrS35bDxgTMfoP2miAwK++OU= +github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.1.1/go.mod h1:c/wcGeGx5FUPbM/JltUYHZcKmigwyVLJlDq+4HdtXaw= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 h1:WpB/QDNLpMw72xHJc34BNNykqSOeEJDAWkhf0u12/Jk= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dnaeon/go-vcr v1.1.0 h1:ReYa/UBrRyQdant9B4fNHGoCNKw6qh6P0fsdGmZpR7c= -github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= -github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= -github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= +github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= +github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= @@ -26,23 +27,21 @@ github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9 github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= -golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/sdk/resourcemanager/cdn/armcdn/loganalytics_client.go b/sdk/resourcemanager/cdn/armcdn/loganalytics_client.go index 8f9263caac95..7d461c163182 100644 --- a/sdk/resourcemanager/cdn/armcdn/loganalytics_client.go +++ b/sdk/resourcemanager/cdn/armcdn/loganalytics_client.go @@ -34,7 +34,7 @@ type LogAnalyticsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewLogAnalyticsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*LogAnalyticsClient, error) { - cl, err := arm.NewClient(moduleName+".LogAnalyticsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -56,6 +56,10 @@ func NewLogAnalyticsClient(subscriptionID string, credential azcore.TokenCredent // method. func (client *LogAnalyticsClient) GetLogAnalyticsLocations(ctx context.Context, resourceGroupName string, profileName string, options *LogAnalyticsClientGetLogAnalyticsLocationsOptions) (LogAnalyticsClientGetLogAnalyticsLocationsResponse, error) { var err error + const operationName = "LogAnalyticsClient.GetLogAnalyticsLocations" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getLogAnalyticsLocationsCreateRequest(ctx, resourceGroupName, profileName, options) if err != nil { return LogAnalyticsClientGetLogAnalyticsLocationsResponse{}, err @@ -118,6 +122,10 @@ func (client *LogAnalyticsClient) getLogAnalyticsLocationsHandleResponse(resp *h // method. func (client *LogAnalyticsClient) GetLogAnalyticsMetrics(ctx context.Context, resourceGroupName string, profileName string, metrics []LogMetric, dateTimeBegin time.Time, dateTimeEnd time.Time, granularity LogMetricsGranularity, customDomains []string, protocols []string, options *LogAnalyticsClientGetLogAnalyticsMetricsOptions) (LogAnalyticsClientGetLogAnalyticsMetricsResponse, error) { var err error + const operationName = "LogAnalyticsClient.GetLogAnalyticsMetrics" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getLogAnalyticsMetricsCreateRequest(ctx, resourceGroupName, profileName, metrics, dateTimeBegin, dateTimeEnd, granularity, customDomains, protocols, options) if err != nil { return LogAnalyticsClientGetLogAnalyticsMetricsResponse{}, err @@ -207,6 +215,10 @@ func (client *LogAnalyticsClient) getLogAnalyticsMetricsHandleResponse(resp *htt // method. func (client *LogAnalyticsClient) GetLogAnalyticsRankings(ctx context.Context, resourceGroupName string, profileName string, rankings []LogRanking, metrics []LogRankingMetric, maxRanking int32, dateTimeBegin time.Time, dateTimeEnd time.Time, options *LogAnalyticsClientGetLogAnalyticsRankingsOptions) (LogAnalyticsClientGetLogAnalyticsRankingsResponse, error) { var err error + const operationName = "LogAnalyticsClient.GetLogAnalyticsRankings" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getLogAnalyticsRankingsCreateRequest(ctx, resourceGroupName, profileName, rankings, metrics, maxRanking, dateTimeBegin, dateTimeEnd, options) if err != nil { return LogAnalyticsClientGetLogAnalyticsRankingsResponse{}, err @@ -283,6 +295,10 @@ func (client *LogAnalyticsClient) getLogAnalyticsRankingsHandleResponse(resp *ht // method. func (client *LogAnalyticsClient) GetLogAnalyticsResources(ctx context.Context, resourceGroupName string, profileName string, options *LogAnalyticsClientGetLogAnalyticsResourcesOptions) (LogAnalyticsClientGetLogAnalyticsResourcesResponse, error) { var err error + const operationName = "LogAnalyticsClient.GetLogAnalyticsResources" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getLogAnalyticsResourcesCreateRequest(ctx, resourceGroupName, profileName, options) if err != nil { return LogAnalyticsClientGetLogAnalyticsResourcesResponse{}, err @@ -345,6 +361,10 @@ func (client *LogAnalyticsClient) getLogAnalyticsResourcesHandleResponse(resp *h // method. func (client *LogAnalyticsClient) GetWafLogAnalyticsMetrics(ctx context.Context, resourceGroupName string, profileName string, metrics []WafMetric, dateTimeBegin time.Time, dateTimeEnd time.Time, granularity WafGranularity, options *LogAnalyticsClientGetWafLogAnalyticsMetricsOptions) (LogAnalyticsClientGetWafLogAnalyticsMetricsResponse, error) { var err error + const operationName = "LogAnalyticsClient.GetWafLogAnalyticsMetrics" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getWafLogAnalyticsMetricsCreateRequest(ctx, resourceGroupName, profileName, metrics, dateTimeBegin, dateTimeEnd, granularity, options) if err != nil { return LogAnalyticsClientGetWafLogAnalyticsMetricsResponse{}, err @@ -428,6 +448,10 @@ func (client *LogAnalyticsClient) getWafLogAnalyticsMetricsHandleResponse(resp * // method. func (client *LogAnalyticsClient) GetWafLogAnalyticsRankings(ctx context.Context, resourceGroupName string, profileName string, metrics []WafMetric, dateTimeBegin time.Time, dateTimeEnd time.Time, maxRanking int32, rankings []WafRankingType, options *LogAnalyticsClientGetWafLogAnalyticsRankingsOptions) (LogAnalyticsClientGetWafLogAnalyticsRankingsResponse, error) { var err error + const operationName = "LogAnalyticsClient.GetWafLogAnalyticsRankings" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getWafLogAnalyticsRankingsCreateRequest(ctx, resourceGroupName, profileName, metrics, dateTimeBegin, dateTimeEnd, maxRanking, rankings, options) if err != nil { return LogAnalyticsClientGetWafLogAnalyticsRankingsResponse{}, err diff --git a/sdk/resourcemanager/cdn/armcdn/loganalytics_client_example_test.go b/sdk/resourcemanager/cdn/armcdn/loganalytics_client_example_test.go index 5766b05ad767..91391f12f89b 100644 --- a/sdk/resourcemanager/cdn/armcdn/loganalytics_client_example_test.go +++ b/sdk/resourcemanager/cdn/armcdn/loganalytics_client_example_test.go @@ -46,34 +46,34 @@ func ExampleLogAnalyticsClient_GetLogAnalyticsMetrics() { _ = res // If the HTTP response code is 200 as defined in example definition, your response structure would look as follows. Please pay attention that all the values in the output are fake values for just demo purposes. // res.MetricsResponse = armcdn.MetricsResponse{ - // DateTimeBegin: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T12:30:27.554+08:00"); return t}()), - // DateTimeEnd: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T13:00:27.554+08:00"); return t}()), + // DateTimeBegin: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T04:30:27.554Z"); return t}()), + // DateTimeEnd: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T05:00:27.554Z"); return t}()), // Granularity: to.Ptr(armcdn.MetricsGranularityPT5M), // Series: []*armcdn.MetricsResponseSeriesItem{ // { // Data: []*armcdn.Components1Gs0LlpSchemasMetricsresponsePropertiesSeriesItemsPropertiesDataItems{ // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T04:35:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T04:35:00.000Z"); return t}()), // Value: to.Ptr[float32](4250), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T04:40:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T04:40:00.000Z"); return t}()), // Value: to.Ptr[float32](3120), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T04:45:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T04:45:00.000Z"); return t}()), // Value: to.Ptr[float32](2221), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T04:50:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T04:50:00.000Z"); return t}()), // Value: to.Ptr[float32](2466), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T04:55:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T04:55:00.000Z"); return t}()), // Value: to.Ptr[float32](2654), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T05:00:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T05:00:00.000Z"); return t}()), // Value: to.Ptr[float32](3565), // }}, // Groups: []*armcdn.MetricsResponseSeriesPropertiesItemsItem{ @@ -108,8 +108,8 @@ func ExampleLogAnalyticsClient_GetLogAnalyticsRankings() { _ = res // If the HTTP response code is 200 as defined in example definition, your response structure would look as follows. Please pay attention that all the values in the output are fake values for just demo purposes. // res.RankingsResponse = armcdn.RankingsResponse{ - // DateTimeBegin: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T14:49:27.554+08:00"); return t}()), - // DateTimeEnd: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T17:49:27.554+08:00"); return t}()), + // DateTimeBegin: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T06:49:27.554Z"); return t}()), + // DateTimeEnd: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T09:49:27.554Z"); return t}()), // Tables: []*armcdn.RankingsResponseTablesItem{ // { // Data: []*armcdn.RankingsResponseTablesPropertiesItemsItem{ @@ -305,106 +305,106 @@ func ExampleLogAnalyticsClient_GetWafLogAnalyticsMetrics() { _ = res // If the HTTP response code is 200 as defined in example definition, your response structure would look as follows. Please pay attention that all the values in the output are fake values for just demo purposes. // res.WafMetricsResponse = armcdn.WafMetricsResponse{ - // DateTimeBegin: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T14:30:27.554+08:00"); return t}()), - // DateTimeEnd: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T17:00:27.554+08:00"); return t}()), + // DateTimeBegin: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T06:30:27.554Z"); return t}()), + // DateTimeEnd: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T09:00:27.554Z"); return t}()), // Granularity: to.Ptr(armcdn.WafMetricsGranularityPT5M), // Series: []*armcdn.WafMetricsResponseSeriesItem{ // { // Data: []*armcdn.Components18OrqelSchemasWafmetricsresponsePropertiesSeriesItemsPropertiesDataItems{ // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T07:05:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T07:05:00.000Z"); return t}()), // Value: to.Ptr[float32](2), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T07:10:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T07:10:00.000Z"); return t}()), // Value: to.Ptr[float32](32), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T07:15:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T07:15:00.000Z"); return t}()), // Value: to.Ptr[float32](31), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T07:20:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T07:20:00.000Z"); return t}()), // Value: to.Ptr[float32](63), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T07:25:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T07:25:00.000Z"); return t}()), // Value: to.Ptr[float32](50), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T07:30:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T07:30:00.000Z"); return t}()), // Value: to.Ptr[float32](12), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T07:35:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T07:35:00.000Z"); return t}()), // Value: to.Ptr[float32](8), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T07:40:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T07:40:00.000Z"); return t}()), // Value: to.Ptr[float32](21), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T07:45:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T07:45:00.000Z"); return t}()), // Value: to.Ptr[float32](30), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T07:50:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T07:50:00.000Z"); return t}()), // Value: to.Ptr[float32](18), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T07:55:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T07:55:00.000Z"); return t}()), // Value: to.Ptr[float32](28), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:00:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:00:00.000Z"); return t}()), // Value: to.Ptr[float32](3), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:05:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:05:00.000Z"); return t}()), // Value: to.Ptr[float32](58), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:10:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:10:00.000Z"); return t}()), // Value: to.Ptr[float32](42), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:15:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:15:00.000Z"); return t}()), // Value: to.Ptr[float32](17), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:20:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:20:00.000Z"); return t}()), // Value: to.Ptr[float32](21), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:25:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:25:00.000Z"); return t}()), // Value: to.Ptr[float32](41), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:30:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:30:00.000Z"); return t}()), // Value: to.Ptr[float32](8), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:35:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:35:00.000Z"); return t}()), // Value: to.Ptr[float32](15), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:40:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:40:00.000Z"); return t}()), // Value: to.Ptr[float32](25), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:45:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:45:00.000Z"); return t}()), // Value: to.Ptr[float32](13), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:50:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:50:00.000Z"); return t}()), // Value: to.Ptr[float32](17), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:55:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T08:55:00.000Z"); return t}()), // Value: to.Ptr[float32](29), // }, // { - // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T09:00:00+00:00"); return t}()), + // DateTime: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T09:00:00.000Z"); return t}()), // Value: to.Ptr[float32](17), // }}, // Groups: []*armcdn.WafMetricsResponseSeriesPropertiesItemsItem{ @@ -449,8 +449,8 @@ func ExampleLogAnalyticsClient_GetWafLogAnalyticsRankings() { // Value: to.Ptr[int64](1268), // }}, // }}, - // DateTimeBegin: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T14:49:27.554+08:00"); return t}()), - // DateTimeEnd: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T17:49:27.554+08:00"); return t}()), + // DateTimeBegin: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T06:49:27.554Z"); return t}()), + // DateTimeEnd: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2020-11-04T09:49:27.554Z"); return t}()), // Groups: []*string{ // to.Ptr("ruleId")}, // } diff --git a/sdk/resourcemanager/cdn/armcdn/managedrulesets_client.go b/sdk/resourcemanager/cdn/armcdn/managedrulesets_client.go index 2b573cabd594..86c88c6917a3 100644 --- a/sdk/resourcemanager/cdn/armcdn/managedrulesets_client.go +++ b/sdk/resourcemanager/cdn/armcdn/managedrulesets_client.go @@ -32,7 +32,7 @@ type ManagedRuleSetsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewManagedRuleSetsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*ManagedRuleSetsClient, error) { - cl, err := arm.NewClient(moduleName+".ManagedRuleSetsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -54,25 +54,20 @@ func (client *ManagedRuleSetsClient) NewListPager(options *ManagedRuleSetsClient return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ManagedRuleSetsClientListResponse) (ManagedRuleSetsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ManagedRuleSetsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return ManagedRuleSetsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return ManagedRuleSetsClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ManagedRuleSetsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/cdn/armcdn/management_client.go b/sdk/resourcemanager/cdn/armcdn/management_client.go index 62fd4a72affb..f48eb8e1e52f 100644 --- a/sdk/resourcemanager/cdn/armcdn/management_client.go +++ b/sdk/resourcemanager/cdn/armcdn/management_client.go @@ -32,7 +32,7 @@ type ManagementClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewManagementClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*ManagementClient, error) { - cl, err := arm.NewClient(moduleName+".ManagementClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -54,6 +54,10 @@ func NewManagementClient(subscriptionID string, credential azcore.TokenCredentia // method. func (client *ManagementClient) CheckEndpointNameAvailability(ctx context.Context, resourceGroupName string, checkEndpointNameAvailabilityInput CheckEndpointNameAvailabilityInput, options *ManagementClientCheckEndpointNameAvailabilityOptions) (ManagementClientCheckEndpointNameAvailabilityResponse, error) { var err error + const operationName = "ManagementClient.CheckEndpointNameAvailability" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.checkEndpointNameAvailabilityCreateRequest(ctx, resourceGroupName, checkEndpointNameAvailabilityInput, options) if err != nil { return ManagementClientCheckEndpointNameAvailabilityResponse{}, err @@ -114,6 +118,10 @@ func (client *ManagementClient) checkEndpointNameAvailabilityHandleResponse(resp // method. func (client *ManagementClient) CheckNameAvailability(ctx context.Context, checkNameAvailabilityInput CheckNameAvailabilityInput, options *ManagementClientCheckNameAvailabilityOptions) (ManagementClientCheckNameAvailabilityResponse, error) { var err error + const operationName = "ManagementClient.CheckNameAvailability" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.checkNameAvailabilityCreateRequest(ctx, checkNameAvailabilityInput, options) if err != nil { return ManagementClientCheckNameAvailabilityResponse{}, err @@ -166,6 +174,10 @@ func (client *ManagementClient) checkNameAvailabilityHandleResponse(resp *http.R // method. func (client *ManagementClient) CheckNameAvailabilityWithSubscription(ctx context.Context, checkNameAvailabilityInput CheckNameAvailabilityInput, options *ManagementClientCheckNameAvailabilityWithSubscriptionOptions) (ManagementClientCheckNameAvailabilityWithSubscriptionResponse, error) { var err error + const operationName = "ManagementClient.CheckNameAvailabilityWithSubscription" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.checkNameAvailabilityWithSubscriptionCreateRequest(ctx, checkNameAvailabilityInput, options) if err != nil { return ManagementClientCheckNameAvailabilityWithSubscriptionResponse{}, err @@ -223,6 +235,10 @@ func (client *ManagementClient) checkNameAvailabilityWithSubscriptionHandleRespo // method. func (client *ManagementClient) ValidateProbe(ctx context.Context, validateProbeInput ValidateProbeInput, options *ManagementClientValidateProbeOptions) (ManagementClientValidateProbeResponse, error) { var err error + const operationName = "ManagementClient.ValidateProbe" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.validateProbeCreateRequest(ctx, validateProbeInput, options) if err != nil { return ManagementClientValidateProbeResponse{}, err diff --git a/sdk/resourcemanager/cdn/armcdn/models_serde.go b/sdk/resourcemanager/cdn/armcdn/models_serde.go index 9f0a9a81cb30..b029bc8862c9 100644 --- a/sdk/resourcemanager/cdn/armcdn/models_serde.go +++ b/sdk/resourcemanager/cdn/armcdn/models_serde.go @@ -1519,7 +1519,7 @@ func (c *ClientPortMatchConditionParameters) UnmarshalJSON(data []byte) error { // MarshalJSON implements the json.Marshaller interface for type Components18OrqelSchemasWafmetricsresponsePropertiesSeriesItemsPropertiesDataItems. func (c Components18OrqelSchemasWafmetricsresponsePropertiesSeriesItemsPropertiesDataItems) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populateTimeRFC3339(objectMap, "dateTime", c.DateTime) + populateDateTimeRFC3339(objectMap, "dateTime", c.DateTime) populate(objectMap, "value", c.Value) return json.Marshal(objectMap) } @@ -1534,7 +1534,7 @@ func (c *Components18OrqelSchemasWafmetricsresponsePropertiesSeriesItemsProperti var err error switch key { case "dateTime": - err = unpopulateTimeRFC3339(val, "DateTime", &c.DateTime) + err = unpopulateDateTimeRFC3339(val, "DateTime", &c.DateTime) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &c.Value) @@ -1550,7 +1550,7 @@ func (c *Components18OrqelSchemasWafmetricsresponsePropertiesSeriesItemsProperti // MarshalJSON implements the json.Marshaller interface for type Components1Gs0LlpSchemasMetricsresponsePropertiesSeriesItemsPropertiesDataItems. func (c Components1Gs0LlpSchemasMetricsresponsePropertiesSeriesItemsPropertiesDataItems) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populateTimeRFC3339(objectMap, "dateTime", c.DateTime) + populateDateTimeRFC3339(objectMap, "dateTime", c.DateTime) populate(objectMap, "value", c.Value) return json.Marshal(objectMap) } @@ -1565,7 +1565,7 @@ func (c *Components1Gs0LlpSchemasMetricsresponsePropertiesSeriesItemsPropertiesD var err error switch key { case "dateTime": - err = unpopulateTimeRFC3339(val, "DateTime", &c.DateTime) + err = unpopulateDateTimeRFC3339(val, "DateTime", &c.DateTime) delete(rawMsg, key) case "value": err = unpopulate(val, "Value", &c.Value) @@ -4828,8 +4828,8 @@ func (m *MetricSpecification) UnmarshalJSON(data []byte) error { // MarshalJSON implements the json.Marshaller interface for type MetricsResponse. func (m MetricsResponse) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populateTimeRFC3339(objectMap, "dateTimeBegin", m.DateTimeBegin) - populateTimeRFC3339(objectMap, "dateTimeEnd", m.DateTimeEnd) + populateDateTimeRFC3339(objectMap, "dateTimeBegin", m.DateTimeBegin) + populateDateTimeRFC3339(objectMap, "dateTimeEnd", m.DateTimeEnd) populate(objectMap, "granularity", m.Granularity) populate(objectMap, "series", m.Series) return json.Marshal(objectMap) @@ -4845,10 +4845,10 @@ func (m *MetricsResponse) UnmarshalJSON(data []byte) error { var err error switch key { case "dateTimeBegin": - err = unpopulateTimeRFC3339(val, "DateTimeBegin", &m.DateTimeBegin) + err = unpopulateDateTimeRFC3339(val, "DateTimeBegin", &m.DateTimeBegin) delete(rawMsg, key) case "dateTimeEnd": - err = unpopulateTimeRFC3339(val, "DateTimeEnd", &m.DateTimeEnd) + err = unpopulateDateTimeRFC3339(val, "DateTimeEnd", &m.DateTimeEnd) delete(rawMsg, key) case "granularity": err = unpopulate(val, "Granularity", &m.Granularity) @@ -6192,8 +6192,8 @@ func (q *QueryStringMatchConditionParameters) UnmarshalJSON(data []byte) error { // MarshalJSON implements the json.Marshaller interface for type RankingsResponse. func (r RankingsResponse) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populateTimeRFC3339(objectMap, "dateTimeBegin", r.DateTimeBegin) - populateTimeRFC3339(objectMap, "dateTimeEnd", r.DateTimeEnd) + populateDateTimeRFC3339(objectMap, "dateTimeBegin", r.DateTimeBegin) + populateDateTimeRFC3339(objectMap, "dateTimeEnd", r.DateTimeEnd) populate(objectMap, "tables", r.Tables) return json.Marshal(objectMap) } @@ -6208,10 +6208,10 @@ func (r *RankingsResponse) UnmarshalJSON(data []byte) error { var err error switch key { case "dateTimeBegin": - err = unpopulateTimeRFC3339(val, "DateTimeBegin", &r.DateTimeBegin) + err = unpopulateDateTimeRFC3339(val, "DateTimeBegin", &r.DateTimeBegin) delete(rawMsg, key) case "dateTimeEnd": - err = unpopulateTimeRFC3339(val, "DateTimeEnd", &r.DateTimeEnd) + err = unpopulateDateTimeRFC3339(val, "DateTimeEnd", &r.DateTimeEnd) delete(rawMsg, key) case "tables": err = unpopulate(val, "Tables", &r.Tables) @@ -8218,10 +8218,10 @@ func (s *SupportedOptimizationTypesListResult) UnmarshalJSON(data []byte) error // MarshalJSON implements the json.Marshaller interface for type SystemData. func (s SystemData) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populateTimeRFC3339(objectMap, "createdAt", s.CreatedAt) + populateDateTimeRFC3339(objectMap, "createdAt", s.CreatedAt) populate(objectMap, "createdBy", s.CreatedBy) populate(objectMap, "createdByType", s.CreatedByType) - populateTimeRFC3339(objectMap, "lastModifiedAt", s.LastModifiedAt) + populateDateTimeRFC3339(objectMap, "lastModifiedAt", s.LastModifiedAt) populate(objectMap, "lastModifiedBy", s.LastModifiedBy) populate(objectMap, "lastModifiedByType", s.LastModifiedByType) return json.Marshal(objectMap) @@ -8237,7 +8237,7 @@ func (s *SystemData) UnmarshalJSON(data []byte) error { var err error switch key { case "createdAt": - err = unpopulateTimeRFC3339(val, "CreatedAt", &s.CreatedAt) + err = unpopulateDateTimeRFC3339(val, "CreatedAt", &s.CreatedAt) delete(rawMsg, key) case "createdBy": err = unpopulate(val, "CreatedBy", &s.CreatedBy) @@ -8246,7 +8246,7 @@ func (s *SystemData) UnmarshalJSON(data []byte) error { err = unpopulate(val, "CreatedByType", &s.CreatedByType) delete(rawMsg, key) case "lastModifiedAt": - err = unpopulateTimeRFC3339(val, "LastModifiedAt", &s.LastModifiedAt) + err = unpopulateDateTimeRFC3339(val, "LastModifiedAt", &s.LastModifiedAt) delete(rawMsg, key) case "lastModifiedBy": err = unpopulate(val, "LastModifiedBy", &s.LastModifiedBy) @@ -9078,8 +9078,8 @@ func (v *ValidateSecretOutput) UnmarshalJSON(data []byte) error { // MarshalJSON implements the json.Marshaller interface for type WafMetricsResponse. func (w WafMetricsResponse) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populateTimeRFC3339(objectMap, "dateTimeBegin", w.DateTimeBegin) - populateTimeRFC3339(objectMap, "dateTimeEnd", w.DateTimeEnd) + populateDateTimeRFC3339(objectMap, "dateTimeBegin", w.DateTimeBegin) + populateDateTimeRFC3339(objectMap, "dateTimeEnd", w.DateTimeEnd) populate(objectMap, "granularity", w.Granularity) populate(objectMap, "series", w.Series) return json.Marshal(objectMap) @@ -9095,10 +9095,10 @@ func (w *WafMetricsResponse) UnmarshalJSON(data []byte) error { var err error switch key { case "dateTimeBegin": - err = unpopulateTimeRFC3339(val, "DateTimeBegin", &w.DateTimeBegin) + err = unpopulateDateTimeRFC3339(val, "DateTimeBegin", &w.DateTimeBegin) delete(rawMsg, key) case "dateTimeEnd": - err = unpopulateTimeRFC3339(val, "DateTimeEnd", &w.DateTimeEnd) + err = unpopulateDateTimeRFC3339(val, "DateTimeEnd", &w.DateTimeEnd) delete(rawMsg, key) case "granularity": err = unpopulate(val, "Granularity", &w.Granularity) @@ -9188,8 +9188,8 @@ func (w *WafMetricsResponseSeriesPropertiesItemsItem) UnmarshalJSON(data []byte) func (w WafRankingsResponse) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "data", w.Data) - populateTimeRFC3339(objectMap, "dateTimeBegin", w.DateTimeBegin) - populateTimeRFC3339(objectMap, "dateTimeEnd", w.DateTimeEnd) + populateDateTimeRFC3339(objectMap, "dateTimeBegin", w.DateTimeBegin) + populateDateTimeRFC3339(objectMap, "dateTimeEnd", w.DateTimeEnd) populate(objectMap, "groups", w.Groups) return json.Marshal(objectMap) } @@ -9207,10 +9207,10 @@ func (w *WafRankingsResponse) UnmarshalJSON(data []byte) error { err = unpopulate(val, "Data", &w.Data) delete(rawMsg, key) case "dateTimeBegin": - err = unpopulateTimeRFC3339(val, "DateTimeBegin", &w.DateTimeBegin) + err = unpopulateDateTimeRFC3339(val, "DateTimeBegin", &w.DateTimeBegin) delete(rawMsg, key) case "dateTimeEnd": - err = unpopulateTimeRFC3339(val, "DateTimeEnd", &w.DateTimeEnd) + err = unpopulateDateTimeRFC3339(val, "DateTimeEnd", &w.DateTimeEnd) delete(rawMsg, key) case "groups": err = unpopulate(val, "Groups", &w.Groups) diff --git a/sdk/resourcemanager/cdn/armcdn/operations_client.go b/sdk/resourcemanager/cdn/armcdn/operations_client.go index 3413b75c24a7..39ccb2f91992 100644 --- a/sdk/resourcemanager/cdn/armcdn/operations_client.go +++ b/sdk/resourcemanager/cdn/armcdn/operations_client.go @@ -27,7 +27,7 @@ type OperationsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewOperationsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*OperationsClient, error) { - cl, err := arm.NewClient(moduleName+".OperationsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -47,25 +47,20 @@ func (client *OperationsClient) NewListPager(options *OperationsClientListOption return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *OperationsClientListResponse) (OperationsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "OperationsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return OperationsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return OperationsClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return OperationsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/cdn/armcdn/origingroups_client.go b/sdk/resourcemanager/cdn/armcdn/origingroups_client.go index 10f15a80aaa5..9a6f0d1434aa 100644 --- a/sdk/resourcemanager/cdn/armcdn/origingroups_client.go +++ b/sdk/resourcemanager/cdn/armcdn/origingroups_client.go @@ -32,7 +32,7 @@ type OriginGroupsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewOriginGroupsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*OriginGroupsClient, error) { - cl, err := arm.NewClient(moduleName+".OriginGroupsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -60,10 +60,14 @@ func (client *OriginGroupsClient) BeginCreate(ctx context.Context, resourceGroup if err != nil { return nil, err } - poller, err := runtime.NewPoller[OriginGroupsClientCreateResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[OriginGroupsClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[OriginGroupsClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[OriginGroupsClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -73,6 +77,10 @@ func (client *OriginGroupsClient) BeginCreate(ctx context.Context, resourceGroup // Generated from API version 2023-05-01 func (client *OriginGroupsClient) create(ctx context.Context, resourceGroupName string, profileName string, endpointName string, originGroupName string, originGroup OriginGroup, options *OriginGroupsClientBeginCreateOptions) (*http.Response, error) { var err error + const operationName = "OriginGroupsClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, profileName, endpointName, originGroupName, originGroup, options) if err != nil { return nil, err @@ -141,10 +149,14 @@ func (client *OriginGroupsClient) BeginDelete(ctx context.Context, resourceGroup if err != nil { return nil, err } - poller, err := runtime.NewPoller[OriginGroupsClientDeleteResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[OriginGroupsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[OriginGroupsClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[OriginGroupsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -154,6 +166,10 @@ func (client *OriginGroupsClient) BeginDelete(ctx context.Context, resourceGroup // Generated from API version 2023-05-01 func (client *OriginGroupsClient) deleteOperation(ctx context.Context, resourceGroupName string, profileName string, endpointName string, originGroupName string, options *OriginGroupsClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "OriginGroupsClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, profileName, endpointName, originGroupName, options) if err != nil { return nil, err @@ -214,6 +230,10 @@ func (client *OriginGroupsClient) deleteCreateRequest(ctx context.Context, resou // - options - OriginGroupsClientGetOptions contains the optional parameters for the OriginGroupsClient.Get method. func (client *OriginGroupsClient) Get(ctx context.Context, resourceGroupName string, profileName string, endpointName string, originGroupName string, options *OriginGroupsClientGetOptions) (OriginGroupsClientGetResponse, error) { var err error + const operationName = "OriginGroupsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, profileName, endpointName, originGroupName, options) if err != nil { return OriginGroupsClientGetResponse{}, err @@ -287,25 +307,20 @@ func (client *OriginGroupsClient) NewListByEndpointPager(resourceGroupName strin return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *OriginGroupsClientListByEndpointResponse) (OriginGroupsClientListByEndpointResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByEndpointCreateRequest(ctx, resourceGroupName, profileName, endpointName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "OriginGroupsClient.NewListByEndpointPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByEndpointCreateRequest(ctx, resourceGroupName, profileName, endpointName, options) + }, nil) if err != nil { return OriginGroupsClientListByEndpointResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return OriginGroupsClientListByEndpointResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return OriginGroupsClientListByEndpointResponse{}, runtime.NewResponseError(resp) - } return client.listByEndpointHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -365,10 +380,14 @@ func (client *OriginGroupsClient) BeginUpdate(ctx context.Context, resourceGroup if err != nil { return nil, err } - poller, err := runtime.NewPoller[OriginGroupsClientUpdateResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[OriginGroupsClientUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[OriginGroupsClientUpdateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[OriginGroupsClientUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -378,6 +397,10 @@ func (client *OriginGroupsClient) BeginUpdate(ctx context.Context, resourceGroup // Generated from API version 2023-05-01 func (client *OriginGroupsClient) update(ctx context.Context, resourceGroupName string, profileName string, endpointName string, originGroupName string, originGroupUpdateProperties OriginGroupUpdateParameters, options *OriginGroupsClientBeginUpdateOptions) (*http.Response, error) { var err error + const operationName = "OriginGroupsClient.BeginUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceGroupName, profileName, endpointName, originGroupName, originGroupUpdateProperties, options) if err != nil { return nil, err diff --git a/sdk/resourcemanager/cdn/armcdn/origins_client.go b/sdk/resourcemanager/cdn/armcdn/origins_client.go index 7f3a58a14583..00f6ea3e7e75 100644 --- a/sdk/resourcemanager/cdn/armcdn/origins_client.go +++ b/sdk/resourcemanager/cdn/armcdn/origins_client.go @@ -32,7 +32,7 @@ type OriginsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewOriginsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*OriginsClient, error) { - cl, err := arm.NewClient(moduleName+".OriginsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -59,10 +59,14 @@ func (client *OriginsClient) BeginCreate(ctx context.Context, resourceGroupName if err != nil { return nil, err } - poller, err := runtime.NewPoller[OriginsClientCreateResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[OriginsClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[OriginsClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[OriginsClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -72,6 +76,10 @@ func (client *OriginsClient) BeginCreate(ctx context.Context, resourceGroupName // Generated from API version 2023-05-01 func (client *OriginsClient) create(ctx context.Context, resourceGroupName string, profileName string, endpointName string, originName string, origin Origin, options *OriginsClientBeginCreateOptions) (*http.Response, error) { var err error + const operationName = "OriginsClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, profileName, endpointName, originName, origin, options) if err != nil { return nil, err @@ -139,10 +147,14 @@ func (client *OriginsClient) BeginDelete(ctx context.Context, resourceGroupName if err != nil { return nil, err } - poller, err := runtime.NewPoller[OriginsClientDeleteResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[OriginsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[OriginsClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[OriginsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -152,6 +164,10 @@ func (client *OriginsClient) BeginDelete(ctx context.Context, resourceGroupName // Generated from API version 2023-05-01 func (client *OriginsClient) deleteOperation(ctx context.Context, resourceGroupName string, profileName string, endpointName string, originName string, options *OriginsClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "OriginsClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, profileName, endpointName, originName, options) if err != nil { return nil, err @@ -212,6 +228,10 @@ func (client *OriginsClient) deleteCreateRequest(ctx context.Context, resourceGr // - options - OriginsClientGetOptions contains the optional parameters for the OriginsClient.Get method. func (client *OriginsClient) Get(ctx context.Context, resourceGroupName string, profileName string, endpointName string, originName string, options *OriginsClientGetOptions) (OriginsClientGetResponse, error) { var err error + const operationName = "OriginsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, profileName, endpointName, originName, options) if err != nil { return OriginsClientGetResponse{}, err @@ -285,25 +305,20 @@ func (client *OriginsClient) NewListByEndpointPager(resourceGroupName string, pr return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *OriginsClientListByEndpointResponse) (OriginsClientListByEndpointResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByEndpointCreateRequest(ctx, resourceGroupName, profileName, endpointName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "OriginsClient.NewListByEndpointPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByEndpointCreateRequest(ctx, resourceGroupName, profileName, endpointName, options) + }, nil) if err != nil { return OriginsClientListByEndpointResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return OriginsClientListByEndpointResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return OriginsClientListByEndpointResponse{}, runtime.NewResponseError(resp) - } return client.listByEndpointHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -362,10 +377,14 @@ func (client *OriginsClient) BeginUpdate(ctx context.Context, resourceGroupName if err != nil { return nil, err } - poller, err := runtime.NewPoller[OriginsClientUpdateResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[OriginsClientUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[OriginsClientUpdateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[OriginsClientUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -375,6 +394,10 @@ func (client *OriginsClient) BeginUpdate(ctx context.Context, resourceGroupName // Generated from API version 2023-05-01 func (client *OriginsClient) update(ctx context.Context, resourceGroupName string, profileName string, endpointName string, originName string, originUpdateProperties OriginUpdateParameters, options *OriginsClientBeginUpdateOptions) (*http.Response, error) { var err error + const operationName = "OriginsClient.BeginUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceGroupName, profileName, endpointName, originName, originUpdateProperties, options) if err != nil { return nil, err diff --git a/sdk/resourcemanager/cdn/armcdn/policies_client.go b/sdk/resourcemanager/cdn/armcdn/policies_client.go index 2cd925981130..df449599e6b0 100644 --- a/sdk/resourcemanager/cdn/armcdn/policies_client.go +++ b/sdk/resourcemanager/cdn/armcdn/policies_client.go @@ -32,7 +32,7 @@ type PoliciesClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewPoliciesClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*PoliciesClient, error) { - cl, err := arm.NewClient(moduleName+".PoliciesClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -58,10 +58,14 @@ func (client *PoliciesClient) BeginCreateOrUpdate(ctx context.Context, resourceG if err != nil { return nil, err } - poller, err := runtime.NewPoller[PoliciesClientCreateOrUpdateResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[PoliciesClientCreateOrUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[PoliciesClientCreateOrUpdateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[PoliciesClientCreateOrUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -71,6 +75,10 @@ func (client *PoliciesClient) BeginCreateOrUpdate(ctx context.Context, resourceG // Generated from API version 2023-05-01 func (client *PoliciesClient) createOrUpdate(ctx context.Context, resourceGroupName string, policyName string, cdnWebApplicationFirewallPolicy WebApplicationFirewallPolicy, options *PoliciesClientBeginCreateOrUpdateOptions) (*http.Response, error) { var err error + const operationName = "PoliciesClient.BeginCreateOrUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createOrUpdateCreateRequest(ctx, resourceGroupName, policyName, cdnWebApplicationFirewallPolicy, options) if err != nil { return nil, err @@ -124,6 +132,10 @@ func (client *PoliciesClient) createOrUpdateCreateRequest(ctx context.Context, r // - options - PoliciesClientDeleteOptions contains the optional parameters for the PoliciesClient.Delete method. func (client *PoliciesClient) Delete(ctx context.Context, resourceGroupName string, policyName string, options *PoliciesClientDeleteOptions) (PoliciesClientDeleteResponse, error) { var err error + const operationName = "PoliciesClient.Delete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, policyName, options) if err != nil { return PoliciesClientDeleteResponse{}, err @@ -174,6 +186,10 @@ func (client *PoliciesClient) deleteCreateRequest(ctx context.Context, resourceG // - options - PoliciesClientGetOptions contains the optional parameters for the PoliciesClient.Get method. func (client *PoliciesClient) Get(ctx context.Context, resourceGroupName string, policyName string, options *PoliciesClientGetOptions) (PoliciesClientGetResponse, error) { var err error + const operationName = "PoliciesClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, policyName, options) if err != nil { return PoliciesClientGetResponse{}, err @@ -236,25 +252,20 @@ func (client *PoliciesClient) NewListPager(resourceGroupName string, options *Po return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *PoliciesClientListResponse) (PoliciesClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, resourceGroupName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "PoliciesClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, resourceGroupName, options) + }, nil) if err != nil { return PoliciesClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return PoliciesClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PoliciesClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -304,10 +315,14 @@ func (client *PoliciesClient) BeginUpdate(ctx context.Context, resourceGroupName if err != nil { return nil, err } - poller, err := runtime.NewPoller[PoliciesClientUpdateResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[PoliciesClientUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[PoliciesClientUpdateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[PoliciesClientUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -318,6 +333,10 @@ func (client *PoliciesClient) BeginUpdate(ctx context.Context, resourceGroupName // Generated from API version 2023-05-01 func (client *PoliciesClient) update(ctx context.Context, resourceGroupName string, policyName string, cdnWebApplicationFirewallPolicyPatchParameters WebApplicationFirewallPolicyPatchParameters, options *PoliciesClientBeginUpdateOptions) (*http.Response, error) { var err error + const operationName = "PoliciesClient.BeginUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceGroupName, policyName, cdnWebApplicationFirewallPolicyPatchParameters, options) if err != nil { return nil, err diff --git a/sdk/resourcemanager/cdn/armcdn/polymorphic_helpers.go b/sdk/resourcemanager/cdn/armcdn/polymorphic_helpers.go index e6ea07af0b72..00acaea984ce 100644 --- a/sdk/resourcemanager/cdn/armcdn/polymorphic_helpers.go +++ b/sdk/resourcemanager/cdn/armcdn/polymorphic_helpers.go @@ -103,10 +103,10 @@ func unmarshalDeliveryRuleConditionClassification(rawMsg json.RawMessage) (Deliv b = &DeliveryRuleClientPortCondition{} case string(MatchVariableCookies): b = &DeliveryRuleCookiesCondition{} - case string(MatchVariableHostName): - b = &DeliveryRuleHostNameCondition{} case string(MatchVariableHTTPVersion): b = &DeliveryRuleHTTPVersionCondition{} + case string(MatchVariableHostName): + b = &DeliveryRuleHostNameCondition{} case string(MatchVariableIsDevice): b = &DeliveryRuleIsDeviceCondition{} case string(MatchVariablePostArgs): @@ -125,12 +125,12 @@ func unmarshalDeliveryRuleConditionClassification(rawMsg json.RawMessage) (Deliv b = &DeliveryRuleRequestSchemeCondition{} case string(MatchVariableRequestURI): b = &DeliveryRuleRequestURICondition{} + case string(MatchVariableSSLProtocol): + b = &DeliveryRuleSSLProtocolCondition{} case string(MatchVariableServerPort): b = &DeliveryRuleServerPortCondition{} case string(MatchVariableSocketAddr): b = &DeliveryRuleSocketAddrCondition{} - case string(MatchVariableSSLProtocol): - b = &DeliveryRuleSSLProtocolCondition{} case string(MatchVariableURLFileExtension): b = &DeliveryRuleURLFileExtensionCondition{} case string(MatchVariableURLFileName): diff --git a/sdk/resourcemanager/cdn/armcdn/profiles_client.go b/sdk/resourcemanager/cdn/armcdn/profiles_client.go index 39f483f5e582..f695b2d895aa 100644 --- a/sdk/resourcemanager/cdn/armcdn/profiles_client.go +++ b/sdk/resourcemanager/cdn/armcdn/profiles_client.go @@ -32,7 +32,7 @@ type ProfilesClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewProfilesClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*ProfilesClient, error) { - cl, err := arm.NewClient(moduleName+".ProfilesClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -59,10 +59,13 @@ func (client *ProfilesClient) BeginCanMigrate(ctx context.Context, resourceGroup } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[ProfilesClientCanMigrateResponse]{ FinalStateVia: runtime.FinalStateViaLocation, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[ProfilesClientCanMigrateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[ProfilesClientCanMigrateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -72,6 +75,10 @@ func (client *ProfilesClient) BeginCanMigrate(ctx context.Context, resourceGroup // Generated from API version 2023-05-01 func (client *ProfilesClient) canMigrate(ctx context.Context, resourceGroupName string, canMigrateParameters CanMigrateParameters, options *ProfilesClientBeginCanMigrateOptions) (*http.Response, error) { var err error + const operationName = "ProfilesClient.BeginCanMigrate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.canMigrateCreateRequest(ctx, resourceGroupName, canMigrateParameters, options) if err != nil { return nil, err @@ -128,10 +135,14 @@ func (client *ProfilesClient) BeginCreate(ctx context.Context, resourceGroupName if err != nil { return nil, err } - poller, err := runtime.NewPoller[ProfilesClientCreateResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[ProfilesClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[ProfilesClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[ProfilesClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -142,6 +153,10 @@ func (client *ProfilesClient) BeginCreate(ctx context.Context, resourceGroupName // Generated from API version 2023-05-01 func (client *ProfilesClient) create(ctx context.Context, resourceGroupName string, profileName string, profile Profile, options *ProfilesClientBeginCreateOptions) (*http.Response, error) { var err error + const operationName = "ProfilesClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, profileName, profile, options) if err != nil { return nil, err @@ -202,10 +217,14 @@ func (client *ProfilesClient) BeginDelete(ctx context.Context, resourceGroupName if err != nil { return nil, err } - poller, err := runtime.NewPoller[ProfilesClientDeleteResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[ProfilesClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[ProfilesClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[ProfilesClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -217,6 +236,10 @@ func (client *ProfilesClient) BeginDelete(ctx context.Context, resourceGroupName // Generated from API version 2023-05-01 func (client *ProfilesClient) deleteOperation(ctx context.Context, resourceGroupName string, profileName string, options *ProfilesClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "ProfilesClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, profileName, options) if err != nil { return nil, err @@ -270,6 +293,10 @@ func (client *ProfilesClient) deleteCreateRequest(ctx context.Context, resourceG // - options - ProfilesClientGenerateSsoURIOptions contains the optional parameters for the ProfilesClient.GenerateSsoURI method. func (client *ProfilesClient) GenerateSsoURI(ctx context.Context, resourceGroupName string, profileName string, options *ProfilesClientGenerateSsoURIOptions) (ProfilesClientGenerateSsoURIResponse, error) { var err error + const operationName = "ProfilesClient.GenerateSsoURI" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.generateSsoURICreateRequest(ctx, resourceGroupName, profileName, options) if err != nil { return ProfilesClientGenerateSsoURIResponse{}, err @@ -332,6 +359,10 @@ func (client *ProfilesClient) generateSsoURIHandleResponse(resp *http.Response) // - options - ProfilesClientGetOptions contains the optional parameters for the ProfilesClient.Get method. func (client *ProfilesClient) Get(ctx context.Context, resourceGroupName string, profileName string, options *ProfilesClientGetOptions) (ProfilesClientGetResponse, error) { var err error + const operationName = "ProfilesClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, profileName, options) if err != nil { return ProfilesClientGetResponse{}, err @@ -393,25 +424,20 @@ func (client *ProfilesClient) NewListPager(options *ProfilesClientListOptions) * return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ProfilesClientListResponse) (ProfilesClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ProfilesClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return ProfilesClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return ProfilesClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ProfilesClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -455,25 +481,20 @@ func (client *ProfilesClient) NewListByResourceGroupPager(resourceGroupName stri return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ProfilesClientListByResourceGroupResponse) (ProfilesClientListByResourceGroupResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByResourceGroupCreateRequest(ctx, resourceGroupName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ProfilesClient.NewListByResourceGroupPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByResourceGroupCreateRequest(ctx, resourceGroupName, options) + }, nil) if err != nil { return ProfilesClientListByResourceGroupResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return ProfilesClientListByResourceGroupResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ProfilesClientListByResourceGroupResponse{}, runtime.NewResponseError(resp) - } return client.listByResourceGroupHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -523,25 +544,20 @@ func (client *ProfilesClient) NewListResourceUsagePager(resourceGroupName string return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ProfilesClientListResourceUsageResponse) (ProfilesClientListResourceUsageResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listResourceUsageCreateRequest(ctx, resourceGroupName, profileName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return ProfilesClientListResourceUsageResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ProfilesClient.NewListResourceUsagePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listResourceUsageCreateRequest(ctx, resourceGroupName, profileName, options) + }, nil) if err != nil { return ProfilesClientListResourceUsageResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ProfilesClientListResourceUsageResponse{}, runtime.NewResponseError(resp) - } return client.listResourceUsageHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -592,6 +608,10 @@ func (client *ProfilesClient) listResourceUsageHandleResponse(resp *http.Respons // method. func (client *ProfilesClient) ListSupportedOptimizationTypes(ctx context.Context, resourceGroupName string, profileName string, options *ProfilesClientListSupportedOptimizationTypesOptions) (ProfilesClientListSupportedOptimizationTypesResponse, error) { var err error + const operationName = "ProfilesClient.ListSupportedOptimizationTypes" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.listSupportedOptimizationTypesCreateRequest(ctx, resourceGroupName, profileName, options) if err != nil { return ProfilesClientListSupportedOptimizationTypesResponse{}, err @@ -659,10 +679,13 @@ func (client *ProfilesClient) BeginMigrate(ctx context.Context, resourceGroupNam } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[ProfilesClientMigrateResponse]{ FinalStateVia: runtime.FinalStateViaLocation, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[ProfilesClientMigrateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[ProfilesClientMigrateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -672,6 +695,10 @@ func (client *ProfilesClient) BeginMigrate(ctx context.Context, resourceGroupNam // Generated from API version 2023-05-01 func (client *ProfilesClient) migrate(ctx context.Context, resourceGroupName string, migrationParameters MigrationParameters, options *ProfilesClientBeginMigrateOptions) (*http.Response, error) { var err error + const operationName = "ProfilesClient.BeginMigrate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.migrateCreateRequest(ctx, resourceGroupName, migrationParameters, options) if err != nil { return nil, err @@ -728,10 +755,13 @@ func (client *ProfilesClient) BeginMigrationCommit(ctx context.Context, resource } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[ProfilesClientMigrationCommitResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[ProfilesClientMigrationCommitResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[ProfilesClientMigrationCommitResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -741,6 +771,10 @@ func (client *ProfilesClient) BeginMigrationCommit(ctx context.Context, resource // Generated from API version 2023-05-01 func (client *ProfilesClient) migrationCommit(ctx context.Context, resourceGroupName string, profileName string, options *ProfilesClientBeginMigrationCommitOptions) (*http.Response, error) { var err error + const operationName = "ProfilesClient.BeginMigrationCommit" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.migrationCommitCreateRequest(ctx, resourceGroupName, profileName, options) if err != nil { return nil, err @@ -798,10 +832,14 @@ func (client *ProfilesClient) BeginUpdate(ctx context.Context, resourceGroupName if err != nil { return nil, err } - poller, err := runtime.NewPoller[ProfilesClientUpdateResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[ProfilesClientUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[ProfilesClientUpdateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[ProfilesClientUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -812,6 +850,10 @@ func (client *ProfilesClient) BeginUpdate(ctx context.Context, resourceGroupName // Generated from API version 2023-05-01 func (client *ProfilesClient) update(ctx context.Context, resourceGroupName string, profileName string, profileUpdateParameters ProfileUpdateParameters, options *ProfilesClientBeginUpdateOptions) (*http.Response, error) { var err error + const operationName = "ProfilesClient.BeginUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceGroupName, profileName, profileUpdateParameters, options) if err != nil { return nil, err diff --git a/sdk/resourcemanager/cdn/armcdn/resourceusage_client.go b/sdk/resourcemanager/cdn/armcdn/resourceusage_client.go index 7594ef6ad58b..306f461847de 100644 --- a/sdk/resourcemanager/cdn/armcdn/resourceusage_client.go +++ b/sdk/resourcemanager/cdn/armcdn/resourceusage_client.go @@ -32,7 +32,7 @@ type ResourceUsageClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewResourceUsageClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*ResourceUsageClient, error) { - cl, err := arm.NewClient(moduleName+".ResourceUsageClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -53,25 +53,20 @@ func (client *ResourceUsageClient) NewListPager(options *ResourceUsageClientList return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ResourceUsageClientListResponse) (ResourceUsageClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ResourceUsageClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return ResourceUsageClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return ResourceUsageClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ResourceUsageClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/cdn/armcdn/routes_client.go b/sdk/resourcemanager/cdn/armcdn/routes_client.go index c5e1253f9359..b65350aa8b8d 100644 --- a/sdk/resourcemanager/cdn/armcdn/routes_client.go +++ b/sdk/resourcemanager/cdn/armcdn/routes_client.go @@ -32,7 +32,7 @@ type RoutesClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewRoutesClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*RoutesClient, error) { - cl, err := arm.NewClient(moduleName+".RoutesClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -63,10 +63,13 @@ func (client *RoutesClient) BeginCreate(ctx context.Context, resourceGroupName s } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[RoutesClientCreateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[RoutesClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[RoutesClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -77,6 +80,10 @@ func (client *RoutesClient) BeginCreate(ctx context.Context, resourceGroupName s // Generated from API version 2023-05-01 func (client *RoutesClient) create(ctx context.Context, resourceGroupName string, profileName string, endpointName string, routeName string, route Route, options *RoutesClientBeginCreateOptions) (*http.Response, error) { var err error + const operationName = "RoutesClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, profileName, endpointName, routeName, route, options) if err != nil { return nil, err @@ -148,10 +155,13 @@ func (client *RoutesClient) BeginDelete(ctx context.Context, resourceGroupName s } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[RoutesClientDeleteResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[RoutesClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[RoutesClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -162,6 +172,10 @@ func (client *RoutesClient) BeginDelete(ctx context.Context, resourceGroupName s // Generated from API version 2023-05-01 func (client *RoutesClient) deleteOperation(ctx context.Context, resourceGroupName string, profileName string, endpointName string, routeName string, options *RoutesClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "RoutesClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, profileName, endpointName, routeName, options) if err != nil { return nil, err @@ -224,6 +238,10 @@ func (client *RoutesClient) deleteCreateRequest(ctx context.Context, resourceGro // - options - RoutesClientGetOptions contains the optional parameters for the RoutesClient.Get method. func (client *RoutesClient) Get(ctx context.Context, resourceGroupName string, profileName string, endpointName string, routeName string, options *RoutesClientGetOptions) (RoutesClientGetResponse, error) { var err error + const operationName = "RoutesClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, profileName, endpointName, routeName, options) if err != nil { return RoutesClientGetResponse{}, err @@ -298,25 +316,20 @@ func (client *RoutesClient) NewListByEndpointPager(resourceGroupName string, pro return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *RoutesClientListByEndpointResponse) (RoutesClientListByEndpointResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByEndpointCreateRequest(ctx, resourceGroupName, profileName, endpointName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "RoutesClient.NewListByEndpointPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByEndpointCreateRequest(ctx, resourceGroupName, profileName, endpointName, options) + }, nil) if err != nil { return RoutesClientListByEndpointResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return RoutesClientListByEndpointResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return RoutesClientListByEndpointResponse{}, runtime.NewResponseError(resp) - } return client.listByEndpointHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -379,10 +392,13 @@ func (client *RoutesClient) BeginUpdate(ctx context.Context, resourceGroupName s } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[RoutesClientUpdateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[RoutesClientUpdateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[RoutesClientUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -393,6 +409,10 @@ func (client *RoutesClient) BeginUpdate(ctx context.Context, resourceGroupName s // Generated from API version 2023-05-01 func (client *RoutesClient) update(ctx context.Context, resourceGroupName string, profileName string, endpointName string, routeName string, routeUpdateProperties RouteUpdateParameters, options *RoutesClientBeginUpdateOptions) (*http.Response, error) { var err error + const operationName = "RoutesClient.BeginUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceGroupName, profileName, endpointName, routeName, routeUpdateProperties, options) if err != nil { return nil, err diff --git a/sdk/resourcemanager/cdn/armcdn/rules_client.go b/sdk/resourcemanager/cdn/armcdn/rules_client.go index c9fb434c3582..f41b7aa2af41 100644 --- a/sdk/resourcemanager/cdn/armcdn/rules_client.go +++ b/sdk/resourcemanager/cdn/armcdn/rules_client.go @@ -32,7 +32,7 @@ type RulesClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewRulesClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*RulesClient, error) { - cl, err := arm.NewClient(moduleName+".RulesClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -62,10 +62,13 @@ func (client *RulesClient) BeginCreate(ctx context.Context, resourceGroupName st } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[RulesClientCreateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[RulesClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[RulesClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -75,6 +78,10 @@ func (client *RulesClient) BeginCreate(ctx context.Context, resourceGroupName st // Generated from API version 2023-05-01 func (client *RulesClient) create(ctx context.Context, resourceGroupName string, profileName string, ruleSetName string, ruleName string, rule Rule, options *RulesClientBeginCreateOptions) (*http.Response, error) { var err error + const operationName = "RulesClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, profileName, ruleSetName, ruleName, rule, options) if err != nil { return nil, err @@ -145,10 +152,13 @@ func (client *RulesClient) BeginDelete(ctx context.Context, resourceGroupName st } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[RulesClientDeleteResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[RulesClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[RulesClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -158,6 +168,10 @@ func (client *RulesClient) BeginDelete(ctx context.Context, resourceGroupName st // Generated from API version 2023-05-01 func (client *RulesClient) deleteOperation(ctx context.Context, resourceGroupName string, profileName string, ruleSetName string, ruleName string, options *RulesClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "RulesClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, profileName, ruleSetName, ruleName, options) if err != nil { return nil, err @@ -219,6 +233,10 @@ func (client *RulesClient) deleteCreateRequest(ctx context.Context, resourceGrou // - options - RulesClientGetOptions contains the optional parameters for the RulesClient.Get method. func (client *RulesClient) Get(ctx context.Context, resourceGroupName string, profileName string, ruleSetName string, ruleName string, options *RulesClientGetOptions) (RulesClientGetResponse, error) { var err error + const operationName = "RulesClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, profileName, ruleSetName, ruleName, options) if err != nil { return RulesClientGetResponse{}, err @@ -292,25 +310,20 @@ func (client *RulesClient) NewListByRuleSetPager(resourceGroupName string, profi return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *RulesClientListByRuleSetResponse) (RulesClientListByRuleSetResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByRuleSetCreateRequest(ctx, resourceGroupName, profileName, ruleSetName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "RulesClient.NewListByRuleSetPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByRuleSetCreateRequest(ctx, resourceGroupName, profileName, ruleSetName, options) + }, nil) if err != nil { return RulesClientListByRuleSetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return RulesClientListByRuleSetResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return RulesClientListByRuleSetResponse{}, runtime.NewResponseError(resp) - } return client.listByRuleSetHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -372,10 +385,13 @@ func (client *RulesClient) BeginUpdate(ctx context.Context, resourceGroupName st } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[RulesClientUpdateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[RulesClientUpdateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[RulesClientUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -385,6 +401,10 @@ func (client *RulesClient) BeginUpdate(ctx context.Context, resourceGroupName st // Generated from API version 2023-05-01 func (client *RulesClient) update(ctx context.Context, resourceGroupName string, profileName string, ruleSetName string, ruleName string, ruleUpdateProperties RuleUpdateParameters, options *RulesClientBeginUpdateOptions) (*http.Response, error) { var err error + const operationName = "RulesClient.BeginUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceGroupName, profileName, ruleSetName, ruleName, ruleUpdateProperties, options) if err != nil { return nil, err diff --git a/sdk/resourcemanager/cdn/armcdn/rulesets_client.go b/sdk/resourcemanager/cdn/armcdn/rulesets_client.go index 686efbf20f16..919f1e7dc853 100644 --- a/sdk/resourcemanager/cdn/armcdn/rulesets_client.go +++ b/sdk/resourcemanager/cdn/armcdn/rulesets_client.go @@ -32,7 +32,7 @@ type RuleSetsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewRuleSetsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*RuleSetsClient, error) { - cl, err := arm.NewClient(moduleName+".RuleSetsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -54,6 +54,10 @@ func NewRuleSetsClient(subscriptionID string, credential azcore.TokenCredential, // - options - RuleSetsClientCreateOptions contains the optional parameters for the RuleSetsClient.Create method. func (client *RuleSetsClient) Create(ctx context.Context, resourceGroupName string, profileName string, ruleSetName string, options *RuleSetsClientCreateOptions) (RuleSetsClientCreateResponse, error) { var err error + const operationName = "RuleSetsClient.Create" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, profileName, ruleSetName, options) if err != nil { return RuleSetsClientCreateResponse{}, err @@ -127,10 +131,13 @@ func (client *RuleSetsClient) BeginDelete(ctx context.Context, resourceGroupName } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[RuleSetsClientDeleteResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[RuleSetsClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[RuleSetsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -141,6 +148,10 @@ func (client *RuleSetsClient) BeginDelete(ctx context.Context, resourceGroupName // Generated from API version 2023-05-01 func (client *RuleSetsClient) deleteOperation(ctx context.Context, resourceGroupName string, profileName string, ruleSetName string, options *RuleSetsClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "RuleSetsClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, profileName, ruleSetName, options) if err != nil { return nil, err @@ -198,6 +209,10 @@ func (client *RuleSetsClient) deleteCreateRequest(ctx context.Context, resourceG // - options - RuleSetsClientGetOptions contains the optional parameters for the RuleSetsClient.Get method. func (client *RuleSetsClient) Get(ctx context.Context, resourceGroupName string, profileName string, ruleSetName string, options *RuleSetsClientGetOptions) (RuleSetsClientGetResponse, error) { var err error + const operationName = "RuleSetsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, profileName, ruleSetName, options) if err != nil { return RuleSetsClientGetResponse{}, err @@ -267,25 +282,20 @@ func (client *RuleSetsClient) NewListByProfilePager(resourceGroupName string, pr return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *RuleSetsClientListByProfileResponse) (RuleSetsClientListByProfileResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByProfileCreateRequest(ctx, resourceGroupName, profileName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "RuleSetsClient.NewListByProfilePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByProfileCreateRequest(ctx, resourceGroupName, profileName, options) + }, nil) if err != nil { return RuleSetsClientListByProfileResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return RuleSetsClientListByProfileResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return RuleSetsClientListByProfileResponse{}, runtime.NewResponseError(resp) - } return client.listByProfileHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -339,25 +349,20 @@ func (client *RuleSetsClient) NewListResourceUsagePager(resourceGroupName string return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *RuleSetsClientListResourceUsageResponse) (RuleSetsClientListResourceUsageResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listResourceUsageCreateRequest(ctx, resourceGroupName, profileName, ruleSetName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "RuleSetsClient.NewListResourceUsagePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listResourceUsageCreateRequest(ctx, resourceGroupName, profileName, ruleSetName, options) + }, nil) if err != nil { return RuleSetsClientListResourceUsageResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return RuleSetsClientListResourceUsageResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return RuleSetsClientListResourceUsageResponse{}, runtime.NewResponseError(resp) - } return client.listResourceUsageHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/cdn/armcdn/secrets_client.go b/sdk/resourcemanager/cdn/armcdn/secrets_client.go index 1a583e6a8180..21ff0d1226fb 100644 --- a/sdk/resourcemanager/cdn/armcdn/secrets_client.go +++ b/sdk/resourcemanager/cdn/armcdn/secrets_client.go @@ -32,7 +32,7 @@ type SecretsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewSecretsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*SecretsClient, error) { - cl, err := arm.NewClient(moduleName+".SecretsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -61,10 +61,13 @@ func (client *SecretsClient) BeginCreate(ctx context.Context, resourceGroupName } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[SecretsClientCreateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[SecretsClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[SecretsClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -74,6 +77,10 @@ func (client *SecretsClient) BeginCreate(ctx context.Context, resourceGroupName // Generated from API version 2023-05-01 func (client *SecretsClient) create(ctx context.Context, resourceGroupName string, profileName string, secretName string, secret Secret, options *SecretsClientBeginCreateOptions) (*http.Response, error) { var err error + const operationName = "SecretsClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, profileName, secretName, secret, options) if err != nil { return nil, err @@ -139,10 +146,13 @@ func (client *SecretsClient) BeginDelete(ctx context.Context, resourceGroupName } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[SecretsClientDeleteResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[SecretsClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[SecretsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -152,6 +162,10 @@ func (client *SecretsClient) BeginDelete(ctx context.Context, resourceGroupName // Generated from API version 2023-05-01 func (client *SecretsClient) deleteOperation(ctx context.Context, resourceGroupName string, profileName string, secretName string, options *SecretsClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "SecretsClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, profileName, secretName, options) if err != nil { return nil, err @@ -208,6 +222,10 @@ func (client *SecretsClient) deleteCreateRequest(ctx context.Context, resourceGr // - options - SecretsClientGetOptions contains the optional parameters for the SecretsClient.Get method. func (client *SecretsClient) Get(ctx context.Context, resourceGroupName string, profileName string, secretName string, options *SecretsClientGetOptions) (SecretsClientGetResponse, error) { var err error + const operationName = "SecretsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, profileName, secretName, options) if err != nil { return SecretsClientGetResponse{}, err @@ -277,25 +295,20 @@ func (client *SecretsClient) NewListByProfilePager(resourceGroupName string, pro return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *SecretsClientListByProfileResponse) (SecretsClientListByProfileResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByProfileCreateRequest(ctx, resourceGroupName, profileName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return SecretsClientListByProfileResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "SecretsClient.NewListByProfilePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByProfileCreateRequest(ctx, resourceGroupName, profileName, options) + }, nil) if err != nil { return SecretsClientListByProfileResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return SecretsClientListByProfileResponse{}, runtime.NewResponseError(resp) - } return client.listByProfileHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/cdn/armcdn/securitypolicies_client.go b/sdk/resourcemanager/cdn/armcdn/securitypolicies_client.go index c74a8569892c..a127c8612af3 100644 --- a/sdk/resourcemanager/cdn/armcdn/securitypolicies_client.go +++ b/sdk/resourcemanager/cdn/armcdn/securitypolicies_client.go @@ -32,7 +32,7 @@ type SecurityPoliciesClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewSecurityPoliciesClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*SecurityPoliciesClient, error) { - cl, err := arm.NewClient(moduleName+".SecurityPoliciesClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -62,10 +62,13 @@ func (client *SecurityPoliciesClient) BeginCreate(ctx context.Context, resourceG } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[SecurityPoliciesClientCreateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[SecurityPoliciesClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[SecurityPoliciesClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -75,6 +78,10 @@ func (client *SecurityPoliciesClient) BeginCreate(ctx context.Context, resourceG // Generated from API version 2023-05-01 func (client *SecurityPoliciesClient) create(ctx context.Context, resourceGroupName string, profileName string, securityPolicyName string, securityPolicy SecurityPolicy, options *SecurityPoliciesClientBeginCreateOptions) (*http.Response, error) { var err error + const operationName = "SecurityPoliciesClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, profileName, securityPolicyName, securityPolicy, options) if err != nil { return nil, err @@ -141,10 +148,13 @@ func (client *SecurityPoliciesClient) BeginDelete(ctx context.Context, resourceG } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[SecurityPoliciesClientDeleteResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[SecurityPoliciesClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[SecurityPoliciesClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -154,6 +164,10 @@ func (client *SecurityPoliciesClient) BeginDelete(ctx context.Context, resourceG // Generated from API version 2023-05-01 func (client *SecurityPoliciesClient) deleteOperation(ctx context.Context, resourceGroupName string, profileName string, securityPolicyName string, options *SecurityPoliciesClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "SecurityPoliciesClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, profileName, securityPolicyName, options) if err != nil { return nil, err @@ -210,6 +224,10 @@ func (client *SecurityPoliciesClient) deleteCreateRequest(ctx context.Context, r // - options - SecurityPoliciesClientGetOptions contains the optional parameters for the SecurityPoliciesClient.Get method. func (client *SecurityPoliciesClient) Get(ctx context.Context, resourceGroupName string, profileName string, securityPolicyName string, options *SecurityPoliciesClientGetOptions) (SecurityPoliciesClientGetResponse, error) { var err error + const operationName = "SecurityPoliciesClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, profileName, securityPolicyName, options) if err != nil { return SecurityPoliciesClientGetResponse{}, err @@ -279,25 +297,20 @@ func (client *SecurityPoliciesClient) NewListByProfilePager(resourceGroupName st return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *SecurityPoliciesClientListByProfileResponse) (SecurityPoliciesClientListByProfileResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByProfileCreateRequest(ctx, resourceGroupName, profileName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "SecurityPoliciesClient.NewListByProfilePager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByProfileCreateRequest(ctx, resourceGroupName, profileName, options) + }, nil) if err != nil { return SecurityPoliciesClientListByProfileResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return SecurityPoliciesClientListByProfileResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return SecurityPoliciesClientListByProfileResponse{}, runtime.NewResponseError(resp) - } return client.listByProfileHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -355,10 +368,13 @@ func (client *SecurityPoliciesClient) BeginPatch(ctx context.Context, resourceGr } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[SecurityPoliciesClientPatchResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[SecurityPoliciesClientPatchResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[SecurityPoliciesClientPatchResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -368,6 +384,10 @@ func (client *SecurityPoliciesClient) BeginPatch(ctx context.Context, resourceGr // Generated from API version 2023-05-01 func (client *SecurityPoliciesClient) patch(ctx context.Context, resourceGroupName string, profileName string, securityPolicyName string, securityPolicyUpdateProperties SecurityPolicyUpdateParameters, options *SecurityPoliciesClientBeginPatchOptions) (*http.Response, error) { var err error + const operationName = "SecurityPoliciesClient.BeginPatch" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.patchCreateRequest(ctx, resourceGroupName, profileName, securityPolicyName, securityPolicyUpdateProperties, options) if err != nil { return nil, err diff --git a/sdk/resourcemanager/cdn/armcdn/time_rfc3339.go b/sdk/resourcemanager/cdn/armcdn/time_rfc3339.go index 271ab27029b9..f806198913a9 100644 --- a/sdk/resourcemanager/cdn/armcdn/time_rfc3339.go +++ b/sdk/resourcemanager/cdn/armcdn/time_rfc3339.go @@ -18,50 +18,50 @@ import ( "time" ) -const ( - utcLayoutJSON = `"2006-01-02T15:04:05.999999999"` - utcLayout = "2006-01-02T15:04:05.999999999" - rfc3339JSON = `"` + time.RFC3339Nano + `"` -) - // Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases. var tzOffsetRegex = regexp.MustCompile(`(Z|z|\+|-)(\d+:\d+)*"*$`) -type timeRFC3339 time.Time +const ( + utcDateTimeJSON = `"2006-01-02T15:04:05.999999999"` + utcDateTime = "2006-01-02T15:04:05.999999999" + dateTimeJSON = `"` + time.RFC3339Nano + `"` +) + +type dateTimeRFC3339 time.Time -func (t timeRFC3339) MarshalJSON() (json []byte, err error) { +func (t dateTimeRFC3339) MarshalJSON() ([]byte, error) { tt := time.Time(t) return tt.MarshalJSON() } -func (t timeRFC3339) MarshalText() (text []byte, err error) { +func (t dateTimeRFC3339) MarshalText() ([]byte, error) { tt := time.Time(t) return tt.MarshalText() } -func (t *timeRFC3339) UnmarshalJSON(data []byte) error { - layout := utcLayoutJSON +func (t *dateTimeRFC3339) UnmarshalJSON(data []byte) error { + layout := utcDateTimeJSON if tzOffsetRegex.Match(data) { - layout = rfc3339JSON + layout = dateTimeJSON } return t.Parse(layout, string(data)) } -func (t *timeRFC3339) UnmarshalText(data []byte) (err error) { - layout := utcLayout +func (t *dateTimeRFC3339) UnmarshalText(data []byte) error { + layout := utcDateTime if tzOffsetRegex.Match(data) { layout = time.RFC3339Nano } return t.Parse(layout, string(data)) } -func (t *timeRFC3339) Parse(layout, value string) error { +func (t *dateTimeRFC3339) Parse(layout, value string) error { p, err := time.Parse(layout, strings.ToUpper(value)) - *t = timeRFC3339(p) + *t = dateTimeRFC3339(p) return err } -func populateTimeRFC3339(m map[string]any, k string, t *time.Time) { +func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) { if t == nil { return } else if azcore.IsNullValue(t) { @@ -70,14 +70,14 @@ func populateTimeRFC3339(m map[string]any, k string, t *time.Time) { } else if reflect.ValueOf(t).IsNil() { return } - m[k] = (*timeRFC3339)(t) + m[k] = (*dateTimeRFC3339)(t) } -func unpopulateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { +func unpopulateDateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { if data == nil || strings.EqualFold(string(data), "null") { return nil } - var aux timeRFC3339 + var aux dateTimeRFC3339 if err := json.Unmarshal(data, &aux); err != nil { return fmt.Errorf("struct field %s: %v", fn, err) } From e17bcbfcbcfa880d04257fa064fd56961b61c21f Mon Sep 17 00:00:00 2001 From: Alancere <804873052@qq.com> Date: Tue, 21 Nov 2023 16:10:01 +0800 Subject: [PATCH 07/10] [Release] sdk/resourcemanager/changeanalysis/armchangeanalysis/1.2.0 generation from spec commit: 164375e67a1bffb207bcf603772c289dbe42d7b5 --- .../armchangeanalysis/CHANGELOG.md | 6 + .../armchangeanalysis/README.md | 7 + .../armchangeanalysis/autorest.md | 2 +- .../armchangeanalysis/changes_client.go | 47 ++-- .../changes_client_example_test.go | 8 +- .../armchangeanalysis/client_factory.go | 18 +- .../armchangeanalysis/constants.go | 11 +- .../armchangeanalysis/fake/changes_server.go | 206 ++++++++++++++++++ .../armchangeanalysis/fake/internal.go | 72 ++++++ .../fake/operations_server.go | 109 +++++++++ .../fake/resourcechanges_server.go | 137 ++++++++++++ .../armchangeanalysis/fake/server_factory.go | 87 ++++++++ .../armchangeanalysis/fake/time_rfc3339.go | 86 ++++++++ .../changeanalysis/armchangeanalysis/go.mod | 20 +- .../changeanalysis/armchangeanalysis/go.sum | 46 ++-- .../armchangeanalysis/models.go | 37 +--- .../armchangeanalysis/models_serde.go | 7 +- .../armchangeanalysis/operations_client.go | 26 +-- .../armchangeanalysis/options.go | 43 ++++ .../resourcechanges_client.go | 26 +-- .../resourcechanges_client_example_test.go | 4 +- .../armchangeanalysis/response_types.go | 7 +- .../armchangeanalysis/time_rfc3339.go | 43 ++-- 23 files changed, 876 insertions(+), 179 deletions(-) create mode 100644 sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/changes_server.go create mode 100644 sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/internal.go create mode 100644 sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/operations_server.go create mode 100644 sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/resourcechanges_server.go create mode 100644 sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/server_factory.go create mode 100644 sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/time_rfc3339.go create mode 100644 sdk/resourcemanager/changeanalysis/armchangeanalysis/options.go diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/CHANGELOG.md b/sdk/resourcemanager/changeanalysis/armchangeanalysis/CHANGELOG.md index c2d2ca7cdc76..d670c7bb5bcf 100644 --- a/sdk/resourcemanager/changeanalysis/armchangeanalysis/CHANGELOG.md +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/CHANGELOG.md @@ -1,5 +1,11 @@ # Release History +## 1.2.0 (2023-11-24) +### Features Added + +- Support for test fakes and OpenTelemetry trace spans. + + ## 1.1.1 (2023-04-14) ### Bug Fixes diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/README.md b/sdk/resourcemanager/changeanalysis/armchangeanalysis/README.md index 26633799d6a7..e4c22955d752 100644 --- a/sdk/resourcemanager/changeanalysis/armchangeanalysis/README.md +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/README.md @@ -60,6 +60,13 @@ A client groups a set of related APIs, providing access to its functionality. C client := clientFactory.NewChangesClient() ``` +## Fakes + +The fake package contains types used for constructing in-memory fake servers used in unit tests. +This allows writing tests to cover various success/error conditions without the need for connecting to a live service. + +Please see https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/samples/fakes for details and examples on how to use fakes. + ## Provide Feedback If you encounter bugs or have suggestions, please diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/autorest.md b/sdk/resourcemanager/changeanalysis/armchangeanalysis/autorest.md index 480493fafb5e..f56ad311b201 100644 --- a/sdk/resourcemanager/changeanalysis/armchangeanalysis/autorest.md +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/autorest.md @@ -8,5 +8,5 @@ require: - https://github.com/Azure/azure-rest-api-specs/blob/7a2ac91de424f271cf91cc8009f3fe9ee8249086/specification/changeanalysis/resource-manager/readme.md - https://github.com/Azure/azure-rest-api-specs/blob/7a2ac91de424f271cf91cc8009f3fe9ee8249086/specification/changeanalysis/resource-manager/readme.go.md license-header: MICROSOFT_MIT_NO_VERSION -module-version: 1.1.1 +module-version: 1.2.0 ``` \ No newline at end of file diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/changes_client.go b/sdk/resourcemanager/changeanalysis/armchangeanalysis/changes_client.go index dc51ed8d7673..a6972a447f3d 100644 --- a/sdk/resourcemanager/changeanalysis/armchangeanalysis/changes_client.go +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/changes_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armchangeanalysis @@ -34,7 +33,7 @@ type ChangesClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewChangesClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*ChangesClient, error) { - cl, err := arm.NewClient(moduleName+".ChangesClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -60,25 +59,20 @@ func (client *ChangesClient) NewListChangesByResourceGroupPager(resourceGroupNam return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ChangesClientListChangesByResourceGroupResponse) (ChangesClientListChangesByResourceGroupResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listChangesByResourceGroupCreateRequest(ctx, resourceGroupName, startTime, endTime, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ChangesClient.NewListChangesByResourceGroupPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listChangesByResourceGroupCreateRequest(ctx, resourceGroupName, startTime, endTime, options) + }, nil) if err != nil { return ChangesClientListChangesByResourceGroupResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return ChangesClientListChangesByResourceGroupResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ChangesClientListChangesByResourceGroupResponse{}, runtime.NewResponseError(resp) - } return client.listChangesByResourceGroupHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -132,25 +126,20 @@ func (client *ChangesClient) NewListChangesBySubscriptionPager(startTime time.Ti return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ChangesClientListChangesBySubscriptionResponse) (ChangesClientListChangesBySubscriptionResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listChangesBySubscriptionCreateRequest(ctx, startTime, endTime, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ChangesClient.NewListChangesBySubscriptionPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listChangesBySubscriptionCreateRequest(ctx, startTime, endTime, options) + }, nil) if err != nil { return ChangesClientListChangesBySubscriptionResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return ChangesClientListChangesBySubscriptionResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ChangesClientListChangesBySubscriptionResponse{}, runtime.NewResponseError(resp) - } return client.listChangesBySubscriptionHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/changes_client_example_test.go b/sdk/resourcemanager/changeanalysis/armchangeanalysis/changes_client_example_test.go index 2b3b8033512c..7e8025ab7ccf 100644 --- a/sdk/resourcemanager/changeanalysis/armchangeanalysis/changes_client_example_test.go +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/changes_client_example_test.go @@ -64,7 +64,7 @@ func ExampleChangesClient_NewListChangesByResourceGroupPager() { // OldValue: to.Ptr("old tag value"), // }}, // ResourceID: to.Ptr("/subscriptions/4d962866-1e3f-47f2-bd18-450c08f914c1/resourceGroups/MyResourceGroup"), - // TimeStamp: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2021-04-26T02:17:41.39Z"); return t}()), + // TimeStamp: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2021-04-26T02:17:41.390Z"); return t}()), // }, // }, // { @@ -88,7 +88,7 @@ func ExampleChangesClient_NewListChangesByResourceGroupPager() { // OldValue: to.Ptr("***Old Value Hidden***"), // }}, // ResourceID: to.Ptr("/subscriptions/4d962866-1e3f-47f2-bd18-450c08f914c1/resourceGroups/MyResourceGroup/providers/Microsoft.Web/sites/mysite"), - // TimeStamp: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2021-04-26T02:17:41.39Z"); return t}()), + // TimeStamp: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2021-04-26T02:17:41.390Z"); return t}()), // }, // }}, // } @@ -140,7 +140,7 @@ func ExampleChangesClient_NewListChangesBySubscriptionPager() { // OldValue: to.Ptr("old tag value"), // }}, // ResourceID: to.Ptr("/subscriptions/4d962866-1e3f-47f2-bd18-450c08f914c1"), - // TimeStamp: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2021-04-26T02:17:41.39Z"); return t}()), + // TimeStamp: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2021-04-26T02:17:41.390Z"); return t}()), // }, // }, // { @@ -164,7 +164,7 @@ func ExampleChangesClient_NewListChangesBySubscriptionPager() { // OldValue: to.Ptr("***Old Value Hidden***"), // }}, // ResourceID: to.Ptr("/subscriptions/4d962866-1e3f-47f2-bd18-450c08f914c1/resourceGroups/MyResourceGroup/providers/Microsoft.Web/sites/mysite"), - // TimeStamp: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2021-04-26T02:17:41.39Z"); return t}()), + // TimeStamp: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2021-04-26T02:17:41.390Z"); return t}()), // }, // }}, // } diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/client_factory.go b/sdk/resourcemanager/changeanalysis/armchangeanalysis/client_factory.go index 0f3af3d98c2f..8c592a277596 100644 --- a/sdk/resourcemanager/changeanalysis/armchangeanalysis/client_factory.go +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/client_factory.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armchangeanalysis @@ -28,7 +27,7 @@ type ClientFactory struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewClientFactory(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*ClientFactory, error) { - _, err := arm.NewClient(moduleName+".ClientFactory", moduleVersion, credential, options) + _, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -38,17 +37,20 @@ func NewClientFactory(subscriptionID string, credential azcore.TokenCredential, }, nil } +// NewChangesClient creates a new instance of ChangesClient. +func (c *ClientFactory) NewChangesClient() *ChangesClient { + subClient, _ := NewChangesClient(c.subscriptionID, c.credential, c.options) + return subClient +} + +// NewOperationsClient creates a new instance of OperationsClient. func (c *ClientFactory) NewOperationsClient() *OperationsClient { subClient, _ := NewOperationsClient(c.credential, c.options) return subClient } +// NewResourceChangesClient creates a new instance of ResourceChangesClient. func (c *ClientFactory) NewResourceChangesClient() *ResourceChangesClient { subClient, _ := NewResourceChangesClient(c.credential, c.options) return subClient } - -func (c *ClientFactory) NewChangesClient() *ChangesClient { - subClient, _ := NewChangesClient(c.subscriptionID, c.credential, c.options) - return subClient -} diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/constants.go b/sdk/resourcemanager/changeanalysis/armchangeanalysis/constants.go index 04f196423f7e..e16092c243ba 100644 --- a/sdk/resourcemanager/changeanalysis/armchangeanalysis/constants.go +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/constants.go @@ -3,30 +3,29 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armchangeanalysis const ( - moduleName = "armchangeanalysis" - moduleVersion = "v1.1.1" + moduleName = "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/changeanalysis/armchangeanalysis" + moduleVersion = "v1.2.0" ) // ChangeCategory - The change category. type ChangeCategory string const ( - ChangeCategoryUser ChangeCategory = "User" ChangeCategorySystem ChangeCategory = "System" + ChangeCategoryUser ChangeCategory = "User" ) // PossibleChangeCategoryValues returns the possible values for the ChangeCategory const type. func PossibleChangeCategoryValues() []ChangeCategory { return []ChangeCategory{ - ChangeCategoryUser, ChangeCategorySystem, + ChangeCategoryUser, } } diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/changes_server.go b/sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/changes_server.go new file mode 100644 index 000000000000..f49d0bdc461b --- /dev/null +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/changes_server.go @@ -0,0 +1,206 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/changeanalysis/armchangeanalysis" + "net/http" + "net/url" + "regexp" + "time" +) + +// ChangesServer is a fake server for instances of the armchangeanalysis.ChangesClient type. +type ChangesServer struct { + // NewListChangesByResourceGroupPager is the fake for method ChangesClient.NewListChangesByResourceGroupPager + // HTTP status codes to indicate success: http.StatusOK + NewListChangesByResourceGroupPager func(resourceGroupName string, startTime time.Time, endTime time.Time, options *armchangeanalysis.ChangesClientListChangesByResourceGroupOptions) (resp azfake.PagerResponder[armchangeanalysis.ChangesClientListChangesByResourceGroupResponse]) + + // NewListChangesBySubscriptionPager is the fake for method ChangesClient.NewListChangesBySubscriptionPager + // HTTP status codes to indicate success: http.StatusOK + NewListChangesBySubscriptionPager func(startTime time.Time, endTime time.Time, options *armchangeanalysis.ChangesClientListChangesBySubscriptionOptions) (resp azfake.PagerResponder[armchangeanalysis.ChangesClientListChangesBySubscriptionResponse]) +} + +// NewChangesServerTransport creates a new instance of ChangesServerTransport with the provided implementation. +// The returned ChangesServerTransport instance is connected to an instance of armchangeanalysis.ChangesClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewChangesServerTransport(srv *ChangesServer) *ChangesServerTransport { + return &ChangesServerTransport{ + srv: srv, + newListChangesByResourceGroupPager: newTracker[azfake.PagerResponder[armchangeanalysis.ChangesClientListChangesByResourceGroupResponse]](), + newListChangesBySubscriptionPager: newTracker[azfake.PagerResponder[armchangeanalysis.ChangesClientListChangesBySubscriptionResponse]](), + } +} + +// ChangesServerTransport connects instances of armchangeanalysis.ChangesClient to instances of ChangesServer. +// Don't use this type directly, use NewChangesServerTransport instead. +type ChangesServerTransport struct { + srv *ChangesServer + newListChangesByResourceGroupPager *tracker[azfake.PagerResponder[armchangeanalysis.ChangesClientListChangesByResourceGroupResponse]] + newListChangesBySubscriptionPager *tracker[azfake.PagerResponder[armchangeanalysis.ChangesClientListChangesBySubscriptionResponse]] +} + +// Do implements the policy.Transporter interface for ChangesServerTransport. +func (c *ChangesServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "ChangesClient.NewListChangesByResourceGroupPager": + resp, err = c.dispatchNewListChangesByResourceGroupPager(req) + case "ChangesClient.NewListChangesBySubscriptionPager": + resp, err = c.dispatchNewListChangesBySubscriptionPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (c *ChangesServerTransport) dispatchNewListChangesByResourceGroupPager(req *http.Request) (*http.Response, error) { + if c.srv.NewListChangesByResourceGroupPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListChangesByResourceGroupPager not implemented")} + } + newListChangesByResourceGroupPager := c.newListChangesByResourceGroupPager.get(req) + if newListChangesByResourceGroupPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ChangeAnalysis/changes` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + startTimeUnescaped, err := url.QueryUnescape(qp.Get("$startTime")) + if err != nil { + return nil, err + } + startTimeParam, err := time.Parse(time.RFC3339Nano, startTimeUnescaped) + if err != nil { + return nil, err + } + endTimeUnescaped, err := url.QueryUnescape(qp.Get("$endTime")) + if err != nil { + return nil, err + } + endTimeParam, err := time.Parse(time.RFC3339Nano, endTimeUnescaped) + if err != nil { + return nil, err + } + skipTokenUnescaped, err := url.QueryUnescape(qp.Get("$skipToken")) + if err != nil { + return nil, err + } + skipTokenParam := getOptional(skipTokenUnescaped) + var options *armchangeanalysis.ChangesClientListChangesByResourceGroupOptions + if skipTokenParam != nil { + options = &armchangeanalysis.ChangesClientListChangesByResourceGroupOptions{ + SkipToken: skipTokenParam, + } + } + resp := c.srv.NewListChangesByResourceGroupPager(resourceGroupNameParam, startTimeParam, endTimeParam, options) + newListChangesByResourceGroupPager = &resp + c.newListChangesByResourceGroupPager.add(req, newListChangesByResourceGroupPager) + server.PagerResponderInjectNextLinks(newListChangesByResourceGroupPager, req, func(page *armchangeanalysis.ChangesClientListChangesByResourceGroupResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListChangesByResourceGroupPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + c.newListChangesByResourceGroupPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListChangesByResourceGroupPager) { + c.newListChangesByResourceGroupPager.remove(req) + } + return resp, nil +} + +func (c *ChangesServerTransport) dispatchNewListChangesBySubscriptionPager(req *http.Request) (*http.Response, error) { + if c.srv.NewListChangesBySubscriptionPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListChangesBySubscriptionPager not implemented")} + } + newListChangesBySubscriptionPager := c.newListChangesBySubscriptionPager.get(req) + if newListChangesBySubscriptionPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ChangeAnalysis/changes` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + startTimeUnescaped, err := url.QueryUnescape(qp.Get("$startTime")) + if err != nil { + return nil, err + } + startTimeParam, err := time.Parse(time.RFC3339Nano, startTimeUnescaped) + if err != nil { + return nil, err + } + endTimeUnescaped, err := url.QueryUnescape(qp.Get("$endTime")) + if err != nil { + return nil, err + } + endTimeParam, err := time.Parse(time.RFC3339Nano, endTimeUnescaped) + if err != nil { + return nil, err + } + skipTokenUnescaped, err := url.QueryUnescape(qp.Get("$skipToken")) + if err != nil { + return nil, err + } + skipTokenParam := getOptional(skipTokenUnescaped) + var options *armchangeanalysis.ChangesClientListChangesBySubscriptionOptions + if skipTokenParam != nil { + options = &armchangeanalysis.ChangesClientListChangesBySubscriptionOptions{ + SkipToken: skipTokenParam, + } + } + resp := c.srv.NewListChangesBySubscriptionPager(startTimeParam, endTimeParam, options) + newListChangesBySubscriptionPager = &resp + c.newListChangesBySubscriptionPager.add(req, newListChangesBySubscriptionPager) + server.PagerResponderInjectNextLinks(newListChangesBySubscriptionPager, req, func(page *armchangeanalysis.ChangesClientListChangesBySubscriptionResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListChangesBySubscriptionPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + c.newListChangesBySubscriptionPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListChangesBySubscriptionPager) { + c.newListChangesBySubscriptionPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/internal.go b/sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/internal.go new file mode 100644 index 000000000000..94e060e89dbd --- /dev/null +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/internal.go @@ -0,0 +1,72 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "net/http" + "reflect" + "sync" +) + +type nonRetriableError struct { + error +} + +func (nonRetriableError) NonRetriable() { + // marker method +} + +func contains[T comparable](s []T, v T) bool { + for _, vv := range s { + if vv == v { + return true + } + } + return false +} + +func getOptional[T any](v T) *T { + if reflect.ValueOf(v).IsZero() { + return nil + } + return &v +} + +func newTracker[T any]() *tracker[T] { + return &tracker[T]{ + items: map[string]*T{}, + } +} + +type tracker[T any] struct { + items map[string]*T + mu sync.Mutex +} + +func (p *tracker[T]) get(req *http.Request) *T { + p.mu.Lock() + defer p.mu.Unlock() + if item, ok := p.items[server.SanitizePagerPollerPath(req.URL.Path)]; ok { + return item + } + return nil +} + +func (p *tracker[T]) add(req *http.Request, item *T) { + p.mu.Lock() + defer p.mu.Unlock() + p.items[server.SanitizePagerPollerPath(req.URL.Path)] = item +} + +func (p *tracker[T]) remove(req *http.Request) { + p.mu.Lock() + defer p.mu.Unlock() + delete(p.items, server.SanitizePagerPollerPath(req.URL.Path)) +} diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/operations_server.go b/sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/operations_server.go new file mode 100644 index 000000000000..b433ab46367c --- /dev/null +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/operations_server.go @@ -0,0 +1,109 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/changeanalysis/armchangeanalysis" + "net/http" + "net/url" +) + +// OperationsServer is a fake server for instances of the armchangeanalysis.OperationsClient type. +type OperationsServer struct { + // NewListPager is the fake for method OperationsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armchangeanalysis.OperationsClientListOptions) (resp azfake.PagerResponder[armchangeanalysis.OperationsClientListResponse]) +} + +// NewOperationsServerTransport creates a new instance of OperationsServerTransport with the provided implementation. +// The returned OperationsServerTransport instance is connected to an instance of armchangeanalysis.OperationsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewOperationsServerTransport(srv *OperationsServer) *OperationsServerTransport { + return &OperationsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armchangeanalysis.OperationsClientListResponse]](), + } +} + +// OperationsServerTransport connects instances of armchangeanalysis.OperationsClient to instances of OperationsServer. +// Don't use this type directly, use NewOperationsServerTransport instead. +type OperationsServerTransport struct { + srv *OperationsServer + newListPager *tracker[azfake.PagerResponder[armchangeanalysis.OperationsClientListResponse]] +} + +// Do implements the policy.Transporter interface for OperationsServerTransport. +func (o *OperationsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "OperationsClient.NewListPager": + resp, err = o.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (o *OperationsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if o.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := o.newListPager.get(req) + if newListPager == nil { + qp := req.URL.Query() + skipTokenUnescaped, err := url.QueryUnescape(qp.Get("$skipToken")) + if err != nil { + return nil, err + } + skipTokenParam := getOptional(skipTokenUnescaped) + var options *armchangeanalysis.OperationsClientListOptions + if skipTokenParam != nil { + options = &armchangeanalysis.OperationsClientListOptions{ + SkipToken: skipTokenParam, + } + } + resp := o.srv.NewListPager(options) + newListPager = &resp + o.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armchangeanalysis.OperationsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + o.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + o.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/resourcechanges_server.go b/sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/resourcechanges_server.go new file mode 100644 index 000000000000..be584023ab92 --- /dev/null +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/resourcechanges_server.go @@ -0,0 +1,137 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/changeanalysis/armchangeanalysis" + "net/http" + "net/url" + "regexp" + "time" +) + +// ResourceChangesServer is a fake server for instances of the armchangeanalysis.ResourceChangesClient type. +type ResourceChangesServer struct { + // NewListPager is the fake for method ResourceChangesClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(resourceID string, startTime time.Time, endTime time.Time, options *armchangeanalysis.ResourceChangesClientListOptions) (resp azfake.PagerResponder[armchangeanalysis.ResourceChangesClientListResponse]) +} + +// NewResourceChangesServerTransport creates a new instance of ResourceChangesServerTransport with the provided implementation. +// The returned ResourceChangesServerTransport instance is connected to an instance of armchangeanalysis.ResourceChangesClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewResourceChangesServerTransport(srv *ResourceChangesServer) *ResourceChangesServerTransport { + return &ResourceChangesServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armchangeanalysis.ResourceChangesClientListResponse]](), + } +} + +// ResourceChangesServerTransport connects instances of armchangeanalysis.ResourceChangesClient to instances of ResourceChangesServer. +// Don't use this type directly, use NewResourceChangesServerTransport instead. +type ResourceChangesServerTransport struct { + srv *ResourceChangesServer + newListPager *tracker[azfake.PagerResponder[armchangeanalysis.ResourceChangesClientListResponse]] +} + +// Do implements the policy.Transporter interface for ResourceChangesServerTransport. +func (r *ResourceChangesServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "ResourceChangesClient.NewListPager": + resp, err = r.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (r *ResourceChangesServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if r.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := r.newListPager.get(req) + if newListPager == nil { + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ChangeAnalysis/resourceChanges` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + resourceIDParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceId")]) + if err != nil { + return nil, err + } + startTimeUnescaped, err := url.QueryUnescape(qp.Get("$startTime")) + if err != nil { + return nil, err + } + startTimeParam, err := time.Parse(time.RFC3339Nano, startTimeUnescaped) + if err != nil { + return nil, err + } + endTimeUnescaped, err := url.QueryUnescape(qp.Get("$endTime")) + if err != nil { + return nil, err + } + endTimeParam, err := time.Parse(time.RFC3339Nano, endTimeUnescaped) + if err != nil { + return nil, err + } + skipTokenUnescaped, err := url.QueryUnescape(qp.Get("$skipToken")) + if err != nil { + return nil, err + } + skipTokenParam := getOptional(skipTokenUnescaped) + var options *armchangeanalysis.ResourceChangesClientListOptions + if skipTokenParam != nil { + options = &armchangeanalysis.ResourceChangesClientListOptions{ + SkipToken: skipTokenParam, + } + } + resp := r.srv.NewListPager(resourceIDParam, startTimeParam, endTimeParam, options) + newListPager = &resp + r.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armchangeanalysis.ResourceChangesClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + r.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + r.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/server_factory.go b/sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/server_factory.go new file mode 100644 index 000000000000..614bf9a55dce --- /dev/null +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/server_factory.go @@ -0,0 +1,87 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "net/http" + "strings" + "sync" +) + +// ServerFactory is a fake server for instances of the armchangeanalysis.ClientFactory type. +type ServerFactory struct { + ChangesServer ChangesServer + OperationsServer OperationsServer + ResourceChangesServer ResourceChangesServer +} + +// NewServerFactoryTransport creates a new instance of ServerFactoryTransport with the provided implementation. +// The returned ServerFactoryTransport instance is connected to an instance of armchangeanalysis.ClientFactory via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewServerFactoryTransport(srv *ServerFactory) *ServerFactoryTransport { + return &ServerFactoryTransport{ + srv: srv, + } +} + +// ServerFactoryTransport connects instances of armchangeanalysis.ClientFactory to instances of ServerFactory. +// Don't use this type directly, use NewServerFactoryTransport instead. +type ServerFactoryTransport struct { + srv *ServerFactory + trMu sync.Mutex + trChangesServer *ChangesServerTransport + trOperationsServer *OperationsServerTransport + trResourceChangesServer *ResourceChangesServerTransport +} + +// Do implements the policy.Transporter interface for ServerFactoryTransport. +func (s *ServerFactoryTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + client := method[:strings.Index(method, ".")] + var resp *http.Response + var err error + + switch client { + case "ChangesClient": + initServer(s, &s.trChangesServer, func() *ChangesServerTransport { return NewChangesServerTransport(&s.srv.ChangesServer) }) + resp, err = s.trChangesServer.Do(req) + case "OperationsClient": + initServer(s, &s.trOperationsServer, func() *OperationsServerTransport { return NewOperationsServerTransport(&s.srv.OperationsServer) }) + resp, err = s.trOperationsServer.Do(req) + case "ResourceChangesClient": + initServer(s, &s.trResourceChangesServer, func() *ResourceChangesServerTransport { + return NewResourceChangesServerTransport(&s.srv.ResourceChangesServer) + }) + resp, err = s.trResourceChangesServer.Do(req) + default: + err = fmt.Errorf("unhandled client %s", client) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func initServer[T any](s *ServerFactoryTransport, dst **T, src func() *T) { + s.trMu.Lock() + if *dst == nil { + *dst = src() + } + s.trMu.Unlock() +} diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/time_rfc3339.go b/sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/time_rfc3339.go new file mode 100644 index 000000000000..b0535a7b63e6 --- /dev/null +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/fake/time_rfc3339.go @@ -0,0 +1,86 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "encoding/json" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "reflect" + "regexp" + "strings" + "time" +) + +// Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases. +var tzOffsetRegex = regexp.MustCompile(`(Z|z|\+|-)(\d+:\d+)*"*$`) + +const ( + utcDateTimeJSON = `"2006-01-02T15:04:05.999999999"` + utcDateTime = "2006-01-02T15:04:05.999999999" + dateTimeJSON = `"` + time.RFC3339Nano + `"` +) + +type dateTimeRFC3339 time.Time + +func (t dateTimeRFC3339) MarshalJSON() ([]byte, error) { + tt := time.Time(t) + return tt.MarshalJSON() +} + +func (t dateTimeRFC3339) MarshalText() ([]byte, error) { + tt := time.Time(t) + return tt.MarshalText() +} + +func (t *dateTimeRFC3339) UnmarshalJSON(data []byte) error { + layout := utcDateTimeJSON + if tzOffsetRegex.Match(data) { + layout = dateTimeJSON + } + return t.Parse(layout, string(data)) +} + +func (t *dateTimeRFC3339) UnmarshalText(data []byte) error { + layout := utcDateTime + if tzOffsetRegex.Match(data) { + layout = time.RFC3339Nano + } + return t.Parse(layout, string(data)) +} + +func (t *dateTimeRFC3339) Parse(layout, value string) error { + p, err := time.Parse(layout, strings.ToUpper(value)) + *t = dateTimeRFC3339(p) + return err +} + +func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) { + if t == nil { + return + } else if azcore.IsNullValue(t) { + m[k] = nil + return + } else if reflect.ValueOf(t).IsNil() { + return + } + m[k] = (*dateTimeRFC3339)(t) +} + +func unpopulateDateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { + if data == nil || strings.EqualFold(string(data), "null") { + return nil + } + var aux dateTimeRFC3339 + if err := json.Unmarshal(data, &aux); err != nil { + return fmt.Errorf("struct field %s: %v", fn, err) + } + *t = (*time.Time)(&aux) + return nil +} diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/go.mod b/sdk/resourcemanager/changeanalysis/armchangeanalysis/go.mod index 5507fa6b7e19..c00f315cbb91 100644 --- a/sdk/resourcemanager/changeanalysis/armchangeanalysis/go.mod +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/go.mod @@ -3,19 +3,19 @@ module github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/changeanalysis/armc go 1.18 require ( - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0 - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2 + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 ) require ( - github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0 // indirect - github.com/golang-jwt/jwt/v4 v4.5.0 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect + github.com/golang-jwt/jwt/v5 v5.0.0 // indirect + github.com/google/uuid v1.3.1 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect - golang.org/x/crypto v0.6.0 // indirect - golang.org/x/net v0.7.0 // indirect - golang.org/x/sys v0.5.0 // indirect - golang.org/x/text v0.7.0 // indirect + golang.org/x/crypto v0.14.0 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect ) diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/go.sum b/sdk/resourcemanager/changeanalysis/armchangeanalysis/go.sum index 8ba445a8c4da..7985f1da436f 100644 --- a/sdk/resourcemanager/changeanalysis/armchangeanalysis/go.sum +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/go.sum @@ -1,31 +1,31 @@ -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0 h1:rTnT/Jrcm+figWlYz4Ixzt0SJVR2cMC8lvZcimipiEY= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0/go.mod h1:ON4tFdPTwRcgWEaVDrN3584Ef+b7GgSJaXxe5fW9t4M= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2 h1:uqM+VoHjVH6zdlkLF2b6O0ZANcHoj3rO0PoQ3jglUJA= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2/go.mod h1:twTKAa1E6hLmSDjLhaCkbTMQKc7p/rNLU40rLxGEOCI= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0 h1:leh5DwKv6Ihwi+h60uHtn6UWAxBbZ0q8DwQVMzf61zw= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= -github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0 h1:UE9n9rkJF62ArLb1F3DEjRt8O3jLwMWdSoypKV4f3MU= -github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 h1:fb8kj/Dh4CSwgsOzHeZY4Xh68cFVbzXx+ONXGMY//4w= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0/go.mod h1:uReU2sSxZExRPBAg3qKzmAucSi51+SP1OhohieR821Q= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 h1:BMAjVKJM0U/CYF27gA0ZMmXGkOcvfFtD0oHVZ1TIPRI= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0/go.mod h1:1fXstnBMas5kzG+S3q8UoJcmyU6nUeunJcMDHcRYHhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 h1:d81/ng9rET2YqdVkVwkb6EXeRrLJIwyGnJcAlAWKwhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0/go.mod h1:s4kgfzA0covAXNicZHDMN58jExvcng2mC/DepXiF1EI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 h1:WpB/QDNLpMw72xHJc34BNNykqSOeEJDAWkhf0u12/Jk= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/dnaeon/go-vcr v1.1.0 h1:ReYa/UBrRyQdant9B4fNHGoCNKw6qh6P0fsdGmZpR7c= -github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= -github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= +github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= +github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= -golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/models.go b/sdk/resourcemanager/changeanalysis/armchangeanalysis/models.go index 159ec87f7fe0..d37f1347fbf6 100644 --- a/sdk/resourcemanager/changeanalysis/armchangeanalysis/models.go +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/models.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armchangeanalysis @@ -54,24 +53,6 @@ type ChangeProperties struct { TimeStamp *time.Time } -// ChangesClientListChangesByResourceGroupOptions contains the optional parameters for the ChangesClient.NewListChangesByResourceGroupPager -// method. -type ChangesClientListChangesByResourceGroupOptions struct { - // A skip token is used to continue retrieving items after an operation returns a partial result. If a previous response contains - // a nextLink element, the value of the nextLink element will include a - // skipToken parameter that specifies a starting point to use for subsequent calls. - SkipToken *string -} - -// ChangesClientListChangesBySubscriptionOptions contains the optional parameters for the ChangesClient.NewListChangesBySubscriptionPager -// method. -type ChangesClientListChangesBySubscriptionOptions struct { - // A skip token is used to continue retrieving items after an operation returns a partial result. If a previous response contains - // a nextLink element, the value of the nextLink element will include a - // skipToken parameter that specifies a starting point to use for subsequent calls. - SkipToken *string -} - // ErrorAdditionalInfo - The resource management error additional info. type ErrorAdditionalInfo struct { // READ-ONLY; The additional info. @@ -106,14 +87,6 @@ type ErrorResponse struct { Error *ErrorDetail } -// OperationsClientListOptions contains the optional parameters for the OperationsClient.NewListPager method. -type OperationsClientListOptions struct { - // A skip token is used to continue retrieving items after an operation returns a partial result. If a previous response contains - // a nextLink element, the value of the nextLink element will include a - // skipToken parameter that specifies a starting point to use for subsequent calls. - SkipToken *string -} - // PropertyChange - Data of a property change. type PropertyChange struct { // The change category. @@ -169,14 +142,6 @@ type Resource struct { Type *string } -// ResourceChangesClientListOptions contains the optional parameters for the ResourceChangesClient.NewListPager method. -type ResourceChangesClientListOptions struct { - // A skip token is used to continue retrieving items after an operation returns a partial result. If a previous response contains - // a nextLink element, the value of the nextLink element will include a - // skipToken parameter that specifies a starting point to use for subsequent calls. - SkipToken *string -} - // ResourceProviderOperationDefinition - The resource provider operation definition. type ResourceProviderOperationDefinition struct { // The resource provider operation details. diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/models_serde.go b/sdk/resourcemanager/changeanalysis/armchangeanalysis/models_serde.go index 9a1c42cadab6..8a60c4757be8 100644 --- a/sdk/resourcemanager/changeanalysis/armchangeanalysis/models_serde.go +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/models_serde.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armchangeanalysis @@ -93,7 +92,7 @@ func (c ChangeProperties) MarshalJSON() ([]byte, error) { populate(objectMap, "initiatedByList", c.InitiatedByList) populate(objectMap, "propertyChanges", c.PropertyChanges) populate(objectMap, "resourceId", c.ResourceID) - populateTimeRFC3339(objectMap, "timeStamp", c.TimeStamp) + populateDateTimeRFC3339(objectMap, "timeStamp", c.TimeStamp) return json.Marshal(objectMap) } @@ -119,7 +118,7 @@ func (c *ChangeProperties) UnmarshalJSON(data []byte) error { err = unpopulate(val, "ResourceID", &c.ResourceID) delete(rawMsg, key) case "timeStamp": - err = unpopulateTimeRFC3339(val, "TimeStamp", &c.TimeStamp) + err = unpopulateDateTimeRFC3339(val, "TimeStamp", &c.TimeStamp) delete(rawMsg, key) } if err != nil { diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/operations_client.go b/sdk/resourcemanager/changeanalysis/armchangeanalysis/operations_client.go index 4c5c96bbba54..0352196418e6 100644 --- a/sdk/resourcemanager/changeanalysis/armchangeanalysis/operations_client.go +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/operations_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armchangeanalysis @@ -28,7 +27,7 @@ type OperationsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewOperationsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*OperationsClient, error) { - cl, err := arm.NewClient(moduleName+".OperationsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -48,25 +47,20 @@ func (client *OperationsClient) NewListPager(options *OperationsClientListOption return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *OperationsClientListResponse) (OperationsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "OperationsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return OperationsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return OperationsClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return OperationsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/options.go b/sdk/resourcemanager/changeanalysis/armchangeanalysis/options.go new file mode 100644 index 000000000000..7b625423bb6f --- /dev/null +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/options.go @@ -0,0 +1,43 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package armchangeanalysis + +// ChangesClientListChangesByResourceGroupOptions contains the optional parameters for the ChangesClient.NewListChangesByResourceGroupPager +// method. +type ChangesClientListChangesByResourceGroupOptions struct { + // A skip token is used to continue retrieving items after an operation returns a partial result. If a previous response contains + // a nextLink element, the value of the nextLink element will include a + // skipToken parameter that specifies a starting point to use for subsequent calls. + SkipToken *string +} + +// ChangesClientListChangesBySubscriptionOptions contains the optional parameters for the ChangesClient.NewListChangesBySubscriptionPager +// method. +type ChangesClientListChangesBySubscriptionOptions struct { + // A skip token is used to continue retrieving items after an operation returns a partial result. If a previous response contains + // a nextLink element, the value of the nextLink element will include a + // skipToken parameter that specifies a starting point to use for subsequent calls. + SkipToken *string +} + +// OperationsClientListOptions contains the optional parameters for the OperationsClient.NewListPager method. +type OperationsClientListOptions struct { + // A skip token is used to continue retrieving items after an operation returns a partial result. If a previous response contains + // a nextLink element, the value of the nextLink element will include a + // skipToken parameter that specifies a starting point to use for subsequent calls. + SkipToken *string +} + +// ResourceChangesClientListOptions contains the optional parameters for the ResourceChangesClient.NewListPager method. +type ResourceChangesClientListOptions struct { + // A skip token is used to continue retrieving items after an operation returns a partial result. If a previous response contains + // a nextLink element, the value of the nextLink element will include a + // skipToken parameter that specifies a starting point to use for subsequent calls. + SkipToken *string +} diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/resourcechanges_client.go b/sdk/resourcemanager/changeanalysis/armchangeanalysis/resourcechanges_client.go index be968f6818df..d7ef9348709b 100644 --- a/sdk/resourcemanager/changeanalysis/armchangeanalysis/resourcechanges_client.go +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/resourcechanges_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armchangeanalysis @@ -32,7 +31,7 @@ type ResourceChangesClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewResourceChangesClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*ResourceChangesClient, error) { - cl, err := arm.NewClient(moduleName+".ResourceChangesClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -57,25 +56,20 @@ func (client *ResourceChangesClient) NewListPager(resourceID string, startTime t return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ResourceChangesClientListResponse) (ResourceChangesClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, resourceID, startTime, endTime, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ResourceChangesClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, resourceID, startTime, endTime, options) + }, nil) if err != nil { return ResourceChangesClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return ResourceChangesClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ResourceChangesClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/resourcechanges_client_example_test.go b/sdk/resourcemanager/changeanalysis/armchangeanalysis/resourcechanges_client_example_test.go index bb376e4c9ade..df7effb945f8 100644 --- a/sdk/resourcemanager/changeanalysis/armchangeanalysis/resourcechanges_client_example_test.go +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/resourcechanges_client_example_test.go @@ -64,7 +64,7 @@ func ExampleResourceChangesClient_NewListPager() { // OldValue: to.Ptr("21D0482F-E91E-4C14-8078-65BFDCDBCA64"), // }}, // ResourceID: to.Ptr("/subscriptions/4d962866-1e3f-47f2-bd18-450c08f914c1/resourceGroups/MyResourceGroup/providers/Microsoft.Web/sites/mysite"), - // TimeStamp: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2021-04-26T02:17:41.39Z"); return t}()), + // TimeStamp: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2021-04-26T02:17:41.390Z"); return t}()), // }, // }, // { @@ -88,7 +88,7 @@ func ExampleResourceChangesClient_NewListPager() { // OldValue: to.Ptr(""), // }}, // ResourceID: to.Ptr("/subscriptions/4d962866-1e3f-47f2-bd18-450c08f914c1/resourceGroups/MyResourceGroup/providers/Microsoft.Web/sites/mysite"), - // TimeStamp: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2021-04-26T02:17:41.39Z"); return t}()), + // TimeStamp: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2021-04-26T02:17:41.390Z"); return t}()), // }, // }}, // } diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/response_types.go b/sdk/resourcemanager/changeanalysis/armchangeanalysis/response_types.go index eaa90922e258..c58a62fad843 100644 --- a/sdk/resourcemanager/changeanalysis/armchangeanalysis/response_types.go +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/response_types.go @@ -3,28 +3,31 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armchangeanalysis // ChangesClientListChangesByResourceGroupResponse contains the response from method ChangesClient.NewListChangesByResourceGroupPager. type ChangesClientListChangesByResourceGroupResponse struct { + // The list of detected changes. ChangeList } // ChangesClientListChangesBySubscriptionResponse contains the response from method ChangesClient.NewListChangesBySubscriptionPager. type ChangesClientListChangesBySubscriptionResponse struct { + // The list of detected changes. ChangeList } // OperationsClientListResponse contains the response from method OperationsClient.NewListPager. type OperationsClientListResponse struct { + // The resource provider operation list. ResourceProviderOperationList } // ResourceChangesClientListResponse contains the response from method ResourceChangesClient.NewListPager. type ResourceChangesClientListResponse struct { + // The list of detected changes. ChangeList } diff --git a/sdk/resourcemanager/changeanalysis/armchangeanalysis/time_rfc3339.go b/sdk/resourcemanager/changeanalysis/armchangeanalysis/time_rfc3339.go index 5b5cfeba97a3..a240d11d7c90 100644 --- a/sdk/resourcemanager/changeanalysis/armchangeanalysis/time_rfc3339.go +++ b/sdk/resourcemanager/changeanalysis/armchangeanalysis/time_rfc3339.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armchangeanalysis @@ -19,50 +18,50 @@ import ( "time" ) -const ( - utcLayoutJSON = `"2006-01-02T15:04:05.999999999"` - utcLayout = "2006-01-02T15:04:05.999999999" - rfc3339JSON = `"` + time.RFC3339Nano + `"` -) - // Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases. var tzOffsetRegex = regexp.MustCompile(`(Z|z|\+|-)(\d+:\d+)*"*$`) -type timeRFC3339 time.Time +const ( + utcDateTimeJSON = `"2006-01-02T15:04:05.999999999"` + utcDateTime = "2006-01-02T15:04:05.999999999" + dateTimeJSON = `"` + time.RFC3339Nano + `"` +) + +type dateTimeRFC3339 time.Time -func (t timeRFC3339) MarshalJSON() (json []byte, err error) { +func (t dateTimeRFC3339) MarshalJSON() ([]byte, error) { tt := time.Time(t) return tt.MarshalJSON() } -func (t timeRFC3339) MarshalText() (text []byte, err error) { +func (t dateTimeRFC3339) MarshalText() ([]byte, error) { tt := time.Time(t) return tt.MarshalText() } -func (t *timeRFC3339) UnmarshalJSON(data []byte) error { - layout := utcLayoutJSON +func (t *dateTimeRFC3339) UnmarshalJSON(data []byte) error { + layout := utcDateTimeJSON if tzOffsetRegex.Match(data) { - layout = rfc3339JSON + layout = dateTimeJSON } return t.Parse(layout, string(data)) } -func (t *timeRFC3339) UnmarshalText(data []byte) (err error) { - layout := utcLayout +func (t *dateTimeRFC3339) UnmarshalText(data []byte) error { + layout := utcDateTime if tzOffsetRegex.Match(data) { layout = time.RFC3339Nano } return t.Parse(layout, string(data)) } -func (t *timeRFC3339) Parse(layout, value string) error { +func (t *dateTimeRFC3339) Parse(layout, value string) error { p, err := time.Parse(layout, strings.ToUpper(value)) - *t = timeRFC3339(p) + *t = dateTimeRFC3339(p) return err } -func populateTimeRFC3339(m map[string]any, k string, t *time.Time) { +func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) { if t == nil { return } else if azcore.IsNullValue(t) { @@ -71,14 +70,14 @@ func populateTimeRFC3339(m map[string]any, k string, t *time.Time) { } else if reflect.ValueOf(t).IsNil() { return } - m[k] = (*timeRFC3339)(t) + m[k] = (*dateTimeRFC3339)(t) } -func unpopulateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { +func unpopulateDateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { if data == nil || strings.EqualFold(string(data), "null") { return nil } - var aux timeRFC3339 + var aux dateTimeRFC3339 if err := json.Unmarshal(data, &aux); err != nil { return fmt.Errorf("struct field %s: %v", fn, err) } From 25151d05264f9a764a825e8de9b409dfe91adacd Mon Sep 17 00:00:00 2001 From: Alancere <804873052@qq.com> Date: Tue, 21 Nov 2023 16:10:52 +0800 Subject: [PATCH 08/10] [Release] sdk/resourcemanager/cognitiveservices/armcognitiveservices/1.6.0 generation from spec commit: 164375e67a1bffb207bcf603772c289dbe42d7b5 --- .../armcognitiveservices/CHANGELOG.md | 6 + .../armcognitiveservices/README.md | 7 + .../armcognitiveservices/accounts_client.go | 227 ++++-- .../armcognitiveservices/autorest.md | 2 +- .../armcognitiveservices/client_factory.go | 49 +- .../commitmentplans_client.go | 302 ++++--- .../commitmenttiers_client.go | 26 +- .../armcognitiveservices/constants.go | 11 +- .../deletedaccounts_client.go | 64 +- .../deployments_client.go | 91 ++- .../fake/accounts_server.go | 574 +++++++++++++ .../fake/commitmentplans_server.go | 756 ++++++++++++++++++ .../fake/commitmenttiers_server.go | 108 +++ .../fake/deletedaccounts_server.go | 204 +++++ .../fake/deployments_server.go | 272 +++++++ .../armcognitiveservices/fake/internal.go | 72 ++ .../fake/management_server.go | 135 ++++ .../fake/models_server.go | 108 +++ .../fake/operations_server.go | 96 +++ .../fake/privateendpointconnections_server.go | 261 ++++++ .../fake/privatelinkresources_server.go | 100 +++ .../fake/resourceskus_server.go | 103 +++ .../fake/server_factory.go | 140 ++++ .../armcognitiveservices/fake/time_rfc3339.go | 86 ++ .../fake/usages_server.go | 120 +++ .../armcognitiveservices/go.mod | 20 +- .../armcognitiveservices/go.sum | 42 +- .../armcognitiveservices/management_client.go | 45 +- .../armcognitiveservices/models.go | 259 +----- .../armcognitiveservices/models_client.go | 26 +- .../models_client_example_test.go | 4 +- .../armcognitiveservices/models_serde.go | 19 +- .../armcognitiveservices/operations_client.go | 26 +- .../armcognitiveservices/options.go | 265 ++++++ .../privateendpointconnections_client.go | 86 +- .../privatelinkresources_client.go | 20 +- .../resourceskus_client.go | 26 +- .../armcognitiveservices/response_types.go | 40 +- .../armcognitiveservices/time_rfc3339.go | 43 +- .../armcognitiveservices/usages_client.go | 26 +- 40 files changed, 4139 insertions(+), 728 deletions(-) create mode 100644 sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/accounts_server.go create mode 100644 sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/commitmentplans_server.go create mode 100644 sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/commitmenttiers_server.go create mode 100644 sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/deletedaccounts_server.go create mode 100644 sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/deployments_server.go create mode 100644 sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/internal.go create mode 100644 sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/management_server.go create mode 100644 sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/models_server.go create mode 100644 sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/operations_server.go create mode 100644 sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/privateendpointconnections_server.go create mode 100644 sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/privatelinkresources_server.go create mode 100644 sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/resourceskus_server.go create mode 100644 sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/server_factory.go create mode 100644 sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/time_rfc3339.go create mode 100644 sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/usages_server.go create mode 100644 sdk/resourcemanager/cognitiveservices/armcognitiveservices/options.go diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/CHANGELOG.md b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/CHANGELOG.md index 7e89fc6764a4..a0697812223f 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/CHANGELOG.md +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/CHANGELOG.md @@ -1,5 +1,11 @@ # Release History +## 1.6.0 (2023-11-24) +### Features Added + +- Support for test fakes and OpenTelemetry trace spans. + + ## 1.5.0 (2023-07-28) ### Features Added diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/README.md b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/README.md index fec086d061b5..86e5013612ea 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/README.md +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/README.md @@ -60,6 +60,13 @@ A client groups a set of related APIs, providing access to its functionality. C client := clientFactory.NewAccountsClient() ``` +## Fakes + +The fake package contains types used for constructing in-memory fake servers used in unit tests. +This allows writing tests to cover various success/error conditions without the need for connecting to a live service. + +Please see https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/samples/fakes for details and examples on how to use fakes. + ## Provide Feedback If you encounter bugs or have suggestions, please diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/accounts_client.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/accounts_client.go index 02fd86bcbeab..bd3916f2abf9 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/accounts_client.go +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/accounts_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcognitiveservices @@ -33,7 +32,7 @@ type AccountsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewAccountsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*AccountsClient, error) { - cl, err := arm.NewClient(moduleName+".AccountsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -59,9 +58,14 @@ func (client *AccountsClient) BeginCreate(ctx context.Context, resourceGroupName if err != nil { return nil, err } - return runtime.NewPoller[AccountsClientCreateResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[AccountsClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[AccountsClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[AccountsClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -71,18 +75,24 @@ func (client *AccountsClient) BeginCreate(ctx context.Context, resourceGroupName // // Generated from API version 2023-05-01 func (client *AccountsClient) create(ctx context.Context, resourceGroupName string, accountName string, account Account, options *AccountsClientBeginCreateOptions) (*http.Response, error) { + var err error + const operationName = "AccountsClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, accountName, account, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusCreated, http.StatusAccepted) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusCreated, http.StatusAccepted) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // createCreateRequest creates the Create request. @@ -108,7 +118,10 @@ func (client *AccountsClient) createCreateRequest(ctx context.Context, resourceG reqQP.Set("api-version", "2023-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, account) + if err := runtime.MarshalAsJSON(req, account); err != nil { + return nil, err + } + return req, nil } // BeginDelete - Deletes a Cognitive Services account from the resource group. @@ -124,9 +137,14 @@ func (client *AccountsClient) BeginDelete(ctx context.Context, resourceGroupName if err != nil { return nil, err } - return runtime.NewPoller[AccountsClientDeleteResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[AccountsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[AccountsClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[AccountsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -135,18 +153,24 @@ func (client *AccountsClient) BeginDelete(ctx context.Context, resourceGroupName // // Generated from API version 2023-05-01 func (client *AccountsClient) deleteOperation(ctx context.Context, resourceGroupName string, accountName string, options *AccountsClientBeginDeleteOptions) (*http.Response, error) { + var err error + const operationName = "AccountsClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, accountName, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusAccepted, http.StatusNoContent) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted, http.StatusNoContent) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // deleteCreateRequest creates the Delete request. @@ -183,18 +207,25 @@ func (client *AccountsClient) deleteCreateRequest(ctx context.Context, resourceG // - accountName - The name of Cognitive Services account. // - options - AccountsClientGetOptions contains the optional parameters for the AccountsClient.Get method. func (client *AccountsClient) Get(ctx context.Context, resourceGroupName string, accountName string, options *AccountsClientGetOptions) (AccountsClientGetResponse, error) { + var err error + const operationName = "AccountsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, accountName, options) if err != nil { return AccountsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return AccountsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AccountsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return AccountsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -242,25 +273,20 @@ func (client *AccountsClient) NewListPager(options *AccountsClientListOptions) * return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *AccountsClientListResponse) (AccountsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "AccountsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return AccountsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return AccountsClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AccountsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -303,25 +329,20 @@ func (client *AccountsClient) NewListByResourceGroupPager(resourceGroupName stri return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *AccountsClientListByResourceGroupResponse) (AccountsClientListByResourceGroupResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByResourceGroupCreateRequest(ctx, resourceGroupName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "AccountsClient.NewListByResourceGroupPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByResourceGroupCreateRequest(ctx, resourceGroupName, options) + }, nil) if err != nil { return AccountsClientListByResourceGroupResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return AccountsClientListByResourceGroupResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AccountsClientListByResourceGroupResponse{}, runtime.NewResponseError(resp) - } return client.listByResourceGroupHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -364,18 +385,25 @@ func (client *AccountsClient) listByResourceGroupHandleResponse(resp *http.Respo // - accountName - The name of Cognitive Services account. // - options - AccountsClientListKeysOptions contains the optional parameters for the AccountsClient.ListKeys method. func (client *AccountsClient) ListKeys(ctx context.Context, resourceGroupName string, accountName string, options *AccountsClientListKeysOptions) (AccountsClientListKeysResponse, error) { + var err error + const operationName = "AccountsClient.ListKeys" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.listKeysCreateRequest(ctx, resourceGroupName, accountName, options) if err != nil { return AccountsClientListKeysResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return AccountsClientListKeysResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AccountsClientListKeysResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return AccountsClientListKeysResponse{}, err } - return client.listKeysHandleResponse(resp) + resp, err := client.listKeysHandleResponse(httpResp) + return resp, err } // listKeysCreateRequest creates the ListKeys request. @@ -425,25 +453,20 @@ func (client *AccountsClient) NewListModelsPager(resourceGroupName string, accou return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *AccountsClientListModelsResponse) (AccountsClientListModelsResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listModelsCreateRequest(ctx, resourceGroupName, accountName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "AccountsClient.NewListModelsPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listModelsCreateRequest(ctx, resourceGroupName, accountName, options) + }, nil) if err != nil { return AccountsClientListModelsResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return AccountsClientListModelsResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AccountsClientListModelsResponse{}, runtime.NewResponseError(resp) - } return client.listModelsHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -490,18 +513,25 @@ func (client *AccountsClient) listModelsHandleResponse(resp *http.Response) (Acc // - accountName - The name of Cognitive Services account. // - options - AccountsClientListSKUsOptions contains the optional parameters for the AccountsClient.ListSKUs method. func (client *AccountsClient) ListSKUs(ctx context.Context, resourceGroupName string, accountName string, options *AccountsClientListSKUsOptions) (AccountsClientListSKUsResponse, error) { + var err error + const operationName = "AccountsClient.ListSKUs" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.listSKUsCreateRequest(ctx, resourceGroupName, accountName, options) if err != nil { return AccountsClientListSKUsResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return AccountsClientListSKUsResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AccountsClientListSKUsResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return AccountsClientListSKUsResponse{}, err } - return client.listSKUsHandleResponse(resp) + resp, err := client.listSKUsHandleResponse(httpResp) + return resp, err } // listSKUsCreateRequest creates the ListSKUs request. @@ -547,18 +577,25 @@ func (client *AccountsClient) listSKUsHandleResponse(resp *http.Response) (Accou // - accountName - The name of Cognitive Services account. // - options - AccountsClientListUsagesOptions contains the optional parameters for the AccountsClient.ListUsages method. func (client *AccountsClient) ListUsages(ctx context.Context, resourceGroupName string, accountName string, options *AccountsClientListUsagesOptions) (AccountsClientListUsagesResponse, error) { + var err error + const operationName = "AccountsClient.ListUsages" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.listUsagesCreateRequest(ctx, resourceGroupName, accountName, options) if err != nil { return AccountsClientListUsagesResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return AccountsClientListUsagesResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AccountsClientListUsagesResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return AccountsClientListUsagesResponse{}, err } - return client.listUsagesHandleResponse(resp) + resp, err := client.listUsagesHandleResponse(httpResp) + return resp, err } // listUsagesCreateRequest creates the ListUsages request. @@ -608,18 +645,25 @@ func (client *AccountsClient) listUsagesHandleResponse(resp *http.Response) (Acc // - parameters - regenerate key parameters. // - options - AccountsClientRegenerateKeyOptions contains the optional parameters for the AccountsClient.RegenerateKey method. func (client *AccountsClient) RegenerateKey(ctx context.Context, resourceGroupName string, accountName string, parameters RegenerateKeyParameters, options *AccountsClientRegenerateKeyOptions) (AccountsClientRegenerateKeyResponse, error) { + var err error + const operationName = "AccountsClient.RegenerateKey" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.regenerateKeyCreateRequest(ctx, resourceGroupName, accountName, parameters, options) if err != nil { return AccountsClientRegenerateKeyResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return AccountsClientRegenerateKeyResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return AccountsClientRegenerateKeyResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return AccountsClientRegenerateKeyResponse{}, err } - return client.regenerateKeyHandleResponse(resp) + resp, err := client.regenerateKeyHandleResponse(httpResp) + return resp, err } // regenerateKeyCreateRequest creates the RegenerateKey request. @@ -645,7 +689,10 @@ func (client *AccountsClient) regenerateKeyCreateRequest(ctx context.Context, re reqQP.Set("api-version", "2023-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // regenerateKeyHandleResponse handles the RegenerateKey response. @@ -671,9 +718,14 @@ func (client *AccountsClient) BeginUpdate(ctx context.Context, resourceGroupName if err != nil { return nil, err } - return runtime.NewPoller[AccountsClientUpdateResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[AccountsClientUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[AccountsClientUpdateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[AccountsClientUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -682,18 +734,24 @@ func (client *AccountsClient) BeginUpdate(ctx context.Context, resourceGroupName // // Generated from API version 2023-05-01 func (client *AccountsClient) update(ctx context.Context, resourceGroupName string, accountName string, account Account, options *AccountsClientBeginUpdateOptions) (*http.Response, error) { + var err error + const operationName = "AccountsClient.BeginUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceGroupName, accountName, account, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusAccepted) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // updateCreateRequest creates the Update request. @@ -719,5 +777,8 @@ func (client *AccountsClient) updateCreateRequest(ctx context.Context, resourceG reqQP.Set("api-version", "2023-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, account) + if err := runtime.MarshalAsJSON(req, account); err != nil { + return nil, err + } + return req, nil } diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/autorest.md b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/autorest.md index 4a9c572b5db3..900c143ada3c 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/autorest.md +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/autorest.md @@ -8,6 +8,6 @@ require: - https://github.com/Azure/azure-rest-api-specs/blob/310a0100f5b020c1900c527a6aa70d21992f078a/specification/cognitiveservices/resource-manager/readme.md - https://github.com/Azure/azure-rest-api-specs/blob/310a0100f5b020c1900c527a6aa70d21992f078a/specification/cognitiveservices/resource-manager/readme.go.md license-header: MICROSOFT_MIT_NO_VERSION -module-version: 1.5.0 +module-version: 1.6.0 tag: package-2023-05 ``` \ No newline at end of file diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/client_factory.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/client_factory.go index e492cb29dcbf..eda98b5e2e1d 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/client_factory.go +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/client_factory.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcognitiveservices @@ -28,7 +27,7 @@ type ClientFactory struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewClientFactory(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*ClientFactory, error) { - _, err := arm.NewClient(moduleName+".ClientFactory", moduleVersion, credential, options) + _, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -38,62 +37,74 @@ func NewClientFactory(subscriptionID string, credential azcore.TokenCredential, }, nil } +// NewAccountsClient creates a new instance of AccountsClient. func (c *ClientFactory) NewAccountsClient() *AccountsClient { subClient, _ := NewAccountsClient(c.subscriptionID, c.credential, c.options) return subClient } -func (c *ClientFactory) NewDeletedAccountsClient() *DeletedAccountsClient { - subClient, _ := NewDeletedAccountsClient(c.subscriptionID, c.credential, c.options) +// NewCommitmentPlansClient creates a new instance of CommitmentPlansClient. +func (c *ClientFactory) NewCommitmentPlansClient() *CommitmentPlansClient { + subClient, _ := NewCommitmentPlansClient(c.subscriptionID, c.credential, c.options) return subClient } -func (c *ClientFactory) NewResourceSKUsClient() *ResourceSKUsClient { - subClient, _ := NewResourceSKUsClient(c.subscriptionID, c.credential, c.options) +// NewCommitmentTiersClient creates a new instance of CommitmentTiersClient. +func (c *ClientFactory) NewCommitmentTiersClient() *CommitmentTiersClient { + subClient, _ := NewCommitmentTiersClient(c.subscriptionID, c.credential, c.options) return subClient } -func (c *ClientFactory) NewUsagesClient() *UsagesClient { - subClient, _ := NewUsagesClient(c.subscriptionID, c.credential, c.options) +// NewDeletedAccountsClient creates a new instance of DeletedAccountsClient. +func (c *ClientFactory) NewDeletedAccountsClient() *DeletedAccountsClient { + subClient, _ := NewDeletedAccountsClient(c.subscriptionID, c.credential, c.options) return subClient } -func (c *ClientFactory) NewOperationsClient() *OperationsClient { - subClient, _ := NewOperationsClient(c.credential, c.options) +// NewDeploymentsClient creates a new instance of DeploymentsClient. +func (c *ClientFactory) NewDeploymentsClient() *DeploymentsClient { + subClient, _ := NewDeploymentsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewManagementClient creates a new instance of ManagementClient. func (c *ClientFactory) NewManagementClient() *ManagementClient { subClient, _ := NewManagementClient(c.subscriptionID, c.credential, c.options) return subClient } -func (c *ClientFactory) NewCommitmentTiersClient() *CommitmentTiersClient { - subClient, _ := NewCommitmentTiersClient(c.subscriptionID, c.credential, c.options) +// NewModelsClient creates a new instance of ModelsClient. +func (c *ClientFactory) NewModelsClient() *ModelsClient { + subClient, _ := NewModelsClient(c.subscriptionID, c.credential, c.options) return subClient } -func (c *ClientFactory) NewModelsClient() *ModelsClient { - subClient, _ := NewModelsClient(c.subscriptionID, c.credential, c.options) +// NewOperationsClient creates a new instance of OperationsClient. +func (c *ClientFactory) NewOperationsClient() *OperationsClient { + subClient, _ := NewOperationsClient(c.credential, c.options) return subClient } +// NewPrivateEndpointConnectionsClient creates a new instance of PrivateEndpointConnectionsClient. func (c *ClientFactory) NewPrivateEndpointConnectionsClient() *PrivateEndpointConnectionsClient { subClient, _ := NewPrivateEndpointConnectionsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewPrivateLinkResourcesClient creates a new instance of PrivateLinkResourcesClient. func (c *ClientFactory) NewPrivateLinkResourcesClient() *PrivateLinkResourcesClient { subClient, _ := NewPrivateLinkResourcesClient(c.subscriptionID, c.credential, c.options) return subClient } -func (c *ClientFactory) NewDeploymentsClient() *DeploymentsClient { - subClient, _ := NewDeploymentsClient(c.subscriptionID, c.credential, c.options) +// NewResourceSKUsClient creates a new instance of ResourceSKUsClient. +func (c *ClientFactory) NewResourceSKUsClient() *ResourceSKUsClient { + subClient, _ := NewResourceSKUsClient(c.subscriptionID, c.credential, c.options) return subClient } -func (c *ClientFactory) NewCommitmentPlansClient() *CommitmentPlansClient { - subClient, _ := NewCommitmentPlansClient(c.subscriptionID, c.credential, c.options) +// NewUsagesClient creates a new instance of UsagesClient. +func (c *ClientFactory) NewUsagesClient() *UsagesClient { + subClient, _ := NewUsagesClient(c.subscriptionID, c.credential, c.options) return subClient } diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/commitmentplans_client.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/commitmentplans_client.go index 577d27e34620..8ec8b1b08da8 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/commitmentplans_client.go +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/commitmentplans_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcognitiveservices @@ -33,7 +32,7 @@ type CommitmentPlansClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewCommitmentPlansClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*CommitmentPlansClient, error) { - cl, err := arm.NewClient(moduleName+".CommitmentPlansClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -55,18 +54,25 @@ func NewCommitmentPlansClient(subscriptionID string, credential azcore.TokenCred // - options - CommitmentPlansClientCreateOrUpdateOptions contains the optional parameters for the CommitmentPlansClient.CreateOrUpdate // method. func (client *CommitmentPlansClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, accountName string, commitmentPlanName string, commitmentPlan CommitmentPlan, options *CommitmentPlansClientCreateOrUpdateOptions) (CommitmentPlansClientCreateOrUpdateResponse, error) { + var err error + const operationName = "CommitmentPlansClient.CreateOrUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createOrUpdateCreateRequest(ctx, resourceGroupName, accountName, commitmentPlanName, commitmentPlan, options) if err != nil { return CommitmentPlansClientCreateOrUpdateResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return CommitmentPlansClientCreateOrUpdateResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusCreated) { - return CommitmentPlansClientCreateOrUpdateResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusCreated) { + err = runtime.NewResponseError(httpResp) + return CommitmentPlansClientCreateOrUpdateResponse{}, err } - return client.createOrUpdateHandleResponse(resp) + resp, err := client.createOrUpdateHandleResponse(httpResp) + return resp, err } // createOrUpdateCreateRequest creates the CreateOrUpdate request. @@ -96,7 +102,10 @@ func (client *CommitmentPlansClient) createOrUpdateCreateRequest(ctx context.Con reqQP.Set("api-version", "2023-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, commitmentPlan) + if err := runtime.MarshalAsJSON(req, commitmentPlan); err != nil { + return nil, err + } + return req, nil } // createOrUpdateHandleResponse handles the CreateOrUpdate response. @@ -124,11 +133,15 @@ func (client *CommitmentPlansClient) BeginCreateOrUpdateAssociation(ctx context. if err != nil { return nil, err } - return runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[CommitmentPlansClientCreateOrUpdateAssociationResponse]{ + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[CommitmentPlansClientCreateOrUpdateAssociationResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[CommitmentPlansClientCreateOrUpdateAssociationResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[CommitmentPlansClientCreateOrUpdateAssociationResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -137,18 +150,24 @@ func (client *CommitmentPlansClient) BeginCreateOrUpdateAssociation(ctx context. // // Generated from API version 2023-05-01 func (client *CommitmentPlansClient) createOrUpdateAssociation(ctx context.Context, resourceGroupName string, commitmentPlanName string, commitmentPlanAssociationName string, association CommitmentPlanAccountAssociation, options *CommitmentPlansClientBeginCreateOrUpdateAssociationOptions) (*http.Response, error) { + var err error + const operationName = "CommitmentPlansClient.BeginCreateOrUpdateAssociation" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createOrUpdateAssociationCreateRequest(ctx, resourceGroupName, commitmentPlanName, commitmentPlanAssociationName, association, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusCreated) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusCreated) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // createOrUpdateAssociationCreateRequest creates the CreateOrUpdateAssociation request. @@ -178,7 +197,10 @@ func (client *CommitmentPlansClient) createOrUpdateAssociationCreateRequest(ctx reqQP.Set("api-version", "2023-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, association) + if err := runtime.MarshalAsJSON(req, association); err != nil { + return nil, err + } + return req, nil } // BeginCreateOrUpdatePlan - Create Cognitive Services commitment plan. @@ -196,11 +218,15 @@ func (client *CommitmentPlansClient) BeginCreateOrUpdatePlan(ctx context.Context if err != nil { return nil, err } - return runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[CommitmentPlansClientCreateOrUpdatePlanResponse]{ + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[CommitmentPlansClientCreateOrUpdatePlanResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[CommitmentPlansClientCreateOrUpdatePlanResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[CommitmentPlansClientCreateOrUpdatePlanResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -209,18 +235,24 @@ func (client *CommitmentPlansClient) BeginCreateOrUpdatePlan(ctx context.Context // // Generated from API version 2023-05-01 func (client *CommitmentPlansClient) createOrUpdatePlan(ctx context.Context, resourceGroupName string, commitmentPlanName string, commitmentPlan CommitmentPlan, options *CommitmentPlansClientBeginCreateOrUpdatePlanOptions) (*http.Response, error) { + var err error + const operationName = "CommitmentPlansClient.BeginCreateOrUpdatePlan" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createOrUpdatePlanCreateRequest(ctx, resourceGroupName, commitmentPlanName, commitmentPlan, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusCreated) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusCreated) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // createOrUpdatePlanCreateRequest creates the CreateOrUpdatePlan request. @@ -246,7 +278,10 @@ func (client *CommitmentPlansClient) createOrUpdatePlanCreateRequest(ctx context reqQP.Set("api-version", "2023-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, commitmentPlan) + if err := runtime.MarshalAsJSON(req, commitmentPlan); err != nil { + return nil, err + } + return req, nil } // BeginDelete - Deletes the specified commitmentPlan associated with the Cognitive Services account. @@ -264,9 +299,14 @@ func (client *CommitmentPlansClient) BeginDelete(ctx context.Context, resourceGr if err != nil { return nil, err } - return runtime.NewPoller[CommitmentPlansClientDeleteResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[CommitmentPlansClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[CommitmentPlansClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[CommitmentPlansClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -275,18 +315,24 @@ func (client *CommitmentPlansClient) BeginDelete(ctx context.Context, resourceGr // // Generated from API version 2023-05-01 func (client *CommitmentPlansClient) deleteOperation(ctx context.Context, resourceGroupName string, accountName string, commitmentPlanName string, options *CommitmentPlansClientBeginDeleteOptions) (*http.Response, error) { + var err error + const operationName = "CommitmentPlansClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, accountName, commitmentPlanName, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusAccepted, http.StatusNoContent) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted, http.StatusNoContent) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // deleteCreateRequest creates the Delete request. @@ -334,11 +380,15 @@ func (client *CommitmentPlansClient) BeginDeleteAssociation(ctx context.Context, if err != nil { return nil, err } - return runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[CommitmentPlansClientDeleteAssociationResponse]{ + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[CommitmentPlansClientDeleteAssociationResponse]{ FinalStateVia: runtime.FinalStateViaLocation, + Tracer: client.internal.Tracer(), }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[CommitmentPlansClientDeleteAssociationResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[CommitmentPlansClientDeleteAssociationResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -347,18 +397,24 @@ func (client *CommitmentPlansClient) BeginDeleteAssociation(ctx context.Context, // // Generated from API version 2023-05-01 func (client *CommitmentPlansClient) deleteAssociation(ctx context.Context, resourceGroupName string, commitmentPlanName string, commitmentPlanAssociationName string, options *CommitmentPlansClientBeginDeleteAssociationOptions) (*http.Response, error) { + var err error + const operationName = "CommitmentPlansClient.BeginDeleteAssociation" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteAssociationCreateRequest(ctx, resourceGroupName, commitmentPlanName, commitmentPlanAssociationName, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusAccepted, http.StatusNoContent) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted, http.StatusNoContent) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // deleteAssociationCreateRequest creates the DeleteAssociation request. @@ -405,11 +461,15 @@ func (client *CommitmentPlansClient) BeginDeletePlan(ctx context.Context, resour if err != nil { return nil, err } - return runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[CommitmentPlansClientDeletePlanResponse]{ + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[CommitmentPlansClientDeletePlanResponse]{ FinalStateVia: runtime.FinalStateViaLocation, + Tracer: client.internal.Tracer(), }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[CommitmentPlansClientDeletePlanResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[CommitmentPlansClientDeletePlanResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -418,18 +478,24 @@ func (client *CommitmentPlansClient) BeginDeletePlan(ctx context.Context, resour // // Generated from API version 2023-05-01 func (client *CommitmentPlansClient) deletePlan(ctx context.Context, resourceGroupName string, commitmentPlanName string, options *CommitmentPlansClientBeginDeletePlanOptions) (*http.Response, error) { + var err error + const operationName = "CommitmentPlansClient.BeginDeletePlan" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deletePlanCreateRequest(ctx, resourceGroupName, commitmentPlanName, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusAccepted, http.StatusNoContent) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted, http.StatusNoContent) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // deletePlanCreateRequest creates the DeletePlan request. @@ -467,18 +533,25 @@ func (client *CommitmentPlansClient) deletePlanCreateRequest(ctx context.Context // - commitmentPlanName - The name of the commitmentPlan associated with the Cognitive Services Account // - options - CommitmentPlansClientGetOptions contains the optional parameters for the CommitmentPlansClient.Get method. func (client *CommitmentPlansClient) Get(ctx context.Context, resourceGroupName string, accountName string, commitmentPlanName string, options *CommitmentPlansClientGetOptions) (CommitmentPlansClientGetResponse, error) { + var err error + const operationName = "CommitmentPlansClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, accountName, commitmentPlanName, options) if err != nil { return CommitmentPlansClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return CommitmentPlansClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return CommitmentPlansClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return CommitmentPlansClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -530,18 +603,25 @@ func (client *CommitmentPlansClient) getHandleResponse(resp *http.Response) (Com // - options - CommitmentPlansClientGetAssociationOptions contains the optional parameters for the CommitmentPlansClient.GetAssociation // method. func (client *CommitmentPlansClient) GetAssociation(ctx context.Context, resourceGroupName string, commitmentPlanName string, commitmentPlanAssociationName string, options *CommitmentPlansClientGetAssociationOptions) (CommitmentPlansClientGetAssociationResponse, error) { + var err error + const operationName = "CommitmentPlansClient.GetAssociation" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getAssociationCreateRequest(ctx, resourceGroupName, commitmentPlanName, commitmentPlanAssociationName, options) if err != nil { return CommitmentPlansClientGetAssociationResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return CommitmentPlansClientGetAssociationResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return CommitmentPlansClientGetAssociationResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return CommitmentPlansClientGetAssociationResponse{}, err } - return client.getAssociationHandleResponse(resp) + resp, err := client.getAssociationHandleResponse(httpResp) + return resp, err } // getAssociationCreateRequest creates the GetAssociation request. @@ -591,18 +671,25 @@ func (client *CommitmentPlansClient) getAssociationHandleResponse(resp *http.Res // - commitmentPlanName - The name of the commitmentPlan associated with the Cognitive Services Account // - options - CommitmentPlansClientGetPlanOptions contains the optional parameters for the CommitmentPlansClient.GetPlan method. func (client *CommitmentPlansClient) GetPlan(ctx context.Context, resourceGroupName string, commitmentPlanName string, options *CommitmentPlansClientGetPlanOptions) (CommitmentPlansClientGetPlanResponse, error) { + var err error + const operationName = "CommitmentPlansClient.GetPlan" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getPlanCreateRequest(ctx, resourceGroupName, commitmentPlanName, options) if err != nil { return CommitmentPlansClientGetPlanResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return CommitmentPlansClientGetPlanResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return CommitmentPlansClientGetPlanResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return CommitmentPlansClientGetPlanResponse{}, err } - return client.getPlanHandleResponse(resp) + resp, err := client.getPlanHandleResponse(httpResp) + return resp, err } // getPlanCreateRequest creates the GetPlan request. @@ -653,25 +740,20 @@ func (client *CommitmentPlansClient) NewListPager(resourceGroupName string, acco return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *CommitmentPlansClientListResponse) (CommitmentPlansClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, resourceGroupName, accountName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return CommitmentPlansClientListResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "CommitmentPlansClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, resourceGroupName, accountName, options) + }, nil) if err != nil { return CommitmentPlansClientListResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return CommitmentPlansClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -723,25 +805,20 @@ func (client *CommitmentPlansClient) NewListAssociationsPager(resourceGroupName return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *CommitmentPlansClientListAssociationsResponse) (CommitmentPlansClientListAssociationsResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listAssociationsCreateRequest(ctx, resourceGroupName, commitmentPlanName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "CommitmentPlansClient.NewListAssociationsPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listAssociationsCreateRequest(ctx, resourceGroupName, commitmentPlanName, options) + }, nil) if err != nil { return CommitmentPlansClientListAssociationsResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return CommitmentPlansClientListAssociationsResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return CommitmentPlansClientListAssociationsResponse{}, runtime.NewResponseError(resp) - } return client.listAssociationsHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -792,25 +869,20 @@ func (client *CommitmentPlansClient) NewListPlansByResourceGroupPager(resourceGr return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *CommitmentPlansClientListPlansByResourceGroupResponse) (CommitmentPlansClientListPlansByResourceGroupResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listPlansByResourceGroupCreateRequest(ctx, resourceGroupName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return CommitmentPlansClientListPlansByResourceGroupResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "CommitmentPlansClient.NewListPlansByResourceGroupPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listPlansByResourceGroupCreateRequest(ctx, resourceGroupName, options) + }, nil) if err != nil { return CommitmentPlansClientListPlansByResourceGroupResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return CommitmentPlansClientListPlansByResourceGroupResponse{}, runtime.NewResponseError(resp) - } return client.listPlansByResourceGroupHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -856,25 +928,20 @@ func (client *CommitmentPlansClient) NewListPlansBySubscriptionPager(options *Co return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *CommitmentPlansClientListPlansBySubscriptionResponse) (CommitmentPlansClientListPlansBySubscriptionResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listPlansBySubscriptionCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return CommitmentPlansClientListPlansBySubscriptionResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "CommitmentPlansClient.NewListPlansBySubscriptionPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listPlansBySubscriptionCreateRequest(ctx, options) + }, nil) if err != nil { return CommitmentPlansClientListPlansBySubscriptionResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return CommitmentPlansClientListPlansBySubscriptionResponse{}, runtime.NewResponseError(resp) - } return client.listPlansBySubscriptionHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -920,11 +987,15 @@ func (client *CommitmentPlansClient) BeginUpdatePlan(ctx context.Context, resour if err != nil { return nil, err } - return runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[CommitmentPlansClientUpdatePlanResponse]{ + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[CommitmentPlansClientUpdatePlanResponse]{ FinalStateVia: runtime.FinalStateViaLocation, + Tracer: client.internal.Tracer(), }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[CommitmentPlansClientUpdatePlanResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[CommitmentPlansClientUpdatePlanResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -933,18 +1004,24 @@ func (client *CommitmentPlansClient) BeginUpdatePlan(ctx context.Context, resour // // Generated from API version 2023-05-01 func (client *CommitmentPlansClient) updatePlan(ctx context.Context, resourceGroupName string, commitmentPlanName string, commitmentPlan PatchResourceTagsAndSKU, options *CommitmentPlansClientBeginUpdatePlanOptions) (*http.Response, error) { + var err error + const operationName = "CommitmentPlansClient.BeginUpdatePlan" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updatePlanCreateRequest(ctx, resourceGroupName, commitmentPlanName, commitmentPlan, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusAccepted) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // updatePlanCreateRequest creates the UpdatePlan request. @@ -970,5 +1047,8 @@ func (client *CommitmentPlansClient) updatePlanCreateRequest(ctx context.Context reqQP.Set("api-version", "2023-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, commitmentPlan) + if err := runtime.MarshalAsJSON(req, commitmentPlan); err != nil { + return nil, err + } + return req, nil } diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/commitmenttiers_client.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/commitmenttiers_client.go index dd311f3f08aa..790015c03a5b 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/commitmenttiers_client.go +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/commitmenttiers_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcognitiveservices @@ -33,7 +32,7 @@ type CommitmentTiersClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewCommitmentTiersClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*CommitmentTiersClient, error) { - cl, err := arm.NewClient(moduleName+".CommitmentTiersClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -56,25 +55,20 @@ func (client *CommitmentTiersClient) NewListPager(location string, options *Comm return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *CommitmentTiersClientListResponse) (CommitmentTiersClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, location, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "CommitmentTiersClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, location, options) + }, nil) if err != nil { return CommitmentTiersClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return CommitmentTiersClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return CommitmentTiersClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/constants.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/constants.go index 197f6cf1e3c2..e42f8185f42e 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/constants.go +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/constants.go @@ -3,15 +3,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcognitiveservices const ( - moduleName = "armcognitiveservices" - moduleVersion = "v1.5.0" + moduleName = "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cognitiveservices/armcognitiveservices" + moduleVersion = "v1.6.0" ) // AbusePenaltyAction - The action of AbusePenalty. @@ -362,8 +361,8 @@ type ResourceIdentityType string const ( ResourceIdentityTypeNone ResourceIdentityType = "None" ResourceIdentityTypeSystemAssigned ResourceIdentityType = "SystemAssigned" - ResourceIdentityTypeUserAssigned ResourceIdentityType = "UserAssigned" ResourceIdentityTypeSystemAssignedUserAssigned ResourceIdentityType = "SystemAssigned, UserAssigned" + ResourceIdentityTypeUserAssigned ResourceIdentityType = "UserAssigned" ) // PossibleResourceIdentityTypeValues returns the possible values for the ResourceIdentityType const type. @@ -371,8 +370,8 @@ func PossibleResourceIdentityTypeValues() []ResourceIdentityType { return []ResourceIdentityType{ ResourceIdentityTypeNone, ResourceIdentityTypeSystemAssigned, - ResourceIdentityTypeUserAssigned, ResourceIdentityTypeSystemAssignedUserAssigned, + ResourceIdentityTypeUserAssigned, } } diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/deletedaccounts_client.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/deletedaccounts_client.go index 0b48f0be0130..f3e3acb938b2 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/deletedaccounts_client.go +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/deletedaccounts_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcognitiveservices @@ -33,7 +32,7 @@ type DeletedAccountsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewDeletedAccountsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*DeletedAccountsClient, error) { - cl, err := arm.NewClient(moduleName+".DeletedAccountsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -53,18 +52,25 @@ func NewDeletedAccountsClient(subscriptionID string, credential azcore.TokenCred // - accountName - The name of Cognitive Services account. // - options - DeletedAccountsClientGetOptions contains the optional parameters for the DeletedAccountsClient.Get method. func (client *DeletedAccountsClient) Get(ctx context.Context, location string, resourceGroupName string, accountName string, options *DeletedAccountsClientGetOptions) (DeletedAccountsClientGetResponse, error) { + var err error + const operationName = "DeletedAccountsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, location, resourceGroupName, accountName, options) if err != nil { return DeletedAccountsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return DeletedAccountsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return DeletedAccountsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return DeletedAccountsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -117,25 +123,20 @@ func (client *DeletedAccountsClient) NewListPager(options *DeletedAccountsClient return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *DeletedAccountsClientListResponse) (DeletedAccountsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return DeletedAccountsClientListResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "DeletedAccountsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return DeletedAccountsClientListResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return DeletedAccountsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -181,9 +182,14 @@ func (client *DeletedAccountsClient) BeginPurge(ctx context.Context, location st if err != nil { return nil, err } - return runtime.NewPoller[DeletedAccountsClientPurgeResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[DeletedAccountsClientPurgeResponse]{ + Tracer: client.internal.Tracer(), + }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[DeletedAccountsClientPurgeResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[DeletedAccountsClientPurgeResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -192,18 +198,24 @@ func (client *DeletedAccountsClient) BeginPurge(ctx context.Context, location st // // Generated from API version 2023-05-01 func (client *DeletedAccountsClient) purge(ctx context.Context, location string, resourceGroupName string, accountName string, options *DeletedAccountsClientBeginPurgeOptions) (*http.Response, error) { + var err error + const operationName = "DeletedAccountsClient.BeginPurge" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.purgeCreateRequest(ctx, location, resourceGroupName, accountName, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusAccepted, http.StatusNoContent) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted, http.StatusNoContent) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // purgeCreateRequest creates the Purge request. diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/deployments_client.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/deployments_client.go index ea6df40a7bc0..c045f05c2ee4 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/deployments_client.go +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/deployments_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcognitiveservices @@ -33,7 +32,7 @@ type DeploymentsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewDeploymentsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*DeploymentsClient, error) { - cl, err := arm.NewClient(moduleName+".DeploymentsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -60,11 +59,15 @@ func (client *DeploymentsClient) BeginCreateOrUpdate(ctx context.Context, resour if err != nil { return nil, err } - return runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[DeploymentsClientCreateOrUpdateResponse]{ + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[DeploymentsClientCreateOrUpdateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[DeploymentsClientCreateOrUpdateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[DeploymentsClientCreateOrUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -73,18 +76,24 @@ func (client *DeploymentsClient) BeginCreateOrUpdate(ctx context.Context, resour // // Generated from API version 2023-05-01 func (client *DeploymentsClient) createOrUpdate(ctx context.Context, resourceGroupName string, accountName string, deploymentName string, deployment Deployment, options *DeploymentsClientBeginCreateOrUpdateOptions) (*http.Response, error) { + var err error + const operationName = "DeploymentsClient.BeginCreateOrUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createOrUpdateCreateRequest(ctx, resourceGroupName, accountName, deploymentName, deployment, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusCreated) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusCreated) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // createOrUpdateCreateRequest creates the CreateOrUpdate request. @@ -114,7 +123,10 @@ func (client *DeploymentsClient) createOrUpdateCreateRequest(ctx context.Context reqQP.Set("api-version", "2023-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, deployment) + if err := runtime.MarshalAsJSON(req, deployment); err != nil { + return nil, err + } + return req, nil } // BeginDelete - Deletes the specified deployment associated with the Cognitive Services account. @@ -131,9 +143,14 @@ func (client *DeploymentsClient) BeginDelete(ctx context.Context, resourceGroupN if err != nil { return nil, err } - return runtime.NewPoller[DeploymentsClientDeleteResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[DeploymentsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[DeploymentsClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[DeploymentsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -142,18 +159,24 @@ func (client *DeploymentsClient) BeginDelete(ctx context.Context, resourceGroupN // // Generated from API version 2023-05-01 func (client *DeploymentsClient) deleteOperation(ctx context.Context, resourceGroupName string, accountName string, deploymentName string, options *DeploymentsClientBeginDeleteOptions) (*http.Response, error) { + var err error + const operationName = "DeploymentsClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, accountName, deploymentName, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusAccepted, http.StatusNoContent) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted, http.StatusNoContent) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // deleteCreateRequest creates the Delete request. @@ -195,18 +218,25 @@ func (client *DeploymentsClient) deleteCreateRequest(ctx context.Context, resour // - deploymentName - The name of the deployment associated with the Cognitive Services Account // - options - DeploymentsClientGetOptions contains the optional parameters for the DeploymentsClient.Get method. func (client *DeploymentsClient) Get(ctx context.Context, resourceGroupName string, accountName string, deploymentName string, options *DeploymentsClientGetOptions) (DeploymentsClientGetResponse, error) { + var err error + const operationName = "DeploymentsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, accountName, deploymentName, options) if err != nil { return DeploymentsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return DeploymentsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return DeploymentsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return DeploymentsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -260,25 +290,20 @@ func (client *DeploymentsClient) NewListPager(resourceGroupName string, accountN return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *DeploymentsClientListResponse) (DeploymentsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, resourceGroupName, accountName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return DeploymentsClientListResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "DeploymentsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, resourceGroupName, accountName, options) + }, nil) if err != nil { return DeploymentsClientListResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return DeploymentsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/accounts_server.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/accounts_server.go new file mode 100644 index 000000000000..d302a1ee3811 --- /dev/null +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/accounts_server.go @@ -0,0 +1,574 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cognitiveservices/armcognitiveservices" + "net/http" + "net/url" + "regexp" +) + +// AccountsServer is a fake server for instances of the armcognitiveservices.AccountsClient type. +type AccountsServer struct { + // BeginCreate is the fake for method AccountsClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated, http.StatusAccepted + BeginCreate func(ctx context.Context, resourceGroupName string, accountName string, account armcognitiveservices.Account, options *armcognitiveservices.AccountsClientBeginCreateOptions) (resp azfake.PollerResponder[armcognitiveservices.AccountsClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method AccountsClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, accountName string, options *armcognitiveservices.AccountsClientBeginDeleteOptions) (resp azfake.PollerResponder[armcognitiveservices.AccountsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method AccountsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, accountName string, options *armcognitiveservices.AccountsClientGetOptions) (resp azfake.Responder[armcognitiveservices.AccountsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method AccountsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armcognitiveservices.AccountsClientListOptions) (resp azfake.PagerResponder[armcognitiveservices.AccountsClientListResponse]) + + // NewListByResourceGroupPager is the fake for method AccountsClient.NewListByResourceGroupPager + // HTTP status codes to indicate success: http.StatusOK + NewListByResourceGroupPager func(resourceGroupName string, options *armcognitiveservices.AccountsClientListByResourceGroupOptions) (resp azfake.PagerResponder[armcognitiveservices.AccountsClientListByResourceGroupResponse]) + + // ListKeys is the fake for method AccountsClient.ListKeys + // HTTP status codes to indicate success: http.StatusOK + ListKeys func(ctx context.Context, resourceGroupName string, accountName string, options *armcognitiveservices.AccountsClientListKeysOptions) (resp azfake.Responder[armcognitiveservices.AccountsClientListKeysResponse], errResp azfake.ErrorResponder) + + // NewListModelsPager is the fake for method AccountsClient.NewListModelsPager + // HTTP status codes to indicate success: http.StatusOK + NewListModelsPager func(resourceGroupName string, accountName string, options *armcognitiveservices.AccountsClientListModelsOptions) (resp azfake.PagerResponder[armcognitiveservices.AccountsClientListModelsResponse]) + + // ListSKUs is the fake for method AccountsClient.ListSKUs + // HTTP status codes to indicate success: http.StatusOK + ListSKUs func(ctx context.Context, resourceGroupName string, accountName string, options *armcognitiveservices.AccountsClientListSKUsOptions) (resp azfake.Responder[armcognitiveservices.AccountsClientListSKUsResponse], errResp azfake.ErrorResponder) + + // ListUsages is the fake for method AccountsClient.ListUsages + // HTTP status codes to indicate success: http.StatusOK + ListUsages func(ctx context.Context, resourceGroupName string, accountName string, options *armcognitiveservices.AccountsClientListUsagesOptions) (resp azfake.Responder[armcognitiveservices.AccountsClientListUsagesResponse], errResp azfake.ErrorResponder) + + // RegenerateKey is the fake for method AccountsClient.RegenerateKey + // HTTP status codes to indicate success: http.StatusOK + RegenerateKey func(ctx context.Context, resourceGroupName string, accountName string, parameters armcognitiveservices.RegenerateKeyParameters, options *armcognitiveservices.AccountsClientRegenerateKeyOptions) (resp azfake.Responder[armcognitiveservices.AccountsClientRegenerateKeyResponse], errResp azfake.ErrorResponder) + + // BeginUpdate is the fake for method AccountsClient.BeginUpdate + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginUpdate func(ctx context.Context, resourceGroupName string, accountName string, account armcognitiveservices.Account, options *armcognitiveservices.AccountsClientBeginUpdateOptions) (resp azfake.PollerResponder[armcognitiveservices.AccountsClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewAccountsServerTransport creates a new instance of AccountsServerTransport with the provided implementation. +// The returned AccountsServerTransport instance is connected to an instance of armcognitiveservices.AccountsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewAccountsServerTransport(srv *AccountsServer) *AccountsServerTransport { + return &AccountsServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armcognitiveservices.AccountsClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armcognitiveservices.AccountsClientDeleteResponse]](), + newListPager: newTracker[azfake.PagerResponder[armcognitiveservices.AccountsClientListResponse]](), + newListByResourceGroupPager: newTracker[azfake.PagerResponder[armcognitiveservices.AccountsClientListByResourceGroupResponse]](), + newListModelsPager: newTracker[azfake.PagerResponder[armcognitiveservices.AccountsClientListModelsResponse]](), + beginUpdate: newTracker[azfake.PollerResponder[armcognitiveservices.AccountsClientUpdateResponse]](), + } +} + +// AccountsServerTransport connects instances of armcognitiveservices.AccountsClient to instances of AccountsServer. +// Don't use this type directly, use NewAccountsServerTransport instead. +type AccountsServerTransport struct { + srv *AccountsServer + beginCreate *tracker[azfake.PollerResponder[armcognitiveservices.AccountsClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armcognitiveservices.AccountsClientDeleteResponse]] + newListPager *tracker[azfake.PagerResponder[armcognitiveservices.AccountsClientListResponse]] + newListByResourceGroupPager *tracker[azfake.PagerResponder[armcognitiveservices.AccountsClientListByResourceGroupResponse]] + newListModelsPager *tracker[azfake.PagerResponder[armcognitiveservices.AccountsClientListModelsResponse]] + beginUpdate *tracker[azfake.PollerResponder[armcognitiveservices.AccountsClientUpdateResponse]] +} + +// Do implements the policy.Transporter interface for AccountsServerTransport. +func (a *AccountsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "AccountsClient.BeginCreate": + resp, err = a.dispatchBeginCreate(req) + case "AccountsClient.BeginDelete": + resp, err = a.dispatchBeginDelete(req) + case "AccountsClient.Get": + resp, err = a.dispatchGet(req) + case "AccountsClient.NewListPager": + resp, err = a.dispatchNewListPager(req) + case "AccountsClient.NewListByResourceGroupPager": + resp, err = a.dispatchNewListByResourceGroupPager(req) + case "AccountsClient.ListKeys": + resp, err = a.dispatchListKeys(req) + case "AccountsClient.NewListModelsPager": + resp, err = a.dispatchNewListModelsPager(req) + case "AccountsClient.ListSKUs": + resp, err = a.dispatchListSKUs(req) + case "AccountsClient.ListUsages": + resp, err = a.dispatchListUsages(req) + case "AccountsClient.RegenerateKey": + resp, err = a.dispatchRegenerateKey(req) + case "AccountsClient.BeginUpdate": + resp, err = a.dispatchBeginUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (a *AccountsServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if a.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := a.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcognitiveservices.Account](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.BeginCreate(req.Context(), resourceGroupNameParam, accountNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + a.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated, http.StatusAccepted}, resp.StatusCode) { + a.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + a.beginCreate.remove(req) + } + + return resp, nil +} + +func (a *AccountsServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if a.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := a.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.BeginDelete(req.Context(), resourceGroupNameParam, accountNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + a.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + a.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + a.beginDelete.remove(req) + } + + return resp, nil +} + +func (a *AccountsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if a.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.Get(req.Context(), resourceGroupNameParam, accountNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Account, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (a *AccountsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if a.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := a.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resp := a.srv.NewListPager(nil) + newListPager = &resp + a.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armcognitiveservices.AccountsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + a.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + a.newListPager.remove(req) + } + return resp, nil +} + +func (a *AccountsServerTransport) dispatchNewListByResourceGroupPager(req *http.Request) (*http.Response, error) { + if a.srv.NewListByResourceGroupPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByResourceGroupPager not implemented")} + } + newListByResourceGroupPager := a.newListByResourceGroupPager.get(req) + if newListByResourceGroupPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resp := a.srv.NewListByResourceGroupPager(resourceGroupNameParam, nil) + newListByResourceGroupPager = &resp + a.newListByResourceGroupPager.add(req, newListByResourceGroupPager) + server.PagerResponderInjectNextLinks(newListByResourceGroupPager, req, func(page *armcognitiveservices.AccountsClientListByResourceGroupResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByResourceGroupPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + a.newListByResourceGroupPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByResourceGroupPager) { + a.newListByResourceGroupPager.remove(req) + } + return resp, nil +} + +func (a *AccountsServerTransport) dispatchListKeys(req *http.Request) (*http.Response, error) { + if a.srv.ListKeys == nil { + return nil, &nonRetriableError{errors.New("fake for method ListKeys not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/listKeys` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.ListKeys(req.Context(), resourceGroupNameParam, accountNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).APIKeys, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (a *AccountsServerTransport) dispatchNewListModelsPager(req *http.Request) (*http.Response, error) { + if a.srv.NewListModelsPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListModelsPager not implemented")} + } + newListModelsPager := a.newListModelsPager.get(req) + if newListModelsPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/models` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + resp := a.srv.NewListModelsPager(resourceGroupNameParam, accountNameParam, nil) + newListModelsPager = &resp + a.newListModelsPager.add(req, newListModelsPager) + server.PagerResponderInjectNextLinks(newListModelsPager, req, func(page *armcognitiveservices.AccountsClientListModelsResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListModelsPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + a.newListModelsPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListModelsPager) { + a.newListModelsPager.remove(req) + } + return resp, nil +} + +func (a *AccountsServerTransport) dispatchListSKUs(req *http.Request) (*http.Response, error) { + if a.srv.ListSKUs == nil { + return nil, &nonRetriableError{errors.New("fake for method ListSKUs not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/skus` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.ListSKUs(req.Context(), resourceGroupNameParam, accountNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).AccountSKUListResult, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (a *AccountsServerTransport) dispatchListUsages(req *http.Request) (*http.Response, error) { + if a.srv.ListUsages == nil { + return nil, &nonRetriableError{errors.New("fake for method ListUsages not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/usages` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + filterUnescaped, err := url.QueryUnescape(qp.Get("$filter")) + if err != nil { + return nil, err + } + filterParam := getOptional(filterUnescaped) + var options *armcognitiveservices.AccountsClientListUsagesOptions + if filterParam != nil { + options = &armcognitiveservices.AccountsClientListUsagesOptions{ + Filter: filterParam, + } + } + respr, errRespr := a.srv.ListUsages(req.Context(), resourceGroupNameParam, accountNameParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).UsageListResult, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (a *AccountsServerTransport) dispatchRegenerateKey(req *http.Request) (*http.Response, error) { + if a.srv.RegenerateKey == nil { + return nil, &nonRetriableError{errors.New("fake for method RegenerateKey not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/regenerateKey` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcognitiveservices.RegenerateKeyParameters](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.RegenerateKey(req.Context(), resourceGroupNameParam, accountNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).APIKeys, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (a *AccountsServerTransport) dispatchBeginUpdate(req *http.Request) (*http.Response, error) { + if a.srv.BeginUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginUpdate not implemented")} + } + beginUpdate := a.beginUpdate.get(req) + if beginUpdate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcognitiveservices.Account](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + respr, errRespr := a.srv.BeginUpdate(req.Context(), resourceGroupNameParam, accountNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginUpdate = &respr + a.beginUpdate.add(req, beginUpdate) + } + + resp, err := server.PollerResponderNext(beginUpdate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + a.beginUpdate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginUpdate) { + a.beginUpdate.remove(req) + } + + return resp, nil +} diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/commitmentplans_server.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/commitmentplans_server.go new file mode 100644 index 000000000000..49edbd0c019d --- /dev/null +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/commitmentplans_server.go @@ -0,0 +1,756 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cognitiveservices/armcognitiveservices" + "net/http" + "net/url" + "regexp" +) + +// CommitmentPlansServer is a fake server for instances of the armcognitiveservices.CommitmentPlansClient type. +type CommitmentPlansServer struct { + // CreateOrUpdate is the fake for method CommitmentPlansClient.CreateOrUpdate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + CreateOrUpdate func(ctx context.Context, resourceGroupName string, accountName string, commitmentPlanName string, commitmentPlan armcognitiveservices.CommitmentPlan, options *armcognitiveservices.CommitmentPlansClientCreateOrUpdateOptions) (resp azfake.Responder[armcognitiveservices.CommitmentPlansClientCreateOrUpdateResponse], errResp azfake.ErrorResponder) + + // BeginCreateOrUpdateAssociation is the fake for method CommitmentPlansClient.BeginCreateOrUpdateAssociation + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + BeginCreateOrUpdateAssociation func(ctx context.Context, resourceGroupName string, commitmentPlanName string, commitmentPlanAssociationName string, association armcognitiveservices.CommitmentPlanAccountAssociation, options *armcognitiveservices.CommitmentPlansClientBeginCreateOrUpdateAssociationOptions) (resp azfake.PollerResponder[armcognitiveservices.CommitmentPlansClientCreateOrUpdateAssociationResponse], errResp azfake.ErrorResponder) + + // BeginCreateOrUpdatePlan is the fake for method CommitmentPlansClient.BeginCreateOrUpdatePlan + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + BeginCreateOrUpdatePlan func(ctx context.Context, resourceGroupName string, commitmentPlanName string, commitmentPlan armcognitiveservices.CommitmentPlan, options *armcognitiveservices.CommitmentPlansClientBeginCreateOrUpdatePlanOptions) (resp azfake.PollerResponder[armcognitiveservices.CommitmentPlansClientCreateOrUpdatePlanResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method CommitmentPlansClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, accountName string, commitmentPlanName string, options *armcognitiveservices.CommitmentPlansClientBeginDeleteOptions) (resp azfake.PollerResponder[armcognitiveservices.CommitmentPlansClientDeleteResponse], errResp azfake.ErrorResponder) + + // BeginDeleteAssociation is the fake for method CommitmentPlansClient.BeginDeleteAssociation + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDeleteAssociation func(ctx context.Context, resourceGroupName string, commitmentPlanName string, commitmentPlanAssociationName string, options *armcognitiveservices.CommitmentPlansClientBeginDeleteAssociationOptions) (resp azfake.PollerResponder[armcognitiveservices.CommitmentPlansClientDeleteAssociationResponse], errResp azfake.ErrorResponder) + + // BeginDeletePlan is the fake for method CommitmentPlansClient.BeginDeletePlan + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDeletePlan func(ctx context.Context, resourceGroupName string, commitmentPlanName string, options *armcognitiveservices.CommitmentPlansClientBeginDeletePlanOptions) (resp azfake.PollerResponder[armcognitiveservices.CommitmentPlansClientDeletePlanResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method CommitmentPlansClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, accountName string, commitmentPlanName string, options *armcognitiveservices.CommitmentPlansClientGetOptions) (resp azfake.Responder[armcognitiveservices.CommitmentPlansClientGetResponse], errResp azfake.ErrorResponder) + + // GetAssociation is the fake for method CommitmentPlansClient.GetAssociation + // HTTP status codes to indicate success: http.StatusOK + GetAssociation func(ctx context.Context, resourceGroupName string, commitmentPlanName string, commitmentPlanAssociationName string, options *armcognitiveservices.CommitmentPlansClientGetAssociationOptions) (resp azfake.Responder[armcognitiveservices.CommitmentPlansClientGetAssociationResponse], errResp azfake.ErrorResponder) + + // GetPlan is the fake for method CommitmentPlansClient.GetPlan + // HTTP status codes to indicate success: http.StatusOK + GetPlan func(ctx context.Context, resourceGroupName string, commitmentPlanName string, options *armcognitiveservices.CommitmentPlansClientGetPlanOptions) (resp azfake.Responder[armcognitiveservices.CommitmentPlansClientGetPlanResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method CommitmentPlansClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(resourceGroupName string, accountName string, options *armcognitiveservices.CommitmentPlansClientListOptions) (resp azfake.PagerResponder[armcognitiveservices.CommitmentPlansClientListResponse]) + + // NewListAssociationsPager is the fake for method CommitmentPlansClient.NewListAssociationsPager + // HTTP status codes to indicate success: http.StatusOK + NewListAssociationsPager func(resourceGroupName string, commitmentPlanName string, options *armcognitiveservices.CommitmentPlansClientListAssociationsOptions) (resp azfake.PagerResponder[armcognitiveservices.CommitmentPlansClientListAssociationsResponse]) + + // NewListPlansByResourceGroupPager is the fake for method CommitmentPlansClient.NewListPlansByResourceGroupPager + // HTTP status codes to indicate success: http.StatusOK + NewListPlansByResourceGroupPager func(resourceGroupName string, options *armcognitiveservices.CommitmentPlansClientListPlansByResourceGroupOptions) (resp azfake.PagerResponder[armcognitiveservices.CommitmentPlansClientListPlansByResourceGroupResponse]) + + // NewListPlansBySubscriptionPager is the fake for method CommitmentPlansClient.NewListPlansBySubscriptionPager + // HTTP status codes to indicate success: http.StatusOK + NewListPlansBySubscriptionPager func(options *armcognitiveservices.CommitmentPlansClientListPlansBySubscriptionOptions) (resp azfake.PagerResponder[armcognitiveservices.CommitmentPlansClientListPlansBySubscriptionResponse]) + + // BeginUpdatePlan is the fake for method CommitmentPlansClient.BeginUpdatePlan + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginUpdatePlan func(ctx context.Context, resourceGroupName string, commitmentPlanName string, commitmentPlan armcognitiveservices.PatchResourceTagsAndSKU, options *armcognitiveservices.CommitmentPlansClientBeginUpdatePlanOptions) (resp azfake.PollerResponder[armcognitiveservices.CommitmentPlansClientUpdatePlanResponse], errResp azfake.ErrorResponder) +} + +// NewCommitmentPlansServerTransport creates a new instance of CommitmentPlansServerTransport with the provided implementation. +// The returned CommitmentPlansServerTransport instance is connected to an instance of armcognitiveservices.CommitmentPlansClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewCommitmentPlansServerTransport(srv *CommitmentPlansServer) *CommitmentPlansServerTransport { + return &CommitmentPlansServerTransport{ + srv: srv, + beginCreateOrUpdateAssociation: newTracker[azfake.PollerResponder[armcognitiveservices.CommitmentPlansClientCreateOrUpdateAssociationResponse]](), + beginCreateOrUpdatePlan: newTracker[azfake.PollerResponder[armcognitiveservices.CommitmentPlansClientCreateOrUpdatePlanResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armcognitiveservices.CommitmentPlansClientDeleteResponse]](), + beginDeleteAssociation: newTracker[azfake.PollerResponder[armcognitiveservices.CommitmentPlansClientDeleteAssociationResponse]](), + beginDeletePlan: newTracker[azfake.PollerResponder[armcognitiveservices.CommitmentPlansClientDeletePlanResponse]](), + newListPager: newTracker[azfake.PagerResponder[armcognitiveservices.CommitmentPlansClientListResponse]](), + newListAssociationsPager: newTracker[azfake.PagerResponder[armcognitiveservices.CommitmentPlansClientListAssociationsResponse]](), + newListPlansByResourceGroupPager: newTracker[azfake.PagerResponder[armcognitiveservices.CommitmentPlansClientListPlansByResourceGroupResponse]](), + newListPlansBySubscriptionPager: newTracker[azfake.PagerResponder[armcognitiveservices.CommitmentPlansClientListPlansBySubscriptionResponse]](), + beginUpdatePlan: newTracker[azfake.PollerResponder[armcognitiveservices.CommitmentPlansClientUpdatePlanResponse]](), + } +} + +// CommitmentPlansServerTransport connects instances of armcognitiveservices.CommitmentPlansClient to instances of CommitmentPlansServer. +// Don't use this type directly, use NewCommitmentPlansServerTransport instead. +type CommitmentPlansServerTransport struct { + srv *CommitmentPlansServer + beginCreateOrUpdateAssociation *tracker[azfake.PollerResponder[armcognitiveservices.CommitmentPlansClientCreateOrUpdateAssociationResponse]] + beginCreateOrUpdatePlan *tracker[azfake.PollerResponder[armcognitiveservices.CommitmentPlansClientCreateOrUpdatePlanResponse]] + beginDelete *tracker[azfake.PollerResponder[armcognitiveservices.CommitmentPlansClientDeleteResponse]] + beginDeleteAssociation *tracker[azfake.PollerResponder[armcognitiveservices.CommitmentPlansClientDeleteAssociationResponse]] + beginDeletePlan *tracker[azfake.PollerResponder[armcognitiveservices.CommitmentPlansClientDeletePlanResponse]] + newListPager *tracker[azfake.PagerResponder[armcognitiveservices.CommitmentPlansClientListResponse]] + newListAssociationsPager *tracker[azfake.PagerResponder[armcognitiveservices.CommitmentPlansClientListAssociationsResponse]] + newListPlansByResourceGroupPager *tracker[azfake.PagerResponder[armcognitiveservices.CommitmentPlansClientListPlansByResourceGroupResponse]] + newListPlansBySubscriptionPager *tracker[azfake.PagerResponder[armcognitiveservices.CommitmentPlansClientListPlansBySubscriptionResponse]] + beginUpdatePlan *tracker[azfake.PollerResponder[armcognitiveservices.CommitmentPlansClientUpdatePlanResponse]] +} + +// Do implements the policy.Transporter interface for CommitmentPlansServerTransport. +func (c *CommitmentPlansServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "CommitmentPlansClient.CreateOrUpdate": + resp, err = c.dispatchCreateOrUpdate(req) + case "CommitmentPlansClient.BeginCreateOrUpdateAssociation": + resp, err = c.dispatchBeginCreateOrUpdateAssociation(req) + case "CommitmentPlansClient.BeginCreateOrUpdatePlan": + resp, err = c.dispatchBeginCreateOrUpdatePlan(req) + case "CommitmentPlansClient.BeginDelete": + resp, err = c.dispatchBeginDelete(req) + case "CommitmentPlansClient.BeginDeleteAssociation": + resp, err = c.dispatchBeginDeleteAssociation(req) + case "CommitmentPlansClient.BeginDeletePlan": + resp, err = c.dispatchBeginDeletePlan(req) + case "CommitmentPlansClient.Get": + resp, err = c.dispatchGet(req) + case "CommitmentPlansClient.GetAssociation": + resp, err = c.dispatchGetAssociation(req) + case "CommitmentPlansClient.GetPlan": + resp, err = c.dispatchGetPlan(req) + case "CommitmentPlansClient.NewListPager": + resp, err = c.dispatchNewListPager(req) + case "CommitmentPlansClient.NewListAssociationsPager": + resp, err = c.dispatchNewListAssociationsPager(req) + case "CommitmentPlansClient.NewListPlansByResourceGroupPager": + resp, err = c.dispatchNewListPlansByResourceGroupPager(req) + case "CommitmentPlansClient.NewListPlansBySubscriptionPager": + resp, err = c.dispatchNewListPlansBySubscriptionPager(req) + case "CommitmentPlansClient.BeginUpdatePlan": + resp, err = c.dispatchBeginUpdatePlan(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (c *CommitmentPlansServerTransport) dispatchCreateOrUpdate(req *http.Request) (*http.Response, error) { + if c.srv.CreateOrUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method CreateOrUpdate not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/commitmentPlans/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcognitiveservices.CommitmentPlan](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + commitmentPlanNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("commitmentPlanName")]) + if err != nil { + return nil, err + } + respr, errRespr := c.srv.CreateOrUpdate(req.Context(), resourceGroupNameParam, accountNameParam, commitmentPlanNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK, http.StatusCreated}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).CommitmentPlan, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *CommitmentPlansServerTransport) dispatchBeginCreateOrUpdateAssociation(req *http.Request) (*http.Response, error) { + if c.srv.BeginCreateOrUpdateAssociation == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreateOrUpdateAssociation not implemented")} + } + beginCreateOrUpdateAssociation := c.beginCreateOrUpdateAssociation.get(req) + if beginCreateOrUpdateAssociation == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/commitmentPlans/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/accountAssociations/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcognitiveservices.CommitmentPlanAccountAssociation](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + commitmentPlanNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("commitmentPlanName")]) + if err != nil { + return nil, err + } + commitmentPlanAssociationNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("commitmentPlanAssociationName")]) + if err != nil { + return nil, err + } + respr, errRespr := c.srv.BeginCreateOrUpdateAssociation(req.Context(), resourceGroupNameParam, commitmentPlanNameParam, commitmentPlanAssociationNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreateOrUpdateAssociation = &respr + c.beginCreateOrUpdateAssociation.add(req, beginCreateOrUpdateAssociation) + } + + resp, err := server.PollerResponderNext(beginCreateOrUpdateAssociation, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated}, resp.StatusCode) { + c.beginCreateOrUpdateAssociation.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreateOrUpdateAssociation) { + c.beginCreateOrUpdateAssociation.remove(req) + } + + return resp, nil +} + +func (c *CommitmentPlansServerTransport) dispatchBeginCreateOrUpdatePlan(req *http.Request) (*http.Response, error) { + if c.srv.BeginCreateOrUpdatePlan == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreateOrUpdatePlan not implemented")} + } + beginCreateOrUpdatePlan := c.beginCreateOrUpdatePlan.get(req) + if beginCreateOrUpdatePlan == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/commitmentPlans/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcognitiveservices.CommitmentPlan](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + commitmentPlanNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("commitmentPlanName")]) + if err != nil { + return nil, err + } + respr, errRespr := c.srv.BeginCreateOrUpdatePlan(req.Context(), resourceGroupNameParam, commitmentPlanNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreateOrUpdatePlan = &respr + c.beginCreateOrUpdatePlan.add(req, beginCreateOrUpdatePlan) + } + + resp, err := server.PollerResponderNext(beginCreateOrUpdatePlan, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated}, resp.StatusCode) { + c.beginCreateOrUpdatePlan.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreateOrUpdatePlan) { + c.beginCreateOrUpdatePlan.remove(req) + } + + return resp, nil +} + +func (c *CommitmentPlansServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if c.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := c.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/commitmentPlans/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + commitmentPlanNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("commitmentPlanName")]) + if err != nil { + return nil, err + } + respr, errRespr := c.srv.BeginDelete(req.Context(), resourceGroupNameParam, accountNameParam, commitmentPlanNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + c.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + c.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + c.beginDelete.remove(req) + } + + return resp, nil +} + +func (c *CommitmentPlansServerTransport) dispatchBeginDeleteAssociation(req *http.Request) (*http.Response, error) { + if c.srv.BeginDeleteAssociation == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDeleteAssociation not implemented")} + } + beginDeleteAssociation := c.beginDeleteAssociation.get(req) + if beginDeleteAssociation == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/commitmentPlans/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/accountAssociations/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + commitmentPlanNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("commitmentPlanName")]) + if err != nil { + return nil, err + } + commitmentPlanAssociationNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("commitmentPlanAssociationName")]) + if err != nil { + return nil, err + } + respr, errRespr := c.srv.BeginDeleteAssociation(req.Context(), resourceGroupNameParam, commitmentPlanNameParam, commitmentPlanAssociationNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDeleteAssociation = &respr + c.beginDeleteAssociation.add(req, beginDeleteAssociation) + } + + resp, err := server.PollerResponderNext(beginDeleteAssociation, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + c.beginDeleteAssociation.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDeleteAssociation) { + c.beginDeleteAssociation.remove(req) + } + + return resp, nil +} + +func (c *CommitmentPlansServerTransport) dispatchBeginDeletePlan(req *http.Request) (*http.Response, error) { + if c.srv.BeginDeletePlan == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDeletePlan not implemented")} + } + beginDeletePlan := c.beginDeletePlan.get(req) + if beginDeletePlan == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/commitmentPlans/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + commitmentPlanNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("commitmentPlanName")]) + if err != nil { + return nil, err + } + respr, errRespr := c.srv.BeginDeletePlan(req.Context(), resourceGroupNameParam, commitmentPlanNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDeletePlan = &respr + c.beginDeletePlan.add(req, beginDeletePlan) + } + + resp, err := server.PollerResponderNext(beginDeletePlan, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + c.beginDeletePlan.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDeletePlan) { + c.beginDeletePlan.remove(req) + } + + return resp, nil +} + +func (c *CommitmentPlansServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if c.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/commitmentPlans/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + commitmentPlanNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("commitmentPlanName")]) + if err != nil { + return nil, err + } + respr, errRespr := c.srv.Get(req.Context(), resourceGroupNameParam, accountNameParam, commitmentPlanNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).CommitmentPlan, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *CommitmentPlansServerTransport) dispatchGetAssociation(req *http.Request) (*http.Response, error) { + if c.srv.GetAssociation == nil { + return nil, &nonRetriableError{errors.New("fake for method GetAssociation not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/commitmentPlans/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/accountAssociations/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + commitmentPlanNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("commitmentPlanName")]) + if err != nil { + return nil, err + } + commitmentPlanAssociationNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("commitmentPlanAssociationName")]) + if err != nil { + return nil, err + } + respr, errRespr := c.srv.GetAssociation(req.Context(), resourceGroupNameParam, commitmentPlanNameParam, commitmentPlanAssociationNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).CommitmentPlanAccountAssociation, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *CommitmentPlansServerTransport) dispatchGetPlan(req *http.Request) (*http.Response, error) { + if c.srv.GetPlan == nil { + return nil, &nonRetriableError{errors.New("fake for method GetPlan not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/commitmentPlans/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + commitmentPlanNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("commitmentPlanName")]) + if err != nil { + return nil, err + } + respr, errRespr := c.srv.GetPlan(req.Context(), resourceGroupNameParam, commitmentPlanNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).CommitmentPlan, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *CommitmentPlansServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if c.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := c.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/commitmentPlans` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + resp := c.srv.NewListPager(resourceGroupNameParam, accountNameParam, nil) + newListPager = &resp + c.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armcognitiveservices.CommitmentPlansClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + c.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + c.newListPager.remove(req) + } + return resp, nil +} + +func (c *CommitmentPlansServerTransport) dispatchNewListAssociationsPager(req *http.Request) (*http.Response, error) { + if c.srv.NewListAssociationsPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListAssociationsPager not implemented")} + } + newListAssociationsPager := c.newListAssociationsPager.get(req) + if newListAssociationsPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/commitmentPlans/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/accountAssociations` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + commitmentPlanNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("commitmentPlanName")]) + if err != nil { + return nil, err + } + resp := c.srv.NewListAssociationsPager(resourceGroupNameParam, commitmentPlanNameParam, nil) + newListAssociationsPager = &resp + c.newListAssociationsPager.add(req, newListAssociationsPager) + server.PagerResponderInjectNextLinks(newListAssociationsPager, req, func(page *armcognitiveservices.CommitmentPlansClientListAssociationsResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListAssociationsPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + c.newListAssociationsPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListAssociationsPager) { + c.newListAssociationsPager.remove(req) + } + return resp, nil +} + +func (c *CommitmentPlansServerTransport) dispatchNewListPlansByResourceGroupPager(req *http.Request) (*http.Response, error) { + if c.srv.NewListPlansByResourceGroupPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPlansByResourceGroupPager not implemented")} + } + newListPlansByResourceGroupPager := c.newListPlansByResourceGroupPager.get(req) + if newListPlansByResourceGroupPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/commitmentPlans` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resp := c.srv.NewListPlansByResourceGroupPager(resourceGroupNameParam, nil) + newListPlansByResourceGroupPager = &resp + c.newListPlansByResourceGroupPager.add(req, newListPlansByResourceGroupPager) + server.PagerResponderInjectNextLinks(newListPlansByResourceGroupPager, req, func(page *armcognitiveservices.CommitmentPlansClientListPlansByResourceGroupResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPlansByResourceGroupPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + c.newListPlansByResourceGroupPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPlansByResourceGroupPager) { + c.newListPlansByResourceGroupPager.remove(req) + } + return resp, nil +} + +func (c *CommitmentPlansServerTransport) dispatchNewListPlansBySubscriptionPager(req *http.Request) (*http.Response, error) { + if c.srv.NewListPlansBySubscriptionPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPlansBySubscriptionPager not implemented")} + } + newListPlansBySubscriptionPager := c.newListPlansBySubscriptionPager.get(req) + if newListPlansBySubscriptionPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/commitmentPlans` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resp := c.srv.NewListPlansBySubscriptionPager(nil) + newListPlansBySubscriptionPager = &resp + c.newListPlansBySubscriptionPager.add(req, newListPlansBySubscriptionPager) + server.PagerResponderInjectNextLinks(newListPlansBySubscriptionPager, req, func(page *armcognitiveservices.CommitmentPlansClientListPlansBySubscriptionResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPlansBySubscriptionPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + c.newListPlansBySubscriptionPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPlansBySubscriptionPager) { + c.newListPlansBySubscriptionPager.remove(req) + } + return resp, nil +} + +func (c *CommitmentPlansServerTransport) dispatchBeginUpdatePlan(req *http.Request) (*http.Response, error) { + if c.srv.BeginUpdatePlan == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginUpdatePlan not implemented")} + } + beginUpdatePlan := c.beginUpdatePlan.get(req) + if beginUpdatePlan == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/commitmentPlans/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcognitiveservices.PatchResourceTagsAndSKU](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + commitmentPlanNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("commitmentPlanName")]) + if err != nil { + return nil, err + } + respr, errRespr := c.srv.BeginUpdatePlan(req.Context(), resourceGroupNameParam, commitmentPlanNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginUpdatePlan = &respr + c.beginUpdatePlan.add(req, beginUpdatePlan) + } + + resp, err := server.PollerResponderNext(beginUpdatePlan, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + c.beginUpdatePlan.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginUpdatePlan) { + c.beginUpdatePlan.remove(req) + } + + return resp, nil +} diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/commitmenttiers_server.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/commitmenttiers_server.go new file mode 100644 index 000000000000..b669c8dcfc48 --- /dev/null +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/commitmenttiers_server.go @@ -0,0 +1,108 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cognitiveservices/armcognitiveservices" + "net/http" + "net/url" + "regexp" +) + +// CommitmentTiersServer is a fake server for instances of the armcognitiveservices.CommitmentTiersClient type. +type CommitmentTiersServer struct { + // NewListPager is the fake for method CommitmentTiersClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(location string, options *armcognitiveservices.CommitmentTiersClientListOptions) (resp azfake.PagerResponder[armcognitiveservices.CommitmentTiersClientListResponse]) +} + +// NewCommitmentTiersServerTransport creates a new instance of CommitmentTiersServerTransport with the provided implementation. +// The returned CommitmentTiersServerTransport instance is connected to an instance of armcognitiveservices.CommitmentTiersClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewCommitmentTiersServerTransport(srv *CommitmentTiersServer) *CommitmentTiersServerTransport { + return &CommitmentTiersServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armcognitiveservices.CommitmentTiersClientListResponse]](), + } +} + +// CommitmentTiersServerTransport connects instances of armcognitiveservices.CommitmentTiersClient to instances of CommitmentTiersServer. +// Don't use this type directly, use NewCommitmentTiersServerTransport instead. +type CommitmentTiersServerTransport struct { + srv *CommitmentTiersServer + newListPager *tracker[azfake.PagerResponder[armcognitiveservices.CommitmentTiersClientListResponse]] +} + +// Do implements the policy.Transporter interface for CommitmentTiersServerTransport. +func (c *CommitmentTiersServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "CommitmentTiersClient.NewListPager": + resp, err = c.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (c *CommitmentTiersServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if c.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := c.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/locations/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/commitmentTiers` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + locationParam, err := url.PathUnescape(matches[regex.SubexpIndex("location")]) + if err != nil { + return nil, err + } + resp := c.srv.NewListPager(locationParam, nil) + newListPager = &resp + c.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armcognitiveservices.CommitmentTiersClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + c.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + c.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/deletedaccounts_server.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/deletedaccounts_server.go new file mode 100644 index 000000000000..8d42d1858e99 --- /dev/null +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/deletedaccounts_server.go @@ -0,0 +1,204 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cognitiveservices/armcognitiveservices" + "net/http" + "net/url" + "regexp" +) + +// DeletedAccountsServer is a fake server for instances of the armcognitiveservices.DeletedAccountsClient type. +type DeletedAccountsServer struct { + // Get is the fake for method DeletedAccountsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, location string, resourceGroupName string, accountName string, options *armcognitiveservices.DeletedAccountsClientGetOptions) (resp azfake.Responder[armcognitiveservices.DeletedAccountsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method DeletedAccountsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armcognitiveservices.DeletedAccountsClientListOptions) (resp azfake.PagerResponder[armcognitiveservices.DeletedAccountsClientListResponse]) + + // BeginPurge is the fake for method DeletedAccountsClient.BeginPurge + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginPurge func(ctx context.Context, location string, resourceGroupName string, accountName string, options *armcognitiveservices.DeletedAccountsClientBeginPurgeOptions) (resp azfake.PollerResponder[armcognitiveservices.DeletedAccountsClientPurgeResponse], errResp azfake.ErrorResponder) +} + +// NewDeletedAccountsServerTransport creates a new instance of DeletedAccountsServerTransport with the provided implementation. +// The returned DeletedAccountsServerTransport instance is connected to an instance of armcognitiveservices.DeletedAccountsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewDeletedAccountsServerTransport(srv *DeletedAccountsServer) *DeletedAccountsServerTransport { + return &DeletedAccountsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armcognitiveservices.DeletedAccountsClientListResponse]](), + beginPurge: newTracker[azfake.PollerResponder[armcognitiveservices.DeletedAccountsClientPurgeResponse]](), + } +} + +// DeletedAccountsServerTransport connects instances of armcognitiveservices.DeletedAccountsClient to instances of DeletedAccountsServer. +// Don't use this type directly, use NewDeletedAccountsServerTransport instead. +type DeletedAccountsServerTransport struct { + srv *DeletedAccountsServer + newListPager *tracker[azfake.PagerResponder[armcognitiveservices.DeletedAccountsClientListResponse]] + beginPurge *tracker[azfake.PollerResponder[armcognitiveservices.DeletedAccountsClientPurgeResponse]] +} + +// Do implements the policy.Transporter interface for DeletedAccountsServerTransport. +func (d *DeletedAccountsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "DeletedAccountsClient.Get": + resp, err = d.dispatchGet(req) + case "DeletedAccountsClient.NewListPager": + resp, err = d.dispatchNewListPager(req) + case "DeletedAccountsClient.BeginPurge": + resp, err = d.dispatchBeginPurge(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (d *DeletedAccountsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if d.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/locations/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/deletedAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + locationParam, err := url.PathUnescape(matches[regex.SubexpIndex("location")]) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + respr, errRespr := d.srv.Get(req.Context(), locationParam, resourceGroupNameParam, accountNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Account, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (d *DeletedAccountsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if d.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := d.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/deletedAccounts` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resp := d.srv.NewListPager(nil) + newListPager = &resp + d.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armcognitiveservices.DeletedAccountsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + d.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + d.newListPager.remove(req) + } + return resp, nil +} + +func (d *DeletedAccountsServerTransport) dispatchBeginPurge(req *http.Request) (*http.Response, error) { + if d.srv.BeginPurge == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginPurge not implemented")} + } + beginPurge := d.beginPurge.get(req) + if beginPurge == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/locations/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/deletedAccounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + locationParam, err := url.PathUnescape(matches[regex.SubexpIndex("location")]) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + respr, errRespr := d.srv.BeginPurge(req.Context(), locationParam, resourceGroupNameParam, accountNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginPurge = &respr + d.beginPurge.add(req, beginPurge) + } + + resp, err := server.PollerResponderNext(beginPurge, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + d.beginPurge.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginPurge) { + d.beginPurge.remove(req) + } + + return resp, nil +} diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/deployments_server.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/deployments_server.go new file mode 100644 index 000000000000..722d881e44d1 --- /dev/null +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/deployments_server.go @@ -0,0 +1,272 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cognitiveservices/armcognitiveservices" + "net/http" + "net/url" + "regexp" +) + +// DeploymentsServer is a fake server for instances of the armcognitiveservices.DeploymentsClient type. +type DeploymentsServer struct { + // BeginCreateOrUpdate is the fake for method DeploymentsClient.BeginCreateOrUpdate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + BeginCreateOrUpdate func(ctx context.Context, resourceGroupName string, accountName string, deploymentName string, deployment armcognitiveservices.Deployment, options *armcognitiveservices.DeploymentsClientBeginCreateOrUpdateOptions) (resp azfake.PollerResponder[armcognitiveservices.DeploymentsClientCreateOrUpdateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method DeploymentsClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, accountName string, deploymentName string, options *armcognitiveservices.DeploymentsClientBeginDeleteOptions) (resp azfake.PollerResponder[armcognitiveservices.DeploymentsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method DeploymentsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, accountName string, deploymentName string, options *armcognitiveservices.DeploymentsClientGetOptions) (resp azfake.Responder[armcognitiveservices.DeploymentsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method DeploymentsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(resourceGroupName string, accountName string, options *armcognitiveservices.DeploymentsClientListOptions) (resp azfake.PagerResponder[armcognitiveservices.DeploymentsClientListResponse]) +} + +// NewDeploymentsServerTransport creates a new instance of DeploymentsServerTransport with the provided implementation. +// The returned DeploymentsServerTransport instance is connected to an instance of armcognitiveservices.DeploymentsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewDeploymentsServerTransport(srv *DeploymentsServer) *DeploymentsServerTransport { + return &DeploymentsServerTransport{ + srv: srv, + beginCreateOrUpdate: newTracker[azfake.PollerResponder[armcognitiveservices.DeploymentsClientCreateOrUpdateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armcognitiveservices.DeploymentsClientDeleteResponse]](), + newListPager: newTracker[azfake.PagerResponder[armcognitiveservices.DeploymentsClientListResponse]](), + } +} + +// DeploymentsServerTransport connects instances of armcognitiveservices.DeploymentsClient to instances of DeploymentsServer. +// Don't use this type directly, use NewDeploymentsServerTransport instead. +type DeploymentsServerTransport struct { + srv *DeploymentsServer + beginCreateOrUpdate *tracker[azfake.PollerResponder[armcognitiveservices.DeploymentsClientCreateOrUpdateResponse]] + beginDelete *tracker[azfake.PollerResponder[armcognitiveservices.DeploymentsClientDeleteResponse]] + newListPager *tracker[azfake.PagerResponder[armcognitiveservices.DeploymentsClientListResponse]] +} + +// Do implements the policy.Transporter interface for DeploymentsServerTransport. +func (d *DeploymentsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "DeploymentsClient.BeginCreateOrUpdate": + resp, err = d.dispatchBeginCreateOrUpdate(req) + case "DeploymentsClient.BeginDelete": + resp, err = d.dispatchBeginDelete(req) + case "DeploymentsClient.Get": + resp, err = d.dispatchGet(req) + case "DeploymentsClient.NewListPager": + resp, err = d.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (d *DeploymentsServerTransport) dispatchBeginCreateOrUpdate(req *http.Request) (*http.Response, error) { + if d.srv.BeginCreateOrUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreateOrUpdate not implemented")} + } + beginCreateOrUpdate := d.beginCreateOrUpdate.get(req) + if beginCreateOrUpdate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/deployments/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcognitiveservices.Deployment](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + deploymentNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("deploymentName")]) + if err != nil { + return nil, err + } + respr, errRespr := d.srv.BeginCreateOrUpdate(req.Context(), resourceGroupNameParam, accountNameParam, deploymentNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreateOrUpdate = &respr + d.beginCreateOrUpdate.add(req, beginCreateOrUpdate) + } + + resp, err := server.PollerResponderNext(beginCreateOrUpdate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated}, resp.StatusCode) { + d.beginCreateOrUpdate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreateOrUpdate) { + d.beginCreateOrUpdate.remove(req) + } + + return resp, nil +} + +func (d *DeploymentsServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if d.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := d.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/deployments/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + deploymentNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("deploymentName")]) + if err != nil { + return nil, err + } + respr, errRespr := d.srv.BeginDelete(req.Context(), resourceGroupNameParam, accountNameParam, deploymentNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + d.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + d.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + d.beginDelete.remove(req) + } + + return resp, nil +} + +func (d *DeploymentsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if d.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/deployments/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + deploymentNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("deploymentName")]) + if err != nil { + return nil, err + } + respr, errRespr := d.srv.Get(req.Context(), resourceGroupNameParam, accountNameParam, deploymentNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Deployment, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (d *DeploymentsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if d.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := d.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/deployments` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + resp := d.srv.NewListPager(resourceGroupNameParam, accountNameParam, nil) + newListPager = &resp + d.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armcognitiveservices.DeploymentsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + d.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + d.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/internal.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/internal.go new file mode 100644 index 000000000000..94e060e89dbd --- /dev/null +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/internal.go @@ -0,0 +1,72 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "net/http" + "reflect" + "sync" +) + +type nonRetriableError struct { + error +} + +func (nonRetriableError) NonRetriable() { + // marker method +} + +func contains[T comparable](s []T, v T) bool { + for _, vv := range s { + if vv == v { + return true + } + } + return false +} + +func getOptional[T any](v T) *T { + if reflect.ValueOf(v).IsZero() { + return nil + } + return &v +} + +func newTracker[T any]() *tracker[T] { + return &tracker[T]{ + items: map[string]*T{}, + } +} + +type tracker[T any] struct { + items map[string]*T + mu sync.Mutex +} + +func (p *tracker[T]) get(req *http.Request) *T { + p.mu.Lock() + defer p.mu.Unlock() + if item, ok := p.items[server.SanitizePagerPollerPath(req.URL.Path)]; ok { + return item + } + return nil +} + +func (p *tracker[T]) add(req *http.Request, item *T) { + p.mu.Lock() + defer p.mu.Unlock() + p.items[server.SanitizePagerPollerPath(req.URL.Path)] = item +} + +func (p *tracker[T]) remove(req *http.Request) { + p.mu.Lock() + defer p.mu.Unlock() + delete(p.items, server.SanitizePagerPollerPath(req.URL.Path)) +} diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/management_server.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/management_server.go new file mode 100644 index 000000000000..c97a55ed21d4 --- /dev/null +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/management_server.go @@ -0,0 +1,135 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cognitiveservices/armcognitiveservices" + "net/http" + "net/url" + "regexp" +) + +// ManagementServer is a fake server for instances of the armcognitiveservices.ManagementClient type. +type ManagementServer struct { + // CheckDomainAvailability is the fake for method ManagementClient.CheckDomainAvailability + // HTTP status codes to indicate success: http.StatusOK + CheckDomainAvailability func(ctx context.Context, parameters armcognitiveservices.CheckDomainAvailabilityParameter, options *armcognitiveservices.ManagementClientCheckDomainAvailabilityOptions) (resp azfake.Responder[armcognitiveservices.ManagementClientCheckDomainAvailabilityResponse], errResp azfake.ErrorResponder) + + // CheckSKUAvailability is the fake for method ManagementClient.CheckSKUAvailability + // HTTP status codes to indicate success: http.StatusOK + CheckSKUAvailability func(ctx context.Context, location string, parameters armcognitiveservices.CheckSKUAvailabilityParameter, options *armcognitiveservices.ManagementClientCheckSKUAvailabilityOptions) (resp azfake.Responder[armcognitiveservices.ManagementClientCheckSKUAvailabilityResponse], errResp azfake.ErrorResponder) +} + +// NewManagementServerTransport creates a new instance of ManagementServerTransport with the provided implementation. +// The returned ManagementServerTransport instance is connected to an instance of armcognitiveservices.ManagementClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewManagementServerTransport(srv *ManagementServer) *ManagementServerTransport { + return &ManagementServerTransport{srv: srv} +} + +// ManagementServerTransport connects instances of armcognitiveservices.ManagementClient to instances of ManagementServer. +// Don't use this type directly, use NewManagementServerTransport instead. +type ManagementServerTransport struct { + srv *ManagementServer +} + +// Do implements the policy.Transporter interface for ManagementServerTransport. +func (m *ManagementServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "ManagementClient.CheckDomainAvailability": + resp, err = m.dispatchCheckDomainAvailability(req) + case "ManagementClient.CheckSKUAvailability": + resp, err = m.dispatchCheckSKUAvailability(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (m *ManagementServerTransport) dispatchCheckDomainAvailability(req *http.Request) (*http.Response, error) { + if m.srv.CheckDomainAvailability == nil { + return nil, &nonRetriableError{errors.New("fake for method CheckDomainAvailability not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/checkDomainAvailability` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcognitiveservices.CheckDomainAvailabilityParameter](req) + if err != nil { + return nil, err + } + respr, errRespr := m.srv.CheckDomainAvailability(req.Context(), body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).DomainAvailability, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (m *ManagementServerTransport) dispatchCheckSKUAvailability(req *http.Request) (*http.Response, error) { + if m.srv.CheckSKUAvailability == nil { + return nil, &nonRetriableError{errors.New("fake for method CheckSKUAvailability not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/locations/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/checkSkuAvailability` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcognitiveservices.CheckSKUAvailabilityParameter](req) + if err != nil { + return nil, err + } + locationParam, err := url.PathUnescape(matches[regex.SubexpIndex("location")]) + if err != nil { + return nil, err + } + respr, errRespr := m.srv.CheckSKUAvailability(req.Context(), locationParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).SKUAvailabilityListResult, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/models_server.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/models_server.go new file mode 100644 index 000000000000..055337f7b8f9 --- /dev/null +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/models_server.go @@ -0,0 +1,108 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cognitiveservices/armcognitiveservices" + "net/http" + "net/url" + "regexp" +) + +// ModelsServer is a fake server for instances of the armcognitiveservices.ModelsClient type. +type ModelsServer struct { + // NewListPager is the fake for method ModelsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(location string, options *armcognitiveservices.ModelsClientListOptions) (resp azfake.PagerResponder[armcognitiveservices.ModelsClientListResponse]) +} + +// NewModelsServerTransport creates a new instance of ModelsServerTransport with the provided implementation. +// The returned ModelsServerTransport instance is connected to an instance of armcognitiveservices.ModelsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewModelsServerTransport(srv *ModelsServer) *ModelsServerTransport { + return &ModelsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armcognitiveservices.ModelsClientListResponse]](), + } +} + +// ModelsServerTransport connects instances of armcognitiveservices.ModelsClient to instances of ModelsServer. +// Don't use this type directly, use NewModelsServerTransport instead. +type ModelsServerTransport struct { + srv *ModelsServer + newListPager *tracker[azfake.PagerResponder[armcognitiveservices.ModelsClientListResponse]] +} + +// Do implements the policy.Transporter interface for ModelsServerTransport. +func (m *ModelsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "ModelsClient.NewListPager": + resp, err = m.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (m *ModelsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if m.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := m.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/locations/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/models` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + locationParam, err := url.PathUnescape(matches[regex.SubexpIndex("location")]) + if err != nil { + return nil, err + } + resp := m.srv.NewListPager(locationParam, nil) + newListPager = &resp + m.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armcognitiveservices.ModelsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + m.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + m.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/operations_server.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/operations_server.go new file mode 100644 index 000000000000..9b08969bd99c --- /dev/null +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/operations_server.go @@ -0,0 +1,96 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cognitiveservices/armcognitiveservices" + "net/http" +) + +// OperationsServer is a fake server for instances of the armcognitiveservices.OperationsClient type. +type OperationsServer struct { + // NewListPager is the fake for method OperationsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armcognitiveservices.OperationsClientListOptions) (resp azfake.PagerResponder[armcognitiveservices.OperationsClientListResponse]) +} + +// NewOperationsServerTransport creates a new instance of OperationsServerTransport with the provided implementation. +// The returned OperationsServerTransport instance is connected to an instance of armcognitiveservices.OperationsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewOperationsServerTransport(srv *OperationsServer) *OperationsServerTransport { + return &OperationsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armcognitiveservices.OperationsClientListResponse]](), + } +} + +// OperationsServerTransport connects instances of armcognitiveservices.OperationsClient to instances of OperationsServer. +// Don't use this type directly, use NewOperationsServerTransport instead. +type OperationsServerTransport struct { + srv *OperationsServer + newListPager *tracker[azfake.PagerResponder[armcognitiveservices.OperationsClientListResponse]] +} + +// Do implements the policy.Transporter interface for OperationsServerTransport. +func (o *OperationsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "OperationsClient.NewListPager": + resp, err = o.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (o *OperationsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if o.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := o.newListPager.get(req) + if newListPager == nil { + resp := o.srv.NewListPager(nil) + newListPager = &resp + o.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armcognitiveservices.OperationsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + o.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + o.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/privateendpointconnections_server.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/privateendpointconnections_server.go new file mode 100644 index 000000000000..4c989203fa55 --- /dev/null +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/privateendpointconnections_server.go @@ -0,0 +1,261 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cognitiveservices/armcognitiveservices" + "net/http" + "net/url" + "regexp" +) + +// PrivateEndpointConnectionsServer is a fake server for instances of the armcognitiveservices.PrivateEndpointConnectionsClient type. +type PrivateEndpointConnectionsServer struct { + // BeginCreateOrUpdate is the fake for method PrivateEndpointConnectionsClient.BeginCreateOrUpdate + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginCreateOrUpdate func(ctx context.Context, resourceGroupName string, accountName string, privateEndpointConnectionName string, properties armcognitiveservices.PrivateEndpointConnection, options *armcognitiveservices.PrivateEndpointConnectionsClientBeginCreateOrUpdateOptions) (resp azfake.PollerResponder[armcognitiveservices.PrivateEndpointConnectionsClientCreateOrUpdateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method PrivateEndpointConnectionsClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, accountName string, privateEndpointConnectionName string, options *armcognitiveservices.PrivateEndpointConnectionsClientBeginDeleteOptions) (resp azfake.PollerResponder[armcognitiveservices.PrivateEndpointConnectionsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method PrivateEndpointConnectionsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, accountName string, privateEndpointConnectionName string, options *armcognitiveservices.PrivateEndpointConnectionsClientGetOptions) (resp azfake.Responder[armcognitiveservices.PrivateEndpointConnectionsClientGetResponse], errResp azfake.ErrorResponder) + + // List is the fake for method PrivateEndpointConnectionsClient.List + // HTTP status codes to indicate success: http.StatusOK + List func(ctx context.Context, resourceGroupName string, accountName string, options *armcognitiveservices.PrivateEndpointConnectionsClientListOptions) (resp azfake.Responder[armcognitiveservices.PrivateEndpointConnectionsClientListResponse], errResp azfake.ErrorResponder) +} + +// NewPrivateEndpointConnectionsServerTransport creates a new instance of PrivateEndpointConnectionsServerTransport with the provided implementation. +// The returned PrivateEndpointConnectionsServerTransport instance is connected to an instance of armcognitiveservices.PrivateEndpointConnectionsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewPrivateEndpointConnectionsServerTransport(srv *PrivateEndpointConnectionsServer) *PrivateEndpointConnectionsServerTransport { + return &PrivateEndpointConnectionsServerTransport{ + srv: srv, + beginCreateOrUpdate: newTracker[azfake.PollerResponder[armcognitiveservices.PrivateEndpointConnectionsClientCreateOrUpdateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armcognitiveservices.PrivateEndpointConnectionsClientDeleteResponse]](), + } +} + +// PrivateEndpointConnectionsServerTransport connects instances of armcognitiveservices.PrivateEndpointConnectionsClient to instances of PrivateEndpointConnectionsServer. +// Don't use this type directly, use NewPrivateEndpointConnectionsServerTransport instead. +type PrivateEndpointConnectionsServerTransport struct { + srv *PrivateEndpointConnectionsServer + beginCreateOrUpdate *tracker[azfake.PollerResponder[armcognitiveservices.PrivateEndpointConnectionsClientCreateOrUpdateResponse]] + beginDelete *tracker[azfake.PollerResponder[armcognitiveservices.PrivateEndpointConnectionsClientDeleteResponse]] +} + +// Do implements the policy.Transporter interface for PrivateEndpointConnectionsServerTransport. +func (p *PrivateEndpointConnectionsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "PrivateEndpointConnectionsClient.BeginCreateOrUpdate": + resp, err = p.dispatchBeginCreateOrUpdate(req) + case "PrivateEndpointConnectionsClient.BeginDelete": + resp, err = p.dispatchBeginDelete(req) + case "PrivateEndpointConnectionsClient.Get": + resp, err = p.dispatchGet(req) + case "PrivateEndpointConnectionsClient.List": + resp, err = p.dispatchList(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (p *PrivateEndpointConnectionsServerTransport) dispatchBeginCreateOrUpdate(req *http.Request) (*http.Response, error) { + if p.srv.BeginCreateOrUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreateOrUpdate not implemented")} + } + beginCreateOrUpdate := p.beginCreateOrUpdate.get(req) + if beginCreateOrUpdate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/privateEndpointConnections/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armcognitiveservices.PrivateEndpointConnection](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + privateEndpointConnectionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("privateEndpointConnectionName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.BeginCreateOrUpdate(req.Context(), resourceGroupNameParam, accountNameParam, privateEndpointConnectionNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreateOrUpdate = &respr + p.beginCreateOrUpdate.add(req, beginCreateOrUpdate) + } + + resp, err := server.PollerResponderNext(beginCreateOrUpdate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + p.beginCreateOrUpdate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreateOrUpdate) { + p.beginCreateOrUpdate.remove(req) + } + + return resp, nil +} + +func (p *PrivateEndpointConnectionsServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if p.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := p.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/privateEndpointConnections/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + privateEndpointConnectionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("privateEndpointConnectionName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.BeginDelete(req.Context(), resourceGroupNameParam, accountNameParam, privateEndpointConnectionNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + p.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + p.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + p.beginDelete.remove(req) + } + + return resp, nil +} + +func (p *PrivateEndpointConnectionsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if p.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/privateEndpointConnections/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + privateEndpointConnectionNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("privateEndpointConnectionName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.Get(req.Context(), resourceGroupNameParam, accountNameParam, privateEndpointConnectionNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).PrivateEndpointConnection, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (p *PrivateEndpointConnectionsServerTransport) dispatchList(req *http.Request) (*http.Response, error) { + if p.srv.List == nil { + return nil, &nonRetriableError{errors.New("fake for method List not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/privateEndpointConnections` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.List(req.Context(), resourceGroupNameParam, accountNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).PrivateEndpointConnectionListResult, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/privatelinkresources_server.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/privatelinkresources_server.go new file mode 100644 index 000000000000..c621dbaca624 --- /dev/null +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/privatelinkresources_server.go @@ -0,0 +1,100 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cognitiveservices/armcognitiveservices" + "net/http" + "net/url" + "regexp" +) + +// PrivateLinkResourcesServer is a fake server for instances of the armcognitiveservices.PrivateLinkResourcesClient type. +type PrivateLinkResourcesServer struct { + // List is the fake for method PrivateLinkResourcesClient.List + // HTTP status codes to indicate success: http.StatusOK + List func(ctx context.Context, resourceGroupName string, accountName string, options *armcognitiveservices.PrivateLinkResourcesClientListOptions) (resp azfake.Responder[armcognitiveservices.PrivateLinkResourcesClientListResponse], errResp azfake.ErrorResponder) +} + +// NewPrivateLinkResourcesServerTransport creates a new instance of PrivateLinkResourcesServerTransport with the provided implementation. +// The returned PrivateLinkResourcesServerTransport instance is connected to an instance of armcognitiveservices.PrivateLinkResourcesClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewPrivateLinkResourcesServerTransport(srv *PrivateLinkResourcesServer) *PrivateLinkResourcesServerTransport { + return &PrivateLinkResourcesServerTransport{srv: srv} +} + +// PrivateLinkResourcesServerTransport connects instances of armcognitiveservices.PrivateLinkResourcesClient to instances of PrivateLinkResourcesServer. +// Don't use this type directly, use NewPrivateLinkResourcesServerTransport instead. +type PrivateLinkResourcesServerTransport struct { + srv *PrivateLinkResourcesServer +} + +// Do implements the policy.Transporter interface for PrivateLinkResourcesServerTransport. +func (p *PrivateLinkResourcesServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "PrivateLinkResourcesClient.List": + resp, err = p.dispatchList(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (p *PrivateLinkResourcesServerTransport) dispatchList(req *http.Request) (*http.Response, error) { + if p.srv.List == nil { + return nil, &nonRetriableError{errors.New("fake for method List not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/accounts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/privateLinkResources` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + accountNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("accountName")]) + if err != nil { + return nil, err + } + respr, errRespr := p.srv.List(req.Context(), resourceGroupNameParam, accountNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).PrivateLinkResourceListResult, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/resourceskus_server.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/resourceskus_server.go new file mode 100644 index 000000000000..903b72e9a6d0 --- /dev/null +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/resourceskus_server.go @@ -0,0 +1,103 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cognitiveservices/armcognitiveservices" + "net/http" + "regexp" +) + +// ResourceSKUsServer is a fake server for instances of the armcognitiveservices.ResourceSKUsClient type. +type ResourceSKUsServer struct { + // NewListPager is the fake for method ResourceSKUsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armcognitiveservices.ResourceSKUsClientListOptions) (resp azfake.PagerResponder[armcognitiveservices.ResourceSKUsClientListResponse]) +} + +// NewResourceSKUsServerTransport creates a new instance of ResourceSKUsServerTransport with the provided implementation. +// The returned ResourceSKUsServerTransport instance is connected to an instance of armcognitiveservices.ResourceSKUsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewResourceSKUsServerTransport(srv *ResourceSKUsServer) *ResourceSKUsServerTransport { + return &ResourceSKUsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armcognitiveservices.ResourceSKUsClientListResponse]](), + } +} + +// ResourceSKUsServerTransport connects instances of armcognitiveservices.ResourceSKUsClient to instances of ResourceSKUsServer. +// Don't use this type directly, use NewResourceSKUsServerTransport instead. +type ResourceSKUsServerTransport struct { + srv *ResourceSKUsServer + newListPager *tracker[azfake.PagerResponder[armcognitiveservices.ResourceSKUsClientListResponse]] +} + +// Do implements the policy.Transporter interface for ResourceSKUsServerTransport. +func (r *ResourceSKUsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "ResourceSKUsClient.NewListPager": + resp, err = r.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (r *ResourceSKUsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if r.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := r.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/skus` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resp := r.srv.NewListPager(nil) + newListPager = &resp + r.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armcognitiveservices.ResourceSKUsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + r.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + r.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/server_factory.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/server_factory.go new file mode 100644 index 000000000000..717df3b8a10a --- /dev/null +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/server_factory.go @@ -0,0 +1,140 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "net/http" + "strings" + "sync" +) + +// ServerFactory is a fake server for instances of the armcognitiveservices.ClientFactory type. +type ServerFactory struct { + AccountsServer AccountsServer + CommitmentPlansServer CommitmentPlansServer + CommitmentTiersServer CommitmentTiersServer + DeletedAccountsServer DeletedAccountsServer + DeploymentsServer DeploymentsServer + ManagementServer ManagementServer + ModelsServer ModelsServer + OperationsServer OperationsServer + PrivateEndpointConnectionsServer PrivateEndpointConnectionsServer + PrivateLinkResourcesServer PrivateLinkResourcesServer + ResourceSKUsServer ResourceSKUsServer + UsagesServer UsagesServer +} + +// NewServerFactoryTransport creates a new instance of ServerFactoryTransport with the provided implementation. +// The returned ServerFactoryTransport instance is connected to an instance of armcognitiveservices.ClientFactory via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewServerFactoryTransport(srv *ServerFactory) *ServerFactoryTransport { + return &ServerFactoryTransport{ + srv: srv, + } +} + +// ServerFactoryTransport connects instances of armcognitiveservices.ClientFactory to instances of ServerFactory. +// Don't use this type directly, use NewServerFactoryTransport instead. +type ServerFactoryTransport struct { + srv *ServerFactory + trMu sync.Mutex + trAccountsServer *AccountsServerTransport + trCommitmentPlansServer *CommitmentPlansServerTransport + trCommitmentTiersServer *CommitmentTiersServerTransport + trDeletedAccountsServer *DeletedAccountsServerTransport + trDeploymentsServer *DeploymentsServerTransport + trManagementServer *ManagementServerTransport + trModelsServer *ModelsServerTransport + trOperationsServer *OperationsServerTransport + trPrivateEndpointConnectionsServer *PrivateEndpointConnectionsServerTransport + trPrivateLinkResourcesServer *PrivateLinkResourcesServerTransport + trResourceSKUsServer *ResourceSKUsServerTransport + trUsagesServer *UsagesServerTransport +} + +// Do implements the policy.Transporter interface for ServerFactoryTransport. +func (s *ServerFactoryTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + client := method[:strings.Index(method, ".")] + var resp *http.Response + var err error + + switch client { + case "AccountsClient": + initServer(s, &s.trAccountsServer, func() *AccountsServerTransport { return NewAccountsServerTransport(&s.srv.AccountsServer) }) + resp, err = s.trAccountsServer.Do(req) + case "CommitmentPlansClient": + initServer(s, &s.trCommitmentPlansServer, func() *CommitmentPlansServerTransport { + return NewCommitmentPlansServerTransport(&s.srv.CommitmentPlansServer) + }) + resp, err = s.trCommitmentPlansServer.Do(req) + case "CommitmentTiersClient": + initServer(s, &s.trCommitmentTiersServer, func() *CommitmentTiersServerTransport { + return NewCommitmentTiersServerTransport(&s.srv.CommitmentTiersServer) + }) + resp, err = s.trCommitmentTiersServer.Do(req) + case "DeletedAccountsClient": + initServer(s, &s.trDeletedAccountsServer, func() *DeletedAccountsServerTransport { + return NewDeletedAccountsServerTransport(&s.srv.DeletedAccountsServer) + }) + resp, err = s.trDeletedAccountsServer.Do(req) + case "DeploymentsClient": + initServer(s, &s.trDeploymentsServer, func() *DeploymentsServerTransport { return NewDeploymentsServerTransport(&s.srv.DeploymentsServer) }) + resp, err = s.trDeploymentsServer.Do(req) + case "ManagementClient": + initServer(s, &s.trManagementServer, func() *ManagementServerTransport { return NewManagementServerTransport(&s.srv.ManagementServer) }) + resp, err = s.trManagementServer.Do(req) + case "ModelsClient": + initServer(s, &s.trModelsServer, func() *ModelsServerTransport { return NewModelsServerTransport(&s.srv.ModelsServer) }) + resp, err = s.trModelsServer.Do(req) + case "OperationsClient": + initServer(s, &s.trOperationsServer, func() *OperationsServerTransport { return NewOperationsServerTransport(&s.srv.OperationsServer) }) + resp, err = s.trOperationsServer.Do(req) + case "PrivateEndpointConnectionsClient": + initServer(s, &s.trPrivateEndpointConnectionsServer, func() *PrivateEndpointConnectionsServerTransport { + return NewPrivateEndpointConnectionsServerTransport(&s.srv.PrivateEndpointConnectionsServer) + }) + resp, err = s.trPrivateEndpointConnectionsServer.Do(req) + case "PrivateLinkResourcesClient": + initServer(s, &s.trPrivateLinkResourcesServer, func() *PrivateLinkResourcesServerTransport { + return NewPrivateLinkResourcesServerTransport(&s.srv.PrivateLinkResourcesServer) + }) + resp, err = s.trPrivateLinkResourcesServer.Do(req) + case "ResourceSKUsClient": + initServer(s, &s.trResourceSKUsServer, func() *ResourceSKUsServerTransport { return NewResourceSKUsServerTransport(&s.srv.ResourceSKUsServer) }) + resp, err = s.trResourceSKUsServer.Do(req) + case "UsagesClient": + initServer(s, &s.trUsagesServer, func() *UsagesServerTransport { return NewUsagesServerTransport(&s.srv.UsagesServer) }) + resp, err = s.trUsagesServer.Do(req) + default: + err = fmt.Errorf("unhandled client %s", client) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func initServer[T any](s *ServerFactoryTransport, dst **T, src func() *T) { + s.trMu.Lock() + if *dst == nil { + *dst = src() + } + s.trMu.Unlock() +} diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/time_rfc3339.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/time_rfc3339.go new file mode 100644 index 000000000000..b0535a7b63e6 --- /dev/null +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/time_rfc3339.go @@ -0,0 +1,86 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "encoding/json" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "reflect" + "regexp" + "strings" + "time" +) + +// Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases. +var tzOffsetRegex = regexp.MustCompile(`(Z|z|\+|-)(\d+:\d+)*"*$`) + +const ( + utcDateTimeJSON = `"2006-01-02T15:04:05.999999999"` + utcDateTime = "2006-01-02T15:04:05.999999999" + dateTimeJSON = `"` + time.RFC3339Nano + `"` +) + +type dateTimeRFC3339 time.Time + +func (t dateTimeRFC3339) MarshalJSON() ([]byte, error) { + tt := time.Time(t) + return tt.MarshalJSON() +} + +func (t dateTimeRFC3339) MarshalText() ([]byte, error) { + tt := time.Time(t) + return tt.MarshalText() +} + +func (t *dateTimeRFC3339) UnmarshalJSON(data []byte) error { + layout := utcDateTimeJSON + if tzOffsetRegex.Match(data) { + layout = dateTimeJSON + } + return t.Parse(layout, string(data)) +} + +func (t *dateTimeRFC3339) UnmarshalText(data []byte) error { + layout := utcDateTime + if tzOffsetRegex.Match(data) { + layout = time.RFC3339Nano + } + return t.Parse(layout, string(data)) +} + +func (t *dateTimeRFC3339) Parse(layout, value string) error { + p, err := time.Parse(layout, strings.ToUpper(value)) + *t = dateTimeRFC3339(p) + return err +} + +func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) { + if t == nil { + return + } else if azcore.IsNullValue(t) { + m[k] = nil + return + } else if reflect.ValueOf(t).IsNil() { + return + } + m[k] = (*dateTimeRFC3339)(t) +} + +func unpopulateDateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { + if data == nil || strings.EqualFold(string(data), "null") { + return nil + } + var aux dateTimeRFC3339 + if err := json.Unmarshal(data, &aux); err != nil { + return fmt.Errorf("struct field %s: %v", fn, err) + } + *t = (*time.Time)(&aux) + return nil +} diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/usages_server.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/usages_server.go new file mode 100644 index 000000000000..c0d4af2745c6 --- /dev/null +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/fake/usages_server.go @@ -0,0 +1,120 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cognitiveservices/armcognitiveservices" + "net/http" + "net/url" + "regexp" +) + +// UsagesServer is a fake server for instances of the armcognitiveservices.UsagesClient type. +type UsagesServer struct { + // NewListPager is the fake for method UsagesClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(location string, options *armcognitiveservices.UsagesClientListOptions) (resp azfake.PagerResponder[armcognitiveservices.UsagesClientListResponse]) +} + +// NewUsagesServerTransport creates a new instance of UsagesServerTransport with the provided implementation. +// The returned UsagesServerTransport instance is connected to an instance of armcognitiveservices.UsagesClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewUsagesServerTransport(srv *UsagesServer) *UsagesServerTransport { + return &UsagesServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armcognitiveservices.UsagesClientListResponse]](), + } +} + +// UsagesServerTransport connects instances of armcognitiveservices.UsagesClient to instances of UsagesServer. +// Don't use this type directly, use NewUsagesServerTransport instead. +type UsagesServerTransport struct { + srv *UsagesServer + newListPager *tracker[azfake.PagerResponder[armcognitiveservices.UsagesClientListResponse]] +} + +// Do implements the policy.Transporter interface for UsagesServerTransport. +func (u *UsagesServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "UsagesClient.NewListPager": + resp, err = u.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (u *UsagesServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if u.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := u.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.CognitiveServices/locations/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/usages` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + locationParam, err := url.PathUnescape(matches[regex.SubexpIndex("location")]) + if err != nil { + return nil, err + } + filterUnescaped, err := url.QueryUnescape(qp.Get("$filter")) + if err != nil { + return nil, err + } + filterParam := getOptional(filterUnescaped) + var options *armcognitiveservices.UsagesClientListOptions + if filterParam != nil { + options = &armcognitiveservices.UsagesClientListOptions{ + Filter: filterParam, + } + } + resp := u.srv.NewListPager(locationParam, options) + newListPager = &resp + u.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armcognitiveservices.UsagesClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + u.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + u.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/go.mod b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/go.mod index 2dca3544cf48..a4b3b9b2ff55 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/go.mod +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/go.mod @@ -3,19 +3,19 @@ module github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/cognitiveservices/a go 1.18 require ( - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0 - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 ) require ( - github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 // indirect - github.com/golang-jwt/jwt/v4 v4.5.0 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect + github.com/golang-jwt/jwt/v5 v5.0.0 // indirect + github.com/google/uuid v1.3.1 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect - golang.org/x/crypto v0.7.0 // indirect - golang.org/x/net v0.8.0 // indirect - golang.org/x/sys v0.6.0 // indirect - golang.org/x/text v0.8.0 // indirect + golang.org/x/crypto v0.14.0 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect ) diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/go.sum b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/go.sum index 21718b486698..7985f1da436f 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/go.sum +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/go.sum @@ -1,31 +1,31 @@ -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0 h1:8kDqDngH+DmVBiCtIjCFTGa7MBnsIOkF9IccInFEbjk= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.6.0/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0 h1:vcYCAze6p19qBW7MhZybIsqD8sMV8js0NyQM8JDnVtg= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.0/go.mod h1:OQeznEEkTZ9OrhHJoDD8ZDq51FHgXjqtP9z6bEwBq9U= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 h1:sXr+ck84g/ZlZUOZiNELInmMgOsuGwdjjVkEIde0OtY= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= -github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0 h1:OBhqkivkhkMqLPymWEppkm7vgPQY2XsHoEkaMQ0AdZY= -github.com/AzureAD/microsoft-authentication-library-for-go v1.0.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 h1:fb8kj/Dh4CSwgsOzHeZY4Xh68cFVbzXx+ONXGMY//4w= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0/go.mod h1:uReU2sSxZExRPBAg3qKzmAucSi51+SP1OhohieR821Q= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 h1:BMAjVKJM0U/CYF27gA0ZMmXGkOcvfFtD0oHVZ1TIPRI= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0/go.mod h1:1fXstnBMas5kzG+S3q8UoJcmyU6nUeunJcMDHcRYHhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 h1:d81/ng9rET2YqdVkVwkb6EXeRrLJIwyGnJcAlAWKwhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0/go.mod h1:s4kgfzA0covAXNicZHDMN58jExvcng2mC/DepXiF1EI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 h1:WpB/QDNLpMw72xHJc34BNNykqSOeEJDAWkhf0u12/Jk= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= -github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= -github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= +github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -golang.org/x/crypto v0.7.0 h1:AvwMYaRytfdeVt3u6mLaxYtErKYjxA2OXjJ1HHq6t3A= -golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= -golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= -golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/management_client.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/management_client.go index ad71b8889c3f..fb576233d2cc 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/management_client.go +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/management_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcognitiveservices @@ -33,7 +32,7 @@ type ManagementClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewManagementClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*ManagementClient, error) { - cl, err := arm.NewClient(moduleName+".ManagementClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -52,18 +51,25 @@ func NewManagementClient(subscriptionID string, credential azcore.TokenCredentia // - options - ManagementClientCheckDomainAvailabilityOptions contains the optional parameters for the ManagementClient.CheckDomainAvailability // method. func (client *ManagementClient) CheckDomainAvailability(ctx context.Context, parameters CheckDomainAvailabilityParameter, options *ManagementClientCheckDomainAvailabilityOptions) (ManagementClientCheckDomainAvailabilityResponse, error) { + var err error + const operationName = "ManagementClient.CheckDomainAvailability" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.checkDomainAvailabilityCreateRequest(ctx, parameters, options) if err != nil { return ManagementClientCheckDomainAvailabilityResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return ManagementClientCheckDomainAvailabilityResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ManagementClientCheckDomainAvailabilityResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return ManagementClientCheckDomainAvailabilityResponse{}, err } - return client.checkDomainAvailabilityHandleResponse(resp) + resp, err := client.checkDomainAvailabilityHandleResponse(httpResp) + return resp, err } // checkDomainAvailabilityCreateRequest creates the CheckDomainAvailability request. @@ -81,7 +87,10 @@ func (client *ManagementClient) checkDomainAvailabilityCreateRequest(ctx context reqQP.Set("api-version", "2023-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // checkDomainAvailabilityHandleResponse handles the CheckDomainAvailability response. @@ -102,18 +111,25 @@ func (client *ManagementClient) checkDomainAvailabilityHandleResponse(resp *http // - options - ManagementClientCheckSKUAvailabilityOptions contains the optional parameters for the ManagementClient.CheckSKUAvailability // method. func (client *ManagementClient) CheckSKUAvailability(ctx context.Context, location string, parameters CheckSKUAvailabilityParameter, options *ManagementClientCheckSKUAvailabilityOptions) (ManagementClientCheckSKUAvailabilityResponse, error) { + var err error + const operationName = "ManagementClient.CheckSKUAvailability" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.checkSKUAvailabilityCreateRequest(ctx, location, parameters, options) if err != nil { return ManagementClientCheckSKUAvailabilityResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return ManagementClientCheckSKUAvailabilityResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ManagementClientCheckSKUAvailabilityResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return ManagementClientCheckSKUAvailabilityResponse{}, err } - return client.checkSKUAvailabilityHandleResponse(resp) + resp, err := client.checkSKUAvailabilityHandleResponse(httpResp) + return resp, err } // checkSKUAvailabilityCreateRequest creates the CheckSKUAvailability request. @@ -135,7 +151,10 @@ func (client *ManagementClient) checkSKUAvailabilityCreateRequest(ctx context.Co reqQP.Set("api-version", "2023-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, parameters) + if err := runtime.MarshalAsJSON(req, parameters); err != nil { + return nil, err + } + return req, nil } // checkSKUAvailabilityHandleResponse handles the CheckSKUAvailability response. diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/models.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/models.go index 339e26625bf4..813eec5fefc9 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/models.go +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/models.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcognitiveservices @@ -265,67 +264,6 @@ type AccountSKUListResult struct { Value []*AccountSKU } -// AccountsClientBeginCreateOptions contains the optional parameters for the AccountsClient.BeginCreate method. -type AccountsClientBeginCreateOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// AccountsClientBeginDeleteOptions contains the optional parameters for the AccountsClient.BeginDelete method. -type AccountsClientBeginDeleteOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// AccountsClientBeginUpdateOptions contains the optional parameters for the AccountsClient.BeginUpdate method. -type AccountsClientBeginUpdateOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// AccountsClientGetOptions contains the optional parameters for the AccountsClient.Get method. -type AccountsClientGetOptions struct { - // placeholder for future optional parameters -} - -// AccountsClientListByResourceGroupOptions contains the optional parameters for the AccountsClient.NewListByResourceGroupPager -// method. -type AccountsClientListByResourceGroupOptions struct { - // placeholder for future optional parameters -} - -// AccountsClientListKeysOptions contains the optional parameters for the AccountsClient.ListKeys method. -type AccountsClientListKeysOptions struct { - // placeholder for future optional parameters -} - -// AccountsClientListModelsOptions contains the optional parameters for the AccountsClient.NewListModelsPager method. -type AccountsClientListModelsOptions struct { - // placeholder for future optional parameters -} - -// AccountsClientListOptions contains the optional parameters for the AccountsClient.NewListPager method. -type AccountsClientListOptions struct { - // placeholder for future optional parameters -} - -// AccountsClientListSKUsOptions contains the optional parameters for the AccountsClient.ListSKUs method. -type AccountsClientListSKUsOptions struct { - // placeholder for future optional parameters -} - -// AccountsClientListUsagesOptions contains the optional parameters for the AccountsClient.ListUsages method. -type AccountsClientListUsagesOptions struct { - // An OData filter expression that describes a subset of usages to return. The supported parameter is name.value (name of - // the metric, can have an or of multiple names). - Filter *string -} - -// AccountsClientRegenerateKeyOptions contains the optional parameters for the AccountsClient.RegenerateKey method. -type AccountsClientRegenerateKeyOptions struct { - // placeholder for future optional parameters -} - // AzureEntityResource - The resource model definition for an Azure Resource Manager resource with an etag. type AzureEntityResource struct { // READ-ONLY; Resource Etag. @@ -535,92 +473,6 @@ type CommitmentPlanProperties struct { ProvisioningState *CommitmentPlanProvisioningState } -// CommitmentPlansClientBeginCreateOrUpdateAssociationOptions contains the optional parameters for the CommitmentPlansClient.BeginCreateOrUpdateAssociation -// method. -type CommitmentPlansClientBeginCreateOrUpdateAssociationOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// CommitmentPlansClientBeginCreateOrUpdatePlanOptions contains the optional parameters for the CommitmentPlansClient.BeginCreateOrUpdatePlan -// method. -type CommitmentPlansClientBeginCreateOrUpdatePlanOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// CommitmentPlansClientBeginDeleteAssociationOptions contains the optional parameters for the CommitmentPlansClient.BeginDeleteAssociation -// method. -type CommitmentPlansClientBeginDeleteAssociationOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// CommitmentPlansClientBeginDeleteOptions contains the optional parameters for the CommitmentPlansClient.BeginDelete method. -type CommitmentPlansClientBeginDeleteOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// CommitmentPlansClientBeginDeletePlanOptions contains the optional parameters for the CommitmentPlansClient.BeginDeletePlan -// method. -type CommitmentPlansClientBeginDeletePlanOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// CommitmentPlansClientBeginUpdatePlanOptions contains the optional parameters for the CommitmentPlansClient.BeginUpdatePlan -// method. -type CommitmentPlansClientBeginUpdatePlanOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// CommitmentPlansClientCreateOrUpdateOptions contains the optional parameters for the CommitmentPlansClient.CreateOrUpdate -// method. -type CommitmentPlansClientCreateOrUpdateOptions struct { - // placeholder for future optional parameters -} - -// CommitmentPlansClientGetAssociationOptions contains the optional parameters for the CommitmentPlansClient.GetAssociation -// method. -type CommitmentPlansClientGetAssociationOptions struct { - // placeholder for future optional parameters -} - -// CommitmentPlansClientGetOptions contains the optional parameters for the CommitmentPlansClient.Get method. -type CommitmentPlansClientGetOptions struct { - // placeholder for future optional parameters -} - -// CommitmentPlansClientGetPlanOptions contains the optional parameters for the CommitmentPlansClient.GetPlan method. -type CommitmentPlansClientGetPlanOptions struct { - // placeholder for future optional parameters -} - -// CommitmentPlansClientListAssociationsOptions contains the optional parameters for the CommitmentPlansClient.NewListAssociationsPager -// method. -type CommitmentPlansClientListAssociationsOptions struct { - // placeholder for future optional parameters -} - -// CommitmentPlansClientListOptions contains the optional parameters for the CommitmentPlansClient.NewListPager method. -type CommitmentPlansClientListOptions struct { - // placeholder for future optional parameters -} - -// CommitmentPlansClientListPlansByResourceGroupOptions contains the optional parameters for the CommitmentPlansClient.NewListPlansByResourceGroupPager -// method. -type CommitmentPlansClientListPlansByResourceGroupOptions struct { - // placeholder for future optional parameters -} - -// CommitmentPlansClientListPlansBySubscriptionOptions contains the optional parameters for the CommitmentPlansClient.NewListPlansBySubscriptionPager -// method. -type CommitmentPlansClientListPlansBySubscriptionOptions struct { - // placeholder for future optional parameters -} - // CommitmentQuota - Cognitive Services account commitment quota. type CommitmentQuota struct { // Commitment quota quantity. @@ -666,27 +518,6 @@ type CommitmentTierListResult struct { Value []*CommitmentTier } -// CommitmentTiersClientListOptions contains the optional parameters for the CommitmentTiersClient.NewListPager method. -type CommitmentTiersClientListOptions struct { - // placeholder for future optional parameters -} - -// DeletedAccountsClientBeginPurgeOptions contains the optional parameters for the DeletedAccountsClient.BeginPurge method. -type DeletedAccountsClientBeginPurgeOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// DeletedAccountsClientGetOptions contains the optional parameters for the DeletedAccountsClient.Get method. -type DeletedAccountsClientGetOptions struct { - // placeholder for future optional parameters -} - -// DeletedAccountsClientListOptions contains the optional parameters for the DeletedAccountsClient.NewListPager method. -type DeletedAccountsClientListOptions struct { - // placeholder for future optional parameters -} - // Deployment - Cognitive Services account deployment. type Deployment struct { // Properties of Cognitive Services account deployment. @@ -779,29 +610,6 @@ type DeploymentScaleSettings struct { ActiveCapacity *int32 } -// DeploymentsClientBeginCreateOrUpdateOptions contains the optional parameters for the DeploymentsClient.BeginCreateOrUpdate -// method. -type DeploymentsClientBeginCreateOrUpdateOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// DeploymentsClientBeginDeleteOptions contains the optional parameters for the DeploymentsClient.BeginDelete method. -type DeploymentsClientBeginDeleteOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// DeploymentsClientGetOptions contains the optional parameters for the DeploymentsClient.Get method. -type DeploymentsClientGetOptions struct { - // placeholder for future optional parameters -} - -// DeploymentsClientListOptions contains the optional parameters for the DeploymentsClient.NewListPager method. -type DeploymentsClientListOptions struct { - // placeholder for future optional parameters -} - // DomainAvailability - Domain availability. type DomainAvailability struct { // Indicates the given SKU is available or not. @@ -901,18 +709,6 @@ type KeyVaultProperties struct { KeyVersion *string } -// ManagementClientCheckDomainAvailabilityOptions contains the optional parameters for the ManagementClient.CheckDomainAvailability -// method. -type ManagementClientCheckDomainAvailabilityOptions struct { - // placeholder for future optional parameters -} - -// ManagementClientCheckSKUAvailabilityOptions contains the optional parameters for the ManagementClient.CheckSKUAvailability -// method. -type ManagementClientCheckSKUAvailabilityOptions struct { - // placeholder for future optional parameters -} - // MetricName - A metric name. type MetricName struct { // The friendly name of the metric. @@ -970,11 +766,6 @@ type ModelSKU struct { UsageName *string } -// ModelsClientListOptions contains the optional parameters for the ModelsClient.NewListPager method. -type ModelsClientListOptions struct { - // placeholder for future optional parameters -} - // MultiRegionSettings - The multiregion settings Cognitive Services account. type MultiRegionSettings struct { Regions []*RegionSetting @@ -1045,11 +836,6 @@ type OperationListResult struct { Value []*Operation } -// OperationsClientListOptions contains the optional parameters for the OperationsClient.NewListPager method. -type OperationsClientListOptions struct { - // placeholder for future optional parameters -} - // PatchResourceTags - The object being used to update tags of a resource, in general used for PATCH operations. type PatchResourceTags struct { // Resource tags. @@ -1116,32 +902,6 @@ type PrivateEndpointConnectionProperties struct { ProvisioningState *PrivateEndpointConnectionProvisioningState } -// PrivateEndpointConnectionsClientBeginCreateOrUpdateOptions contains the optional parameters for the PrivateEndpointConnectionsClient.BeginCreateOrUpdate -// method. -type PrivateEndpointConnectionsClientBeginCreateOrUpdateOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// PrivateEndpointConnectionsClientBeginDeleteOptions contains the optional parameters for the PrivateEndpointConnectionsClient.BeginDelete -// method. -type PrivateEndpointConnectionsClientBeginDeleteOptions struct { - // Resumes the LRO from the provided token. - ResumeToken string -} - -// PrivateEndpointConnectionsClientGetOptions contains the optional parameters for the PrivateEndpointConnectionsClient.Get -// method. -type PrivateEndpointConnectionsClientGetOptions struct { - // placeholder for future optional parameters -} - -// PrivateEndpointConnectionsClientListOptions contains the optional parameters for the PrivateEndpointConnectionsClient.List -// method. -type PrivateEndpointConnectionsClientListOptions struct { - // placeholder for future optional parameters -} - // PrivateLinkResource - A private link resource type PrivateLinkResource struct { // Resource properties. @@ -1178,11 +938,6 @@ type PrivateLinkResourceProperties struct { RequiredMembers []*string } -// PrivateLinkResourcesClientListOptions contains the optional parameters for the PrivateLinkResourcesClient.List method. -type PrivateLinkResourcesClientListOptions struct { - // placeholder for future optional parameters -} - // PrivateLinkServiceConnectionState - A collection of information about the state of the connection between service consumer // and provider. type PrivateLinkServiceConnectionState struct { @@ -1304,11 +1059,6 @@ type ResourceSKURestrictions struct { Values []*string } -// ResourceSKUsClientListOptions contains the optional parameters for the ResourceSKUsClient.NewListPager method. -type ResourceSKUsClientListOptions struct { - // placeholder for future optional parameters -} - // SKU - The resource model definition representing SKU type SKU struct { // REQUIRED; The name of the SKU. Ex - P3. It is typically a letter+number code @@ -1440,13 +1190,6 @@ type UsageListResult struct { Value []*Usage } -// UsagesClientListOptions contains the optional parameters for the UsagesClient.NewListPager method. -type UsagesClientListOptions struct { - // An OData filter expression that describes a subset of usages to return. The supported parameter is name.value (name of - // the metric, can have an or of multiple names). - Filter *string -} - // UserAssignedIdentity - User-assigned managed identity. type UserAssignedIdentity struct { // READ-ONLY; Client App Id associated with this identity. diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/models_client.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/models_client.go index 8c4744377039..820c1ced060a 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/models_client.go +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/models_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcognitiveservices @@ -33,7 +32,7 @@ type ModelsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewModelsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*ModelsClient, error) { - cl, err := arm.NewClient(moduleName+".ModelsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -55,25 +54,20 @@ func (client *ModelsClient) NewListPager(location string, options *ModelsClientL return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ModelsClientListResponse) (ModelsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, location, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ModelsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, location, options) + }, nil) if err != nil { return ModelsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return ModelsClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ModelsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/models_client_example_test.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/models_client_example_test.go index c055fce95e7a..810a5733545d 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/models_client_example_test.go +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/models_client_example_test.go @@ -81,9 +81,9 @@ func ExampleModelsClient_NewListPager() { // UsageName: to.Ptr("OpenAI.Provisioned.Class1"), // }}, // SystemData: &armcognitiveservices.SystemData{ - // CreatedAt: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2021-10-07T00:00:00Z"); return t}()), + // CreatedAt: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2021-10-07T00:00:00.000Z"); return t}()), // CreatedBy: to.Ptr("Microsoft"), - // LastModifiedAt: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2021-10-07T00:00:00Z"); return t}()), + // LastModifiedAt: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2021-10-07T00:00:00.000Z"); return t}()), // LastModifiedBy: to.Ptr("Microsoft"), // }, // }, diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/models_serde.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/models_serde.go index 81f1baeea28c..91ad242e7e20 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/models_serde.go +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/models_serde.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcognitiveservices @@ -129,7 +128,7 @@ func (a *APIProperties) UnmarshalJSON(data []byte) error { func (a AbusePenalty) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "action", a.Action) - populateTimeRFC3339(objectMap, "expiration", a.Expiration) + populateDateTimeRFC3339(objectMap, "expiration", a.Expiration) populate(objectMap, "rateLimitPercentage", a.RateLimitPercentage) return json.Marshal(objectMap) } @@ -147,7 +146,7 @@ func (a *AbusePenalty) UnmarshalJSON(data []byte) error { err = unpopulate(val, "Action", &a.Action) delete(rawMsg, key) case "expiration": - err = unpopulateTimeRFC3339(val, "Expiration", &a.Expiration) + err = unpopulateDateTimeRFC3339(val, "Expiration", &a.Expiration) delete(rawMsg, key) case "rateLimitPercentage": err = unpopulate(val, "RateLimitPercentage", &a.RateLimitPercentage) @@ -1851,7 +1850,7 @@ func (m *ModelListResult) UnmarshalJSON(data []byte) error { func (m ModelSKU) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "capacity", m.Capacity) - populateTimeRFC3339(objectMap, "deprecationDate", m.DeprecationDate) + populateDateTimeRFC3339(objectMap, "deprecationDate", m.DeprecationDate) populate(objectMap, "name", m.Name) populate(objectMap, "rateLimits", m.RateLimits) populate(objectMap, "usageName", m.UsageName) @@ -1871,7 +1870,7 @@ func (m *ModelSKU) UnmarshalJSON(data []byte) error { err = unpopulate(val, "Capacity", &m.Capacity) delete(rawMsg, key) case "deprecationDate": - err = unpopulateTimeRFC3339(val, "DeprecationDate", &m.DeprecationDate) + err = unpopulateDateTimeRFC3339(val, "DeprecationDate", &m.DeprecationDate) delete(rawMsg, key) case "name": err = unpopulate(val, "Name", &m.Name) @@ -2943,10 +2942,10 @@ func (s *SKUChangeInfo) UnmarshalJSON(data []byte) error { // MarshalJSON implements the json.Marshaller interface for type SystemData. func (s SystemData) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populateTimeRFC3339(objectMap, "createdAt", s.CreatedAt) + populateDateTimeRFC3339(objectMap, "createdAt", s.CreatedAt) populate(objectMap, "createdBy", s.CreatedBy) populate(objectMap, "createdByType", s.CreatedByType) - populateTimeRFC3339(objectMap, "lastModifiedAt", s.LastModifiedAt) + populateDateTimeRFC3339(objectMap, "lastModifiedAt", s.LastModifiedAt) populate(objectMap, "lastModifiedBy", s.LastModifiedBy) populate(objectMap, "lastModifiedByType", s.LastModifiedByType) return json.Marshal(objectMap) @@ -2962,7 +2961,7 @@ func (s *SystemData) UnmarshalJSON(data []byte) error { var err error switch key { case "createdAt": - err = unpopulateTimeRFC3339(val, "CreatedAt", &s.CreatedAt) + err = unpopulateDateTimeRFC3339(val, "CreatedAt", &s.CreatedAt) delete(rawMsg, key) case "createdBy": err = unpopulate(val, "CreatedBy", &s.CreatedBy) @@ -2971,7 +2970,7 @@ func (s *SystemData) UnmarshalJSON(data []byte) error { err = unpopulate(val, "CreatedByType", &s.CreatedByType) delete(rawMsg, key) case "lastModifiedAt": - err = unpopulateTimeRFC3339(val, "LastModifiedAt", &s.LastModifiedAt) + err = unpopulateDateTimeRFC3339(val, "LastModifiedAt", &s.LastModifiedAt) delete(rawMsg, key) case "lastModifiedBy": err = unpopulate(val, "LastModifiedBy", &s.LastModifiedBy) diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/operations_client.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/operations_client.go index 45a7d42ba4ab..c20be400284e 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/operations_client.go +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/operations_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcognitiveservices @@ -28,7 +27,7 @@ type OperationsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewOperationsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*OperationsClient, error) { - cl, err := arm.NewClient(moduleName+".OperationsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -48,25 +47,20 @@ func (client *OperationsClient) NewListPager(options *OperationsClientListOption return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *OperationsClientListResponse) (OperationsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "OperationsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return OperationsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return OperationsClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return OperationsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/options.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/options.go new file mode 100644 index 000000000000..c76660ebc044 --- /dev/null +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/options.go @@ -0,0 +1,265 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package armcognitiveservices + +// AccountsClientBeginCreateOptions contains the optional parameters for the AccountsClient.BeginCreate method. +type AccountsClientBeginCreateOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// AccountsClientBeginDeleteOptions contains the optional parameters for the AccountsClient.BeginDelete method. +type AccountsClientBeginDeleteOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// AccountsClientBeginUpdateOptions contains the optional parameters for the AccountsClient.BeginUpdate method. +type AccountsClientBeginUpdateOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// AccountsClientGetOptions contains the optional parameters for the AccountsClient.Get method. +type AccountsClientGetOptions struct { + // placeholder for future optional parameters +} + +// AccountsClientListByResourceGroupOptions contains the optional parameters for the AccountsClient.NewListByResourceGroupPager +// method. +type AccountsClientListByResourceGroupOptions struct { + // placeholder for future optional parameters +} + +// AccountsClientListKeysOptions contains the optional parameters for the AccountsClient.ListKeys method. +type AccountsClientListKeysOptions struct { + // placeholder for future optional parameters +} + +// AccountsClientListModelsOptions contains the optional parameters for the AccountsClient.NewListModelsPager method. +type AccountsClientListModelsOptions struct { + // placeholder for future optional parameters +} + +// AccountsClientListOptions contains the optional parameters for the AccountsClient.NewListPager method. +type AccountsClientListOptions struct { + // placeholder for future optional parameters +} + +// AccountsClientListSKUsOptions contains the optional parameters for the AccountsClient.ListSKUs method. +type AccountsClientListSKUsOptions struct { + // placeholder for future optional parameters +} + +// AccountsClientListUsagesOptions contains the optional parameters for the AccountsClient.ListUsages method. +type AccountsClientListUsagesOptions struct { + // An OData filter expression that describes a subset of usages to return. The supported parameter is name.value (name of + // the metric, can have an or of multiple names). + Filter *string +} + +// AccountsClientRegenerateKeyOptions contains the optional parameters for the AccountsClient.RegenerateKey method. +type AccountsClientRegenerateKeyOptions struct { + // placeholder for future optional parameters +} + +// CommitmentPlansClientBeginCreateOrUpdateAssociationOptions contains the optional parameters for the CommitmentPlansClient.BeginCreateOrUpdateAssociation +// method. +type CommitmentPlansClientBeginCreateOrUpdateAssociationOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// CommitmentPlansClientBeginCreateOrUpdatePlanOptions contains the optional parameters for the CommitmentPlansClient.BeginCreateOrUpdatePlan +// method. +type CommitmentPlansClientBeginCreateOrUpdatePlanOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// CommitmentPlansClientBeginDeleteAssociationOptions contains the optional parameters for the CommitmentPlansClient.BeginDeleteAssociation +// method. +type CommitmentPlansClientBeginDeleteAssociationOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// CommitmentPlansClientBeginDeleteOptions contains the optional parameters for the CommitmentPlansClient.BeginDelete method. +type CommitmentPlansClientBeginDeleteOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// CommitmentPlansClientBeginDeletePlanOptions contains the optional parameters for the CommitmentPlansClient.BeginDeletePlan +// method. +type CommitmentPlansClientBeginDeletePlanOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// CommitmentPlansClientBeginUpdatePlanOptions contains the optional parameters for the CommitmentPlansClient.BeginUpdatePlan +// method. +type CommitmentPlansClientBeginUpdatePlanOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// CommitmentPlansClientCreateOrUpdateOptions contains the optional parameters for the CommitmentPlansClient.CreateOrUpdate +// method. +type CommitmentPlansClientCreateOrUpdateOptions struct { + // placeholder for future optional parameters +} + +// CommitmentPlansClientGetAssociationOptions contains the optional parameters for the CommitmentPlansClient.GetAssociation +// method. +type CommitmentPlansClientGetAssociationOptions struct { + // placeholder for future optional parameters +} + +// CommitmentPlansClientGetOptions contains the optional parameters for the CommitmentPlansClient.Get method. +type CommitmentPlansClientGetOptions struct { + // placeholder for future optional parameters +} + +// CommitmentPlansClientGetPlanOptions contains the optional parameters for the CommitmentPlansClient.GetPlan method. +type CommitmentPlansClientGetPlanOptions struct { + // placeholder for future optional parameters +} + +// CommitmentPlansClientListAssociationsOptions contains the optional parameters for the CommitmentPlansClient.NewListAssociationsPager +// method. +type CommitmentPlansClientListAssociationsOptions struct { + // placeholder for future optional parameters +} + +// CommitmentPlansClientListOptions contains the optional parameters for the CommitmentPlansClient.NewListPager method. +type CommitmentPlansClientListOptions struct { + // placeholder for future optional parameters +} + +// CommitmentPlansClientListPlansByResourceGroupOptions contains the optional parameters for the CommitmentPlansClient.NewListPlansByResourceGroupPager +// method. +type CommitmentPlansClientListPlansByResourceGroupOptions struct { + // placeholder for future optional parameters +} + +// CommitmentPlansClientListPlansBySubscriptionOptions contains the optional parameters for the CommitmentPlansClient.NewListPlansBySubscriptionPager +// method. +type CommitmentPlansClientListPlansBySubscriptionOptions struct { + // placeholder for future optional parameters +} + +// CommitmentTiersClientListOptions contains the optional parameters for the CommitmentTiersClient.NewListPager method. +type CommitmentTiersClientListOptions struct { + // placeholder for future optional parameters +} + +// DeletedAccountsClientBeginPurgeOptions contains the optional parameters for the DeletedAccountsClient.BeginPurge method. +type DeletedAccountsClientBeginPurgeOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// DeletedAccountsClientGetOptions contains the optional parameters for the DeletedAccountsClient.Get method. +type DeletedAccountsClientGetOptions struct { + // placeholder for future optional parameters +} + +// DeletedAccountsClientListOptions contains the optional parameters for the DeletedAccountsClient.NewListPager method. +type DeletedAccountsClientListOptions struct { + // placeholder for future optional parameters +} + +// DeploymentsClientBeginCreateOrUpdateOptions contains the optional parameters for the DeploymentsClient.BeginCreateOrUpdate +// method. +type DeploymentsClientBeginCreateOrUpdateOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// DeploymentsClientBeginDeleteOptions contains the optional parameters for the DeploymentsClient.BeginDelete method. +type DeploymentsClientBeginDeleteOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// DeploymentsClientGetOptions contains the optional parameters for the DeploymentsClient.Get method. +type DeploymentsClientGetOptions struct { + // placeholder for future optional parameters +} + +// DeploymentsClientListOptions contains the optional parameters for the DeploymentsClient.NewListPager method. +type DeploymentsClientListOptions struct { + // placeholder for future optional parameters +} + +// ManagementClientCheckDomainAvailabilityOptions contains the optional parameters for the ManagementClient.CheckDomainAvailability +// method. +type ManagementClientCheckDomainAvailabilityOptions struct { + // placeholder for future optional parameters +} + +// ManagementClientCheckSKUAvailabilityOptions contains the optional parameters for the ManagementClient.CheckSKUAvailability +// method. +type ManagementClientCheckSKUAvailabilityOptions struct { + // placeholder for future optional parameters +} + +// ModelsClientListOptions contains the optional parameters for the ModelsClient.NewListPager method. +type ModelsClientListOptions struct { + // placeholder for future optional parameters +} + +// OperationsClientListOptions contains the optional parameters for the OperationsClient.NewListPager method. +type OperationsClientListOptions struct { + // placeholder for future optional parameters +} + +// PrivateEndpointConnectionsClientBeginCreateOrUpdateOptions contains the optional parameters for the PrivateEndpointConnectionsClient.BeginCreateOrUpdate +// method. +type PrivateEndpointConnectionsClientBeginCreateOrUpdateOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// PrivateEndpointConnectionsClientBeginDeleteOptions contains the optional parameters for the PrivateEndpointConnectionsClient.BeginDelete +// method. +type PrivateEndpointConnectionsClientBeginDeleteOptions struct { + // Resumes the LRO from the provided token. + ResumeToken string +} + +// PrivateEndpointConnectionsClientGetOptions contains the optional parameters for the PrivateEndpointConnectionsClient.Get +// method. +type PrivateEndpointConnectionsClientGetOptions struct { + // placeholder for future optional parameters +} + +// PrivateEndpointConnectionsClientListOptions contains the optional parameters for the PrivateEndpointConnectionsClient.List +// method. +type PrivateEndpointConnectionsClientListOptions struct { + // placeholder for future optional parameters +} + +// PrivateLinkResourcesClientListOptions contains the optional parameters for the PrivateLinkResourcesClient.List method. +type PrivateLinkResourcesClientListOptions struct { + // placeholder for future optional parameters +} + +// ResourceSKUsClientListOptions contains the optional parameters for the ResourceSKUsClient.NewListPager method. +type ResourceSKUsClientListOptions struct { + // placeholder for future optional parameters +} + +// UsagesClientListOptions contains the optional parameters for the UsagesClient.NewListPager method. +type UsagesClientListOptions struct { + // An OData filter expression that describes a subset of usages to return. The supported parameter is name.value (name of + // the metric, can have an or of multiple names). + Filter *string +} diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/privateendpointconnections_client.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/privateendpointconnections_client.go index 02a98e136aca..8e4b997298b9 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/privateendpointconnections_client.go +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/privateendpointconnections_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcognitiveservices @@ -33,7 +32,7 @@ type PrivateEndpointConnectionsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewPrivateEndpointConnectionsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*PrivateEndpointConnectionsClient, error) { - cl, err := arm.NewClient(moduleName+".PrivateEndpointConnectionsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -61,9 +60,14 @@ func (client *PrivateEndpointConnectionsClient) BeginCreateOrUpdate(ctx context. if err != nil { return nil, err } - return runtime.NewPoller[PrivateEndpointConnectionsClientCreateOrUpdateResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[PrivateEndpointConnectionsClientCreateOrUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[PrivateEndpointConnectionsClientCreateOrUpdateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[PrivateEndpointConnectionsClientCreateOrUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -72,18 +76,24 @@ func (client *PrivateEndpointConnectionsClient) BeginCreateOrUpdate(ctx context. // // Generated from API version 2023-05-01 func (client *PrivateEndpointConnectionsClient) createOrUpdate(ctx context.Context, resourceGroupName string, accountName string, privateEndpointConnectionName string, properties PrivateEndpointConnection, options *PrivateEndpointConnectionsClientBeginCreateOrUpdateOptions) (*http.Response, error) { + var err error + const operationName = "PrivateEndpointConnectionsClient.BeginCreateOrUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createOrUpdateCreateRequest(ctx, resourceGroupName, accountName, privateEndpointConnectionName, properties, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusAccepted) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // createOrUpdateCreateRequest creates the CreateOrUpdate request. @@ -113,7 +123,10 @@ func (client *PrivateEndpointConnectionsClient) createOrUpdateCreateRequest(ctx reqQP.Set("api-version", "2023-05-01") req.Raw().URL.RawQuery = reqQP.Encode() req.Raw().Header["Accept"] = []string{"application/json"} - return req, runtime.MarshalAsJSON(req, properties) + if err := runtime.MarshalAsJSON(req, properties); err != nil { + return nil, err + } + return req, nil } // BeginDelete - Deletes the specified private endpoint connection associated with the Cognitive Services account. @@ -131,9 +144,14 @@ func (client *PrivateEndpointConnectionsClient) BeginDelete(ctx context.Context, if err != nil { return nil, err } - return runtime.NewPoller[PrivateEndpointConnectionsClientDeleteResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[PrivateEndpointConnectionsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) + return poller, err } else { - return runtime.NewPollerFromResumeToken[PrivateEndpointConnectionsClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[PrivateEndpointConnectionsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -142,18 +160,24 @@ func (client *PrivateEndpointConnectionsClient) BeginDelete(ctx context.Context, // // Generated from API version 2023-05-01 func (client *PrivateEndpointConnectionsClient) deleteOperation(ctx context.Context, resourceGroupName string, accountName string, privateEndpointConnectionName string, options *PrivateEndpointConnectionsClientBeginDeleteOptions) (*http.Response, error) { + var err error + const operationName = "PrivateEndpointConnectionsClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, accountName, privateEndpointConnectionName, options) if err != nil { return nil, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return nil, err } - if !runtime.HasStatusCode(resp, http.StatusOK, http.StatusAccepted, http.StatusNoContent) { - return nil, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK, http.StatusAccepted, http.StatusNoContent) { + err = runtime.NewResponseError(httpResp) + return nil, err } - return resp, nil + return httpResp, nil } // deleteCreateRequest creates the Delete request. @@ -196,18 +220,25 @@ func (client *PrivateEndpointConnectionsClient) deleteCreateRequest(ctx context. // - options - PrivateEndpointConnectionsClientGetOptions contains the optional parameters for the PrivateEndpointConnectionsClient.Get // method. func (client *PrivateEndpointConnectionsClient) Get(ctx context.Context, resourceGroupName string, accountName string, privateEndpointConnectionName string, options *PrivateEndpointConnectionsClientGetOptions) (PrivateEndpointConnectionsClientGetResponse, error) { + var err error + const operationName = "PrivateEndpointConnectionsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, accountName, privateEndpointConnectionName, options) if err != nil { return PrivateEndpointConnectionsClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return PrivateEndpointConnectionsClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PrivateEndpointConnectionsClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return PrivateEndpointConnectionsClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. @@ -258,18 +289,25 @@ func (client *PrivateEndpointConnectionsClient) getHandleResponse(resp *http.Res // - options - PrivateEndpointConnectionsClientListOptions contains the optional parameters for the PrivateEndpointConnectionsClient.List // method. func (client *PrivateEndpointConnectionsClient) List(ctx context.Context, resourceGroupName string, accountName string, options *PrivateEndpointConnectionsClientListOptions) (PrivateEndpointConnectionsClientListResponse, error) { + var err error + const operationName = "PrivateEndpointConnectionsClient.List" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.listCreateRequest(ctx, resourceGroupName, accountName, options) if err != nil { return PrivateEndpointConnectionsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return PrivateEndpointConnectionsClientListResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PrivateEndpointConnectionsClientListResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return PrivateEndpointConnectionsClientListResponse{}, err } - return client.listHandleResponse(resp) + resp, err := client.listHandleResponse(httpResp) + return resp, err } // listCreateRequest creates the List request. diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/privatelinkresources_client.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/privatelinkresources_client.go index 47cb85e4f9f5..2cb99f9cde64 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/privatelinkresources_client.go +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/privatelinkresources_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcognitiveservices @@ -33,7 +32,7 @@ type PrivateLinkResourcesClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewPrivateLinkResourcesClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*PrivateLinkResourcesClient, error) { - cl, err := arm.NewClient(moduleName+".PrivateLinkResourcesClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -53,18 +52,25 @@ func NewPrivateLinkResourcesClient(subscriptionID string, credential azcore.Toke // - options - PrivateLinkResourcesClientListOptions contains the optional parameters for the PrivateLinkResourcesClient.List // method. func (client *PrivateLinkResourcesClient) List(ctx context.Context, resourceGroupName string, accountName string, options *PrivateLinkResourcesClientListOptions) (PrivateLinkResourcesClientListResponse, error) { + var err error + const operationName = "PrivateLinkResourcesClient.List" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.listCreateRequest(ctx, resourceGroupName, accountName, options) if err != nil { return PrivateLinkResourcesClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return PrivateLinkResourcesClientListResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return PrivateLinkResourcesClientListResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return PrivateLinkResourcesClientListResponse{}, err } - return client.listHandleResponse(resp) + resp, err := client.listHandleResponse(httpResp) + return resp, err } // listCreateRequest creates the List request. diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/resourceskus_client.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/resourceskus_client.go index 1f1b04d90c94..78a95040acaa 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/resourceskus_client.go +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/resourceskus_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcognitiveservices @@ -33,7 +32,7 @@ type ResourceSKUsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewResourceSKUsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*ResourceSKUsClient, error) { - cl, err := arm.NewClient(moduleName+".ResourceSKUsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -54,25 +53,20 @@ func (client *ResourceSKUsClient) NewListPager(options *ResourceSKUsClientListOp return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ResourceSKUsClientListResponse) (ResourceSKUsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ResourceSKUsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return ResourceSKUsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return ResourceSKUsClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ResourceSKUsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/response_types.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/response_types.go index e74eb06f93f5..bbfb22564c1f 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/response_types.go +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/response_types.go @@ -3,14 +3,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcognitiveservices // AccountsClientCreateResponse contains the response from method AccountsClient.BeginCreate. type AccountsClientCreateResponse struct { + // Cognitive Services account is an Azure resource representing the provisioned account, it's type, location and SKU. Account } @@ -21,61 +21,73 @@ type AccountsClientDeleteResponse struct { // AccountsClientGetResponse contains the response from method AccountsClient.Get. type AccountsClientGetResponse struct { + // Cognitive Services account is an Azure resource representing the provisioned account, it's type, location and SKU. Account } // AccountsClientListByResourceGroupResponse contains the response from method AccountsClient.NewListByResourceGroupPager. type AccountsClientListByResourceGroupResponse struct { + // The list of cognitive services accounts operation response. AccountListResult } // AccountsClientListKeysResponse contains the response from method AccountsClient.ListKeys. type AccountsClientListKeysResponse struct { + // The access keys for the cognitive services account. APIKeys } // AccountsClientListModelsResponse contains the response from method AccountsClient.NewListModelsPager. type AccountsClientListModelsResponse struct { + // The list of cognitive services accounts operation response. AccountModelListResult } // AccountsClientListResponse contains the response from method AccountsClient.NewListPager. type AccountsClientListResponse struct { + // The list of cognitive services accounts operation response. AccountListResult } // AccountsClientListSKUsResponse contains the response from method AccountsClient.ListSKUs. type AccountsClientListSKUsResponse struct { + // The list of cognitive services accounts operation response. AccountSKUListResult } // AccountsClientListUsagesResponse contains the response from method AccountsClient.ListUsages. type AccountsClientListUsagesResponse struct { + // The response to a list usage request. UsageListResult } // AccountsClientRegenerateKeyResponse contains the response from method AccountsClient.RegenerateKey. type AccountsClientRegenerateKeyResponse struct { + // The access keys for the cognitive services account. APIKeys } // AccountsClientUpdateResponse contains the response from method AccountsClient.BeginUpdate. type AccountsClientUpdateResponse struct { + // Cognitive Services account is an Azure resource representing the provisioned account, it's type, location and SKU. Account } // CommitmentPlansClientCreateOrUpdateAssociationResponse contains the response from method CommitmentPlansClient.BeginCreateOrUpdateAssociation. type CommitmentPlansClientCreateOrUpdateAssociationResponse struct { + // The commitment plan association. CommitmentPlanAccountAssociation } // CommitmentPlansClientCreateOrUpdatePlanResponse contains the response from method CommitmentPlansClient.BeginCreateOrUpdatePlan. type CommitmentPlansClientCreateOrUpdatePlanResponse struct { + // Cognitive Services account commitment plan. CommitmentPlan } // CommitmentPlansClientCreateOrUpdateResponse contains the response from method CommitmentPlansClient.CreateOrUpdate. type CommitmentPlansClientCreateOrUpdateResponse struct { + // Cognitive Services account commitment plan. CommitmentPlan } @@ -96,56 +108,67 @@ type CommitmentPlansClientDeleteResponse struct { // CommitmentPlansClientGetAssociationResponse contains the response from method CommitmentPlansClient.GetAssociation. type CommitmentPlansClientGetAssociationResponse struct { + // The commitment plan association. CommitmentPlanAccountAssociation } // CommitmentPlansClientGetPlanResponse contains the response from method CommitmentPlansClient.GetPlan. type CommitmentPlansClientGetPlanResponse struct { + // Cognitive Services account commitment plan. CommitmentPlan } // CommitmentPlansClientGetResponse contains the response from method CommitmentPlansClient.Get. type CommitmentPlansClientGetResponse struct { + // Cognitive Services account commitment plan. CommitmentPlan } // CommitmentPlansClientListAssociationsResponse contains the response from method CommitmentPlansClient.NewListAssociationsPager. type CommitmentPlansClientListAssociationsResponse struct { + // The list of cognitive services Commitment Plan Account Association operation response. CommitmentPlanAccountAssociationListResult } // CommitmentPlansClientListPlansByResourceGroupResponse contains the response from method CommitmentPlansClient.NewListPlansByResourceGroupPager. type CommitmentPlansClientListPlansByResourceGroupResponse struct { + // The list of cognitive services accounts operation response. CommitmentPlanListResult } // CommitmentPlansClientListPlansBySubscriptionResponse contains the response from method CommitmentPlansClient.NewListPlansBySubscriptionPager. type CommitmentPlansClientListPlansBySubscriptionResponse struct { + // The list of cognitive services accounts operation response. CommitmentPlanListResult } // CommitmentPlansClientListResponse contains the response from method CommitmentPlansClient.NewListPager. type CommitmentPlansClientListResponse struct { + // The list of cognitive services accounts operation response. CommitmentPlanListResult } // CommitmentPlansClientUpdatePlanResponse contains the response from method CommitmentPlansClient.BeginUpdatePlan. type CommitmentPlansClientUpdatePlanResponse struct { + // Cognitive Services account commitment plan. CommitmentPlan } // CommitmentTiersClientListResponse contains the response from method CommitmentTiersClient.NewListPager. type CommitmentTiersClientListResponse struct { + // The list of cognitive services accounts operation response. CommitmentTierListResult } // DeletedAccountsClientGetResponse contains the response from method DeletedAccountsClient.Get. type DeletedAccountsClientGetResponse struct { + // Cognitive Services account is an Azure resource representing the provisioned account, it's type, location and SKU. Account } // DeletedAccountsClientListResponse contains the response from method DeletedAccountsClient.NewListPager. type DeletedAccountsClientListResponse struct { + // The list of cognitive services accounts operation response. AccountListResult } @@ -156,6 +179,7 @@ type DeletedAccountsClientPurgeResponse struct { // DeploymentsClientCreateOrUpdateResponse contains the response from method DeploymentsClient.BeginCreateOrUpdate. type DeploymentsClientCreateOrUpdateResponse struct { + // Cognitive Services account deployment. Deployment } @@ -166,36 +190,43 @@ type DeploymentsClientDeleteResponse struct { // DeploymentsClientGetResponse contains the response from method DeploymentsClient.Get. type DeploymentsClientGetResponse struct { + // Cognitive Services account deployment. Deployment } // DeploymentsClientListResponse contains the response from method DeploymentsClient.NewListPager. type DeploymentsClientListResponse struct { + // The list of cognitive services accounts operation response. DeploymentListResult } // ManagementClientCheckDomainAvailabilityResponse contains the response from method ManagementClient.CheckDomainAvailability. type ManagementClientCheckDomainAvailabilityResponse struct { + // Domain availability. DomainAvailability } // ManagementClientCheckSKUAvailabilityResponse contains the response from method ManagementClient.CheckSKUAvailability. type ManagementClientCheckSKUAvailabilityResponse struct { + // Check SKU availability result list. SKUAvailabilityListResult } // ModelsClientListResponse contains the response from method ModelsClient.NewListPager. type ModelsClientListResponse struct { + // The list of cognitive services models. ModelListResult } // OperationsClientListResponse contains the response from method OperationsClient.NewListPager. type OperationsClientListResponse struct { + // A list of REST API operations supported by an Azure Resource Provider. It contains an URL link to get the next set of results. OperationListResult } // PrivateEndpointConnectionsClientCreateOrUpdateResponse contains the response from method PrivateEndpointConnectionsClient.BeginCreateOrUpdate. type PrivateEndpointConnectionsClientCreateOrUpdateResponse struct { + // The Private Endpoint Connection resource. PrivateEndpointConnection } @@ -206,25 +237,30 @@ type PrivateEndpointConnectionsClientDeleteResponse struct { // PrivateEndpointConnectionsClientGetResponse contains the response from method PrivateEndpointConnectionsClient.Get. type PrivateEndpointConnectionsClientGetResponse struct { + // The Private Endpoint Connection resource. PrivateEndpointConnection } // PrivateEndpointConnectionsClientListResponse contains the response from method PrivateEndpointConnectionsClient.List. type PrivateEndpointConnectionsClientListResponse struct { + // A list of private endpoint connections PrivateEndpointConnectionListResult } // PrivateLinkResourcesClientListResponse contains the response from method PrivateLinkResourcesClient.List. type PrivateLinkResourcesClientListResponse struct { + // A list of private link resources PrivateLinkResourceListResult } // ResourceSKUsClientListResponse contains the response from method ResourceSKUsClient.NewListPager. type ResourceSKUsClientListResponse struct { + // The Get Skus operation response. ResourceSKUListResult } // UsagesClientListResponse contains the response from method UsagesClient.NewListPager. type UsagesClientListResponse struct { + // The response to a list usage request. UsageListResult } diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/time_rfc3339.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/time_rfc3339.go index f952597d4ac3..8e31b6f3b72f 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/time_rfc3339.go +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/time_rfc3339.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcognitiveservices @@ -19,50 +18,50 @@ import ( "time" ) -const ( - utcLayoutJSON = `"2006-01-02T15:04:05.999999999"` - utcLayout = "2006-01-02T15:04:05.999999999" - rfc3339JSON = `"` + time.RFC3339Nano + `"` -) - // Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases. var tzOffsetRegex = regexp.MustCompile(`(Z|z|\+|-)(\d+:\d+)*"*$`) -type timeRFC3339 time.Time +const ( + utcDateTimeJSON = `"2006-01-02T15:04:05.999999999"` + utcDateTime = "2006-01-02T15:04:05.999999999" + dateTimeJSON = `"` + time.RFC3339Nano + `"` +) + +type dateTimeRFC3339 time.Time -func (t timeRFC3339) MarshalJSON() (json []byte, err error) { +func (t dateTimeRFC3339) MarshalJSON() ([]byte, error) { tt := time.Time(t) return tt.MarshalJSON() } -func (t timeRFC3339) MarshalText() (text []byte, err error) { +func (t dateTimeRFC3339) MarshalText() ([]byte, error) { tt := time.Time(t) return tt.MarshalText() } -func (t *timeRFC3339) UnmarshalJSON(data []byte) error { - layout := utcLayoutJSON +func (t *dateTimeRFC3339) UnmarshalJSON(data []byte) error { + layout := utcDateTimeJSON if tzOffsetRegex.Match(data) { - layout = rfc3339JSON + layout = dateTimeJSON } return t.Parse(layout, string(data)) } -func (t *timeRFC3339) UnmarshalText(data []byte) (err error) { - layout := utcLayout +func (t *dateTimeRFC3339) UnmarshalText(data []byte) error { + layout := utcDateTime if tzOffsetRegex.Match(data) { layout = time.RFC3339Nano } return t.Parse(layout, string(data)) } -func (t *timeRFC3339) Parse(layout, value string) error { +func (t *dateTimeRFC3339) Parse(layout, value string) error { p, err := time.Parse(layout, strings.ToUpper(value)) - *t = timeRFC3339(p) + *t = dateTimeRFC3339(p) return err } -func populateTimeRFC3339(m map[string]any, k string, t *time.Time) { +func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) { if t == nil { return } else if azcore.IsNullValue(t) { @@ -71,14 +70,14 @@ func populateTimeRFC3339(m map[string]any, k string, t *time.Time) { } else if reflect.ValueOf(t).IsNil() { return } - m[k] = (*timeRFC3339)(t) + m[k] = (*dateTimeRFC3339)(t) } -func unpopulateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { +func unpopulateDateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { if data == nil || strings.EqualFold(string(data), "null") { return nil } - var aux timeRFC3339 + var aux dateTimeRFC3339 if err := json.Unmarshal(data, &aux); err != nil { return fmt.Errorf("struct field %s: %v", fn, err) } diff --git a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/usages_client.go b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/usages_client.go index dbf6c88cd251..429bc67df156 100644 --- a/sdk/resourcemanager/cognitiveservices/armcognitiveservices/usages_client.go +++ b/sdk/resourcemanager/cognitiveservices/armcognitiveservices/usages_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcognitiveservices @@ -33,7 +32,7 @@ type UsagesClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewUsagesClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*UsagesClient, error) { - cl, err := arm.NewClient(moduleName+".UsagesClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -55,25 +54,20 @@ func (client *UsagesClient) NewListPager(location string, options *UsagesClientL return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *UsagesClientListResponse) (UsagesClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, location, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "UsagesClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, location, options) + }, nil) if err != nil { return UsagesClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return UsagesClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return UsagesClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } From 06c80413723b4f4933295eef01925bc8121115be Mon Sep 17 00:00:00 2001 From: Alancere <804873052@qq.com> Date: Tue, 21 Nov 2023 16:11:36 +0800 Subject: [PATCH 09/10] [Release] sdk/resourcemanager/commerce/armcommerce/0.3.0 generation from spec commit: 164375e67a1bffb207bcf603772c289dbe42d7b5 --- .../commerce/armcommerce/CHANGELOG.md | 6 + .../commerce/armcommerce/README.md | 7 + .../commerce/armcommerce/autorest.md | 2 +- .../commerce/armcommerce/client_factory.go | 15 +- .../commerce/armcommerce/constants.go | 11 +- .../commerce/armcommerce/fake/internal.go | 83 ++++++++++ .../armcommerce/fake/ratecard_server.go | 97 ++++++++++++ .../armcommerce/fake/server_factory.go | 82 ++++++++++ .../commerce/armcommerce/fake/time_rfc3339.go | 86 ++++++++++ .../fake/usageaggregates_server.go | 149 ++++++++++++++++++ .../commerce/armcommerce/go.mod | 20 +-- .../commerce/armcommerce/go.sum | 46 +++--- .../commerce/armcommerce/interfaces.go | 18 +++ .../commerce/armcommerce/models.go | 145 +++++++---------- .../commerce/armcommerce/models_serde.go | 31 ++-- .../commerce/armcommerce/options.go | 32 ++++ .../armcommerce/polymorphic_helpers.go | 8 +- .../commerce/armcommerce/ratecard_client.go | 20 ++- .../ratecard_client_example_test.go | 2 +- .../commerce/armcommerce/response_types.go | 5 +- .../commerce/armcommerce/time_rfc3339.go | 43 +++-- .../armcommerce/usageaggregates_client.go | 26 ++- 22 files changed, 732 insertions(+), 202 deletions(-) create mode 100644 sdk/resourcemanager/commerce/armcommerce/fake/internal.go create mode 100644 sdk/resourcemanager/commerce/armcommerce/fake/ratecard_server.go create mode 100644 sdk/resourcemanager/commerce/armcommerce/fake/server_factory.go create mode 100644 sdk/resourcemanager/commerce/armcommerce/fake/time_rfc3339.go create mode 100644 sdk/resourcemanager/commerce/armcommerce/fake/usageaggregates_server.go create mode 100644 sdk/resourcemanager/commerce/armcommerce/interfaces.go create mode 100644 sdk/resourcemanager/commerce/armcommerce/options.go diff --git a/sdk/resourcemanager/commerce/armcommerce/CHANGELOG.md b/sdk/resourcemanager/commerce/armcommerce/CHANGELOG.md index 6eb19fbf95e0..b5d5103d1828 100644 --- a/sdk/resourcemanager/commerce/armcommerce/CHANGELOG.md +++ b/sdk/resourcemanager/commerce/armcommerce/CHANGELOG.md @@ -1,5 +1,11 @@ # Release History +## 0.3.0 (2023-11-24) +### Features Added + +- Support for test fakes and OpenTelemetry trace spans. + + ## 0.2.0 (2023-03-28) ### Features Added diff --git a/sdk/resourcemanager/commerce/armcommerce/README.md b/sdk/resourcemanager/commerce/armcommerce/README.md index a11c8ab1ad8b..f17f594791c4 100644 --- a/sdk/resourcemanager/commerce/armcommerce/README.md +++ b/sdk/resourcemanager/commerce/armcommerce/README.md @@ -60,6 +60,13 @@ A client groups a set of related APIs, providing access to its functionality. C client := clientFactory.NewRateCardClient() ``` +## Fakes + +The fake package contains types used for constructing in-memory fake servers used in unit tests. +This allows writing tests to cover various success/error conditions without the need for connecting to a live service. + +Please see https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/samples/fakes for details and examples on how to use fakes. + ## Provide Feedback If you encounter bugs or have suggestions, please diff --git a/sdk/resourcemanager/commerce/armcommerce/autorest.md b/sdk/resourcemanager/commerce/armcommerce/autorest.md index d0fde16e64aa..5fa5913ea484 100644 --- a/sdk/resourcemanager/commerce/armcommerce/autorest.md +++ b/sdk/resourcemanager/commerce/armcommerce/autorest.md @@ -8,6 +8,6 @@ require: - https://github.com/Azure/azure-rest-api-specs/blob/163e27c0ca7570bc39e00a46f255740d9b3ba3cb/specification/commerce/resource-manager/readme.md - https://github.com/Azure/azure-rest-api-specs/blob/163e27c0ca7570bc39e00a46f255740d9b3ba3cb/specification/commerce/resource-manager/readme.go.md license-header: MICROSOFT_MIT_NO_VERSION -module-version: 0.2.0 +module-version: 0.3.0 ``` \ No newline at end of file diff --git a/sdk/resourcemanager/commerce/armcommerce/client_factory.go b/sdk/resourcemanager/commerce/armcommerce/client_factory.go index 26e69df09200..fbb25bcf80e8 100644 --- a/sdk/resourcemanager/commerce/armcommerce/client_factory.go +++ b/sdk/resourcemanager/commerce/armcommerce/client_factory.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcommerce @@ -29,7 +28,7 @@ type ClientFactory struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewClientFactory(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*ClientFactory, error) { - _, err := arm.NewClient(moduleName+".ClientFactory", moduleVersion, credential, options) + _, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -39,12 +38,14 @@ func NewClientFactory(subscriptionID string, credential azcore.TokenCredential, }, nil } -func (c *ClientFactory) NewUsageAggregatesClient() *UsageAggregatesClient { - subClient, _ := NewUsageAggregatesClient(c.subscriptionID, c.credential, c.options) +// NewRateCardClient creates a new instance of RateCardClient. +func (c *ClientFactory) NewRateCardClient() *RateCardClient { + subClient, _ := NewRateCardClient(c.subscriptionID, c.credential, c.options) return subClient } -func (c *ClientFactory) NewRateCardClient() *RateCardClient { - subClient, _ := NewRateCardClient(c.subscriptionID, c.credential, c.options) +// NewUsageAggregatesClient creates a new instance of UsageAggregatesClient. +func (c *ClientFactory) NewUsageAggregatesClient() *UsageAggregatesClient { + subClient, _ := NewUsageAggregatesClient(c.subscriptionID, c.credential, c.options) return subClient } diff --git a/sdk/resourcemanager/commerce/armcommerce/constants.go b/sdk/resourcemanager/commerce/armcommerce/constants.go index f46a1c027b08..1e56ff9742fe 100644 --- a/sdk/resourcemanager/commerce/armcommerce/constants.go +++ b/sdk/resourcemanager/commerce/armcommerce/constants.go @@ -3,15 +3,14 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcommerce const ( - moduleName = "armcommerce" - moduleVersion = "v0.2.0" + moduleName = "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/commerce/armcommerce" + moduleVersion = "v0.3.0" ) type AggregationGranularity string @@ -33,16 +32,16 @@ func PossibleAggregationGranularityValues() []AggregationGranularity { type OfferTermInfo string const ( - OfferTermInfoRecurringCharge OfferTermInfo = "Recurring Charge" OfferTermInfoMonetaryCommitment OfferTermInfo = "Monetary Commitment" OfferTermInfoMonetaryCredit OfferTermInfo = "Monetary Credit" + OfferTermInfoRecurringCharge OfferTermInfo = "Recurring Charge" ) // PossibleOfferTermInfoValues returns the possible values for the OfferTermInfo const type. func PossibleOfferTermInfoValues() []OfferTermInfo { return []OfferTermInfo{ - OfferTermInfoRecurringCharge, OfferTermInfoMonetaryCommitment, OfferTermInfoMonetaryCredit, + OfferTermInfoRecurringCharge, } } diff --git a/sdk/resourcemanager/commerce/armcommerce/fake/internal.go b/sdk/resourcemanager/commerce/armcommerce/fake/internal.go new file mode 100644 index 000000000000..7d2f89ba4bb2 --- /dev/null +++ b/sdk/resourcemanager/commerce/armcommerce/fake/internal.go @@ -0,0 +1,83 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "net/http" + "reflect" + "sync" +) + +type nonRetriableError struct { + error +} + +func (nonRetriableError) NonRetriable() { + // marker method +} + +func contains[T comparable](s []T, v T) bool { + for _, vv := range s { + if vv == v { + return true + } + } + return false +} + +func getOptional[T any](v T) *T { + if reflect.ValueOf(v).IsZero() { + return nil + } + return &v +} + +func parseOptional[T any](v string, parse func(v string) (T, error)) (*T, error) { + if v == "" { + return nil, nil + } + t, err := parse(v) + if err != nil { + return nil, err + } + return &t, err +} + +func newTracker[T any]() *tracker[T] { + return &tracker[T]{ + items: map[string]*T{}, + } +} + +type tracker[T any] struct { + items map[string]*T + mu sync.Mutex +} + +func (p *tracker[T]) get(req *http.Request) *T { + p.mu.Lock() + defer p.mu.Unlock() + if item, ok := p.items[server.SanitizePagerPollerPath(req.URL.Path)]; ok { + return item + } + return nil +} + +func (p *tracker[T]) add(req *http.Request, item *T) { + p.mu.Lock() + defer p.mu.Unlock() + p.items[server.SanitizePagerPollerPath(req.URL.Path)] = item +} + +func (p *tracker[T]) remove(req *http.Request) { + p.mu.Lock() + defer p.mu.Unlock() + delete(p.items, server.SanitizePagerPollerPath(req.URL.Path)) +} diff --git a/sdk/resourcemanager/commerce/armcommerce/fake/ratecard_server.go b/sdk/resourcemanager/commerce/armcommerce/fake/ratecard_server.go new file mode 100644 index 000000000000..4d207d50705a --- /dev/null +++ b/sdk/resourcemanager/commerce/armcommerce/fake/ratecard_server.go @@ -0,0 +1,97 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/commerce/armcommerce" + "net/http" + "net/url" + "regexp" +) + +// RateCardServer is a fake server for instances of the armcommerce.RateCardClient type. +type RateCardServer struct { + // Get is the fake for method RateCardClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, filter string, options *armcommerce.RateCardClientGetOptions) (resp azfake.Responder[armcommerce.RateCardClientGetResponse], errResp azfake.ErrorResponder) +} + +// NewRateCardServerTransport creates a new instance of RateCardServerTransport with the provided implementation. +// The returned RateCardServerTransport instance is connected to an instance of armcommerce.RateCardClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewRateCardServerTransport(srv *RateCardServer) *RateCardServerTransport { + return &RateCardServerTransport{srv: srv} +} + +// RateCardServerTransport connects instances of armcommerce.RateCardClient to instances of RateCardServer. +// Don't use this type directly, use NewRateCardServerTransport instead. +type RateCardServerTransport struct { + srv *RateCardServer +} + +// Do implements the policy.Transporter interface for RateCardServerTransport. +func (r *RateCardServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "RateCardClient.Get": + resp, err = r.dispatchGet(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (r *RateCardServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if r.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Commerce/RateCard` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + filterParam, err := url.QueryUnescape(qp.Get("$filter")) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.Get(req.Context(), filterParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ResourceRateCardInfo, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/commerce/armcommerce/fake/server_factory.go b/sdk/resourcemanager/commerce/armcommerce/fake/server_factory.go new file mode 100644 index 000000000000..b5a83a3aafcf --- /dev/null +++ b/sdk/resourcemanager/commerce/armcommerce/fake/server_factory.go @@ -0,0 +1,82 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "net/http" + "strings" + "sync" +) + +// ServerFactory is a fake server for instances of the armcommerce.ClientFactory type. +type ServerFactory struct { + RateCardServer RateCardServer + UsageAggregatesServer UsageAggregatesServer +} + +// NewServerFactoryTransport creates a new instance of ServerFactoryTransport with the provided implementation. +// The returned ServerFactoryTransport instance is connected to an instance of armcommerce.ClientFactory via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewServerFactoryTransport(srv *ServerFactory) *ServerFactoryTransport { + return &ServerFactoryTransport{ + srv: srv, + } +} + +// ServerFactoryTransport connects instances of armcommerce.ClientFactory to instances of ServerFactory. +// Don't use this type directly, use NewServerFactoryTransport instead. +type ServerFactoryTransport struct { + srv *ServerFactory + trMu sync.Mutex + trRateCardServer *RateCardServerTransport + trUsageAggregatesServer *UsageAggregatesServerTransport +} + +// Do implements the policy.Transporter interface for ServerFactoryTransport. +func (s *ServerFactoryTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + client := method[:strings.Index(method, ".")] + var resp *http.Response + var err error + + switch client { + case "RateCardClient": + initServer(s, &s.trRateCardServer, func() *RateCardServerTransport { return NewRateCardServerTransport(&s.srv.RateCardServer) }) + resp, err = s.trRateCardServer.Do(req) + case "UsageAggregatesClient": + initServer(s, &s.trUsageAggregatesServer, func() *UsageAggregatesServerTransport { + return NewUsageAggregatesServerTransport(&s.srv.UsageAggregatesServer) + }) + resp, err = s.trUsageAggregatesServer.Do(req) + default: + err = fmt.Errorf("unhandled client %s", client) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func initServer[T any](s *ServerFactoryTransport, dst **T, src func() *T) { + s.trMu.Lock() + if *dst == nil { + *dst = src() + } + s.trMu.Unlock() +} diff --git a/sdk/resourcemanager/commerce/armcommerce/fake/time_rfc3339.go b/sdk/resourcemanager/commerce/armcommerce/fake/time_rfc3339.go new file mode 100644 index 000000000000..b0535a7b63e6 --- /dev/null +++ b/sdk/resourcemanager/commerce/armcommerce/fake/time_rfc3339.go @@ -0,0 +1,86 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "encoding/json" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "reflect" + "regexp" + "strings" + "time" +) + +// Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases. +var tzOffsetRegex = regexp.MustCompile(`(Z|z|\+|-)(\d+:\d+)*"*$`) + +const ( + utcDateTimeJSON = `"2006-01-02T15:04:05.999999999"` + utcDateTime = "2006-01-02T15:04:05.999999999" + dateTimeJSON = `"` + time.RFC3339Nano + `"` +) + +type dateTimeRFC3339 time.Time + +func (t dateTimeRFC3339) MarshalJSON() ([]byte, error) { + tt := time.Time(t) + return tt.MarshalJSON() +} + +func (t dateTimeRFC3339) MarshalText() ([]byte, error) { + tt := time.Time(t) + return tt.MarshalText() +} + +func (t *dateTimeRFC3339) UnmarshalJSON(data []byte) error { + layout := utcDateTimeJSON + if tzOffsetRegex.Match(data) { + layout = dateTimeJSON + } + return t.Parse(layout, string(data)) +} + +func (t *dateTimeRFC3339) UnmarshalText(data []byte) error { + layout := utcDateTime + if tzOffsetRegex.Match(data) { + layout = time.RFC3339Nano + } + return t.Parse(layout, string(data)) +} + +func (t *dateTimeRFC3339) Parse(layout, value string) error { + p, err := time.Parse(layout, strings.ToUpper(value)) + *t = dateTimeRFC3339(p) + return err +} + +func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) { + if t == nil { + return + } else if azcore.IsNullValue(t) { + m[k] = nil + return + } else if reflect.ValueOf(t).IsNil() { + return + } + m[k] = (*dateTimeRFC3339)(t) +} + +func unpopulateDateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { + if data == nil || strings.EqualFold(string(data), "null") { + return nil + } + var aux dateTimeRFC3339 + if err := json.Unmarshal(data, &aux); err != nil { + return fmt.Errorf("struct field %s: %v", fn, err) + } + *t = (*time.Time)(&aux) + return nil +} diff --git a/sdk/resourcemanager/commerce/armcommerce/fake/usageaggregates_server.go b/sdk/resourcemanager/commerce/armcommerce/fake/usageaggregates_server.go new file mode 100644 index 000000000000..4a9d57efff78 --- /dev/null +++ b/sdk/resourcemanager/commerce/armcommerce/fake/usageaggregates_server.go @@ -0,0 +1,149 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package fake + +import ( + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/commerce/armcommerce" + "net/http" + "net/url" + "regexp" + "strconv" + "time" +) + +// UsageAggregatesServer is a fake server for instances of the armcommerce.UsageAggregatesClient type. +type UsageAggregatesServer struct { + // NewListPager is the fake for method UsageAggregatesClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(reportedStartTime time.Time, reportedEndTime time.Time, options *armcommerce.UsageAggregatesClientListOptions) (resp azfake.PagerResponder[armcommerce.UsageAggregatesClientListResponse]) +} + +// NewUsageAggregatesServerTransport creates a new instance of UsageAggregatesServerTransport with the provided implementation. +// The returned UsageAggregatesServerTransport instance is connected to an instance of armcommerce.UsageAggregatesClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewUsageAggregatesServerTransport(srv *UsageAggregatesServer) *UsageAggregatesServerTransport { + return &UsageAggregatesServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armcommerce.UsageAggregatesClientListResponse]](), + } +} + +// UsageAggregatesServerTransport connects instances of armcommerce.UsageAggregatesClient to instances of UsageAggregatesServer. +// Don't use this type directly, use NewUsageAggregatesServerTransport instead. +type UsageAggregatesServerTransport struct { + srv *UsageAggregatesServer + newListPager *tracker[azfake.PagerResponder[armcommerce.UsageAggregatesClientListResponse]] +} + +// Do implements the policy.Transporter interface for UsageAggregatesServerTransport. +func (u *UsageAggregatesServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "UsageAggregatesClient.NewListPager": + resp, err = u.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (u *UsageAggregatesServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if u.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := u.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Commerce/UsageAggregates` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + reportedStartTimeUnescaped, err := url.QueryUnescape(qp.Get("reportedStartTime")) + if err != nil { + return nil, err + } + reportedStartTimeParam, err := time.Parse(time.RFC3339Nano, reportedStartTimeUnescaped) + if err != nil { + return nil, err + } + reportedEndTimeUnescaped, err := url.QueryUnescape(qp.Get("reportedEndTime")) + if err != nil { + return nil, err + } + reportedEndTimeParam, err := time.Parse(time.RFC3339Nano, reportedEndTimeUnescaped) + if err != nil { + return nil, err + } + showDetailsUnescaped, err := url.QueryUnescape(qp.Get("showDetails")) + if err != nil { + return nil, err + } + showDetailsParam, err := parseOptional(showDetailsUnescaped, strconv.ParseBool) + if err != nil { + return nil, err + } + aggregationGranularityUnescaped, err := url.QueryUnescape(qp.Get("aggregationGranularity")) + if err != nil { + return nil, err + } + aggregationGranularityParam := getOptional(armcommerce.AggregationGranularity(aggregationGranularityUnescaped)) + continuationTokenUnescaped, err := url.QueryUnescape(qp.Get("continuationToken")) + if err != nil { + return nil, err + } + continuationTokenParam := getOptional(continuationTokenUnescaped) + var options *armcommerce.UsageAggregatesClientListOptions + if showDetailsParam != nil || aggregationGranularityParam != nil || continuationTokenParam != nil { + options = &armcommerce.UsageAggregatesClientListOptions{ + ShowDetails: showDetailsParam, + AggregationGranularity: aggregationGranularityParam, + ContinuationToken: continuationTokenParam, + } + } + resp := u.srv.NewListPager(reportedStartTimeParam, reportedEndTimeParam, options) + newListPager = &resp + u.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armcommerce.UsageAggregatesClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + u.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + u.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/commerce/armcommerce/go.mod b/sdk/resourcemanager/commerce/armcommerce/go.mod index ed023affbe11..c53a4b57b7f4 100644 --- a/sdk/resourcemanager/commerce/armcommerce/go.mod +++ b/sdk/resourcemanager/commerce/armcommerce/go.mod @@ -3,19 +3,19 @@ module github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/commerce/armcommerc go 1.18 require ( - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0 - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2 + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 ) require ( - github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0 // indirect - github.com/golang-jwt/jwt/v4 v4.5.0 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect + github.com/golang-jwt/jwt/v5 v5.0.0 // indirect + github.com/google/uuid v1.3.1 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect - golang.org/x/crypto v0.6.0 // indirect - golang.org/x/net v0.7.0 // indirect - golang.org/x/sys v0.5.0 // indirect - golang.org/x/text v0.7.0 // indirect + golang.org/x/crypto v0.14.0 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect ) diff --git a/sdk/resourcemanager/commerce/armcommerce/go.sum b/sdk/resourcemanager/commerce/armcommerce/go.sum index 8ba445a8c4da..7985f1da436f 100644 --- a/sdk/resourcemanager/commerce/armcommerce/go.sum +++ b/sdk/resourcemanager/commerce/armcommerce/go.sum @@ -1,31 +1,31 @@ -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0 h1:rTnT/Jrcm+figWlYz4Ixzt0SJVR2cMC8lvZcimipiEY= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0/go.mod h1:ON4tFdPTwRcgWEaVDrN3584Ef+b7GgSJaXxe5fW9t4M= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2 h1:uqM+VoHjVH6zdlkLF2b6O0ZANcHoj3rO0PoQ3jglUJA= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.2.2/go.mod h1:twTKAa1E6hLmSDjLhaCkbTMQKc7p/rNLU40rLxGEOCI= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0 h1:leh5DwKv6Ihwi+h60uHtn6UWAxBbZ0q8DwQVMzf61zw= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.2.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= -github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0 h1:UE9n9rkJF62ArLb1F3DEjRt8O3jLwMWdSoypKV4f3MU= -github.com/AzureAD/microsoft-authentication-library-for-go v0.9.0/go.mod h1:kgDmCTgBzIEPFElEF+FK0SdjAor06dRq2Go927dnQ6o= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 h1:fb8kj/Dh4CSwgsOzHeZY4Xh68cFVbzXx+ONXGMY//4w= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0/go.mod h1:uReU2sSxZExRPBAg3qKzmAucSi51+SP1OhohieR821Q= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 h1:BMAjVKJM0U/CYF27gA0ZMmXGkOcvfFtD0oHVZ1TIPRI= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0/go.mod h1:1fXstnBMas5kzG+S3q8UoJcmyU6nUeunJcMDHcRYHhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 h1:d81/ng9rET2YqdVkVwkb6EXeRrLJIwyGnJcAlAWKwhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0/go.mod h1:s4kgfzA0covAXNicZHDMN58jExvcng2mC/DepXiF1EI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 h1:WpB/QDNLpMw72xHJc34BNNykqSOeEJDAWkhf0u12/Jk= +github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/dnaeon/go-vcr v1.1.0 h1:ReYa/UBrRyQdant9B4fNHGoCNKw6qh6P0fsdGmZpR7c= -github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg= -github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= +github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= +github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -golang.org/x/crypto v0.6.0 h1:qfktjS5LUO+fFKeJXZ+ikTRijMmljikvG68fpMMruSc= -golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58= -golang.org/x/net v0.7.0 h1:rJrUqqhjsgNp7KqAIc25s9pZnjU7TUcSY7HcVZjdn1g= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= -golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/text v0.7.0 h1:4BRB4x83lYWy72KwLD/qYDuTu7q9PjSagHvijDw7cLo= -golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/sdk/resourcemanager/commerce/armcommerce/interfaces.go b/sdk/resourcemanager/commerce/armcommerce/interfaces.go new file mode 100644 index 000000000000..92da5557c451 --- /dev/null +++ b/sdk/resourcemanager/commerce/armcommerce/interfaces.go @@ -0,0 +1,18 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package armcommerce + +// OfferTermInfoAutoGeneratedClassification provides polymorphic access to related types. +// Call the interface's GetOfferTermInfoAutoGenerated() method to access the common type. +// Use a type switch to determine the concrete type. The possible types are: +// - *MonetaryCommitment, *MonetaryCredit, *OfferTermInfoAutoGenerated, *RecurringCharge +type OfferTermInfoAutoGeneratedClassification interface { + // GetOfferTermInfoAutoGenerated returns the OfferTermInfoAutoGenerated content of the underlying type. + GetOfferTermInfoAutoGenerated() *OfferTermInfoAutoGenerated +} diff --git a/sdk/resourcemanager/commerce/armcommerce/models.go b/sdk/resourcemanager/commerce/armcommerce/models.go index 8afab235ecc7..c5832e8ad7d5 100644 --- a/sdk/resourcemanager/commerce/armcommerce/models.go +++ b/sdk/resourcemanager/commerce/armcommerce/models.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcommerce @@ -14,116 +13,107 @@ import "time" // ErrorResponse - Describes the format of Error response. type ErrorResponse struct { // Error code - Code *string `json:"code,omitempty"` + Code *string // Error message indicating why the operation failed. - Message *string `json:"message,omitempty"` + Message *string } // InfoField - Key-value pairs of instance details in the legacy format. type InfoField struct { // Identifies the name of the instance provisioned by the user. - Project *string `json:"project,omitempty"` + Project *string } // MeterInfo - Detailed information about the meter. type MeterInfo struct { // Indicates the date from which the meter rate is effective. - EffectiveDate *time.Time `json:"EffectiveDate,omitempty"` + EffectiveDate *time.Time // The resource quantity that is included in the offer at no cost. Consumption beyond this quantity will be charged. - IncludedQuantity *float32 `json:"IncludedQuantity,omitempty"` + IncludedQuantity *float32 // The category of the meter, e.g., 'Cloud services', 'Networking', etc.. - MeterCategory *string `json:"MeterCategory,omitempty"` + MeterCategory *string // The unique identifier of the resource. - MeterID *string `json:"MeterId,omitempty"` + MeterID *string // The name of the meter, within the given meter category - MeterName *string `json:"MeterName,omitempty"` + MeterName *string // The list of key/value pairs for the meter rates, in the format 'key':'value' where key = the meter quantity, and value // = the corresponding price - MeterRates map[string]*float32 `json:"MeterRates,omitempty"` + MeterRates map[string]*float32 // The region in which the Azure service is available. - MeterRegion *string `json:"MeterRegion,omitempty"` + MeterRegion *string // The subcategory of the meter, e.g., 'A6 Cloud services', 'ExpressRoute (IXP)', etc.. - MeterSubCategory *string `json:"MeterSubCategory,omitempty"` + MeterSubCategory *string // Provides additional meter data. 'Third Party' indicates a meter with no discount. Blanks indicate First Party. - MeterTags []*string `json:"MeterTags,omitempty"` + MeterTags []*string // The unit in which the meter consumption is charged, e.g., 'Hours', 'GB', etc. - Unit *string `json:"Unit,omitempty"` + Unit *string } // MonetaryCommitment - Indicates that a monetary commitment is required for this offer type MonetaryCommitment struct { // REQUIRED; Name of the offer term - Name *OfferTermInfo `json:"Name,omitempty"` + Name *OfferTermInfo // Indicates the date from which the offer term is effective. - EffectiveDate *time.Time `json:"EffectiveDate,omitempty"` + EffectiveDate *time.Time // An array of meter ids that are excluded from the given offer terms. - ExcludedMeterIDs []*string `json:"ExcludedMeterIds,omitempty"` + ExcludedMeterIDs []*string // The list of key/value pairs for the tiered meter rates, in the format 'key':'value' where key = price, and value = the // corresponding discount percentage. This field is used only by offer terms of type // 'Monetary Commitment'. - TieredDiscount map[string]*float64 `json:"TieredDiscount,omitempty"` + TieredDiscount map[string]*float64 } // GetOfferTermInfoAutoGenerated implements the OfferTermInfoAutoGeneratedClassification interface for type MonetaryCommitment. func (m *MonetaryCommitment) GetOfferTermInfoAutoGenerated() *OfferTermInfoAutoGenerated { return &OfferTermInfoAutoGenerated{ - Name: m.Name, EffectiveDate: m.EffectiveDate, + Name: m.Name, } } // MonetaryCredit - Indicates that this is a monetary credit offer. type MonetaryCredit struct { // REQUIRED; Name of the offer term - Name *OfferTermInfo `json:"Name,omitempty"` + Name *OfferTermInfo // The amount of credit provided under the terms of the given offer level. - Credit *float64 `json:"Credit,omitempty"` + Credit *float64 // Indicates the date from which the offer term is effective. - EffectiveDate *time.Time `json:"EffectiveDate,omitempty"` + EffectiveDate *time.Time // An array of meter ids that are excluded from the given offer terms. - ExcludedMeterIDs []*string `json:"ExcludedMeterIds,omitempty"` + ExcludedMeterIDs []*string } // GetOfferTermInfoAutoGenerated implements the OfferTermInfoAutoGeneratedClassification interface for type MonetaryCredit. func (m *MonetaryCredit) GetOfferTermInfoAutoGenerated() *OfferTermInfoAutoGenerated { return &OfferTermInfoAutoGenerated{ - Name: m.Name, EffectiveDate: m.EffectiveDate, + Name: m.Name, } } -// OfferTermInfoAutoGeneratedClassification provides polymorphic access to related types. -// Call the interface's GetOfferTermInfoAutoGenerated() method to access the common type. -// Use a type switch to determine the concrete type. The possible types are: -// - *MonetaryCommitment, *MonetaryCredit, *OfferTermInfoAutoGenerated, *RecurringCharge -type OfferTermInfoAutoGeneratedClassification interface { - // GetOfferTermInfoAutoGenerated returns the OfferTermInfoAutoGenerated content of the underlying type. - GetOfferTermInfoAutoGenerated() *OfferTermInfoAutoGenerated -} - // OfferTermInfoAutoGenerated - Describes the offer term. type OfferTermInfoAutoGenerated struct { // REQUIRED; Name of the offer term - Name *OfferTermInfo `json:"Name,omitempty"` + Name *OfferTermInfo // Indicates the date from which the offer term is effective. - EffectiveDate *time.Time `json:"EffectiveDate,omitempty"` + EffectiveDate *time.Time } // GetOfferTermInfoAutoGenerated implements the OfferTermInfoAutoGeneratedClassification interface for type OfferTermInfoAutoGenerated. @@ -131,141 +121,120 @@ func (o *OfferTermInfoAutoGenerated) GetOfferTermInfoAutoGenerated() *OfferTermI return o } -// RateCardClientGetOptions contains the optional parameters for the RateCardClient.Get method. -type RateCardClientGetOptions struct { - // placeholder for future optional parameters -} - // RateCardQueryParameters - Parameters that are used in the odata $filter query parameter for providing RateCard information. type RateCardQueryParameters struct { // REQUIRED; The currency in which the rates need to be provided. - Currency *string `json:"Currency,omitempty"` + Currency *string // REQUIRED; The culture in which the resource metadata needs to be localized. - Locale *string `json:"Locale,omitempty"` + Locale *string // REQUIRED; The Offer ID parameter consists of the 'MS-AZR-' prefix, plus the Offer ID number (e.g., MS-AZR-0026P). See https://azure.microsoft.com/en-us/support/legal/offer-details/ // for more information on the // list of available Offer IDs, country/region availability, and billing currency. - OfferDurableID *string `json:"OfferDurableId,omitempty"` + OfferDurableID *string // REQUIRED; 2 letter ISO code where the offer was purchased. - RegionInfo *string `json:"RegionInfo,omitempty"` + RegionInfo *string } // RecurringCharge - Indicates a recurring charge is present for this offer. type RecurringCharge struct { // REQUIRED; Name of the offer term - Name *OfferTermInfo `json:"Name,omitempty"` + Name *OfferTermInfo // Indicates the date from which the offer term is effective. - EffectiveDate *time.Time `json:"EffectiveDate,omitempty"` + EffectiveDate *time.Time // The amount of recurring charge as per the offer term. - RecurringCharge *int32 `json:"RecurringCharge,omitempty"` + RecurringCharge *int32 } // GetOfferTermInfoAutoGenerated implements the OfferTermInfoAutoGeneratedClassification interface for type RecurringCharge. func (r *RecurringCharge) GetOfferTermInfoAutoGenerated() *OfferTermInfoAutoGenerated { return &OfferTermInfoAutoGenerated{ - Name: r.Name, EffectiveDate: r.EffectiveDate, + Name: r.Name, } } // ResourceRateCardInfo - Price and Metadata information for resources type ResourceRateCardInfo struct { // The currency in which the rates are provided. - Currency *string `json:"Currency,omitempty"` + Currency *string // All rates are pretax, so this will always be returned as 'false'. - IsTaxIncluded *bool `json:"IsTaxIncluded,omitempty"` + IsTaxIncluded *bool // The culture in which the resource information is localized. - Locale *string `json:"Locale,omitempty"` + Locale *string // A list of meters. - Meters []*MeterInfo `json:"Meters,omitempty"` + Meters []*MeterInfo // A list of offer terms. - OfferTerms []OfferTermInfoAutoGeneratedClassification `json:"OfferTerms,omitempty"` -} - -// UsageAggregatesClientListOptions contains the optional parameters for the UsageAggregatesClient.NewListPager method. -type UsageAggregatesClientListOptions struct { - // Daily (default) returns the data in daily granularity, Hourly returns the data in hourly granularity. - AggregationGranularity *AggregationGranularity - // Used when a continuation token string is provided in the response body of the previous call, enabling paging through a - // large result set. If not present, the data is retrieved from the beginning of the - // day/hour (based on the granularity) passed in. - ContinuationToken *string - // True returns usage data in instance-level detail, false causes server-side aggregation with fewer details. For example, - // if you have 3 website instances, by default you will get 3 line items for - // website consumption. If you specify showDetails = false, the data will be aggregated as a single line item for website - // consumption within the time period (for the given subscriptionId, meterId, - // usageStartTime and usageEndTime). - ShowDetails *bool + OfferTerms []OfferTermInfoAutoGeneratedClassification } // UsageAggregation - Describes the usageAggregation. type UsageAggregation struct { // Unique Id for the usage aggregate. - ID *string `json:"id,omitempty"` + ID *string // Name of the usage aggregate. - Name *string `json:"name,omitempty"` + Name *string // Usage data. - Properties *UsageSample `json:"properties,omitempty"` + Properties *UsageSample // Type of the resource being returned. - Type *string `json:"type,omitempty"` + Type *string } // UsageAggregationListResult - The Get UsageAggregates operation response. type UsageAggregationListResult struct { // Gets or sets the link to the next set of results. - NextLink *string `json:"nextLink,omitempty"` + NextLink *string // Gets or sets details for the requested aggregation. - Value []*UsageAggregation `json:"value,omitempty"` + Value []*UsageAggregation } // UsageSample - Describes a sample of the usageAggregation. type UsageSample struct { // Key-value pairs of instance details (legacy format). - InfoFields *InfoField `json:"infoFields,omitempty"` + InfoFields *InfoField // Key-value pairs of instance details represented as a string. - InstanceData *string `json:"instanceData,omitempty"` + InstanceData *string // Category of the consumed resource. - MeterCategory *string `json:"meterCategory,omitempty"` + MeterCategory *string // Unique ID for the resource that was consumed (aka ResourceID). - MeterID *string `json:"meterId,omitempty"` + MeterID *string // Friendly name of the resource being consumed. - MeterName *string `json:"meterName,omitempty"` + MeterName *string // Region of the meterId used for billing purposes - MeterRegion *string `json:"meterRegion,omitempty"` + MeterRegion *string // Sub-category of the consumed resource. - MeterSubCategory *string `json:"meterSubCategory,omitempty"` + MeterSubCategory *string // The amount of the resource consumption that occurred in this time frame. - Quantity *float32 `json:"quantity,omitempty"` + Quantity *float32 // The subscription identifier for the Azure user. - SubscriptionID *string `json:"subscriptionId,omitempty"` + SubscriptionID *string // The unit in which the usage for this resource is being counted, e.g. Hours, GB. - Unit *string `json:"unit,omitempty"` + Unit *string // UTC end time for the usage bucket to which this usage aggregate belongs. - UsageEndTime *time.Time `json:"usageEndTime,omitempty"` + UsageEndTime *time.Time // UTC start time for the usage bucket to which this usage aggregate belongs. - UsageStartTime *time.Time `json:"usageStartTime,omitempty"` + UsageStartTime *time.Time } diff --git a/sdk/resourcemanager/commerce/armcommerce/models_serde.go b/sdk/resourcemanager/commerce/armcommerce/models_serde.go index c4c1a85465c7..1b3c5509a4a3 100644 --- a/sdk/resourcemanager/commerce/armcommerce/models_serde.go +++ b/sdk/resourcemanager/commerce/armcommerce/models_serde.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcommerce @@ -77,7 +76,7 @@ func (i *InfoField) UnmarshalJSON(data []byte) error { // MarshalJSON implements the json.Marshaller interface for type MeterInfo. func (m MeterInfo) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populateTimeRFC3339(objectMap, "EffectiveDate", m.EffectiveDate) + populateDateTimeRFC3339(objectMap, "EffectiveDate", m.EffectiveDate) populate(objectMap, "IncludedQuantity", m.IncludedQuantity) populate(objectMap, "MeterCategory", m.MeterCategory) populate(objectMap, "MeterId", m.MeterID) @@ -100,7 +99,7 @@ func (m *MeterInfo) UnmarshalJSON(data []byte) error { var err error switch key { case "EffectiveDate": - err = unpopulateTimeRFC3339(val, "EffectiveDate", &m.EffectiveDate) + err = unpopulateDateTimeRFC3339(val, "EffectiveDate", &m.EffectiveDate) delete(rawMsg, key) case "IncludedQuantity": err = unpopulate(val, "IncludedQuantity", &m.IncludedQuantity) @@ -140,7 +139,7 @@ func (m *MeterInfo) UnmarshalJSON(data []byte) error { // MarshalJSON implements the json.Marshaller interface for type MonetaryCommitment. func (m MonetaryCommitment) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populateTimeRFC3339(objectMap, "EffectiveDate", m.EffectiveDate) + populateDateTimeRFC3339(objectMap, "EffectiveDate", m.EffectiveDate) populate(objectMap, "ExcludedMeterIds", m.ExcludedMeterIDs) objectMap["Name"] = OfferTermInfoMonetaryCommitment populate(objectMap, "TieredDiscount", m.TieredDiscount) @@ -157,7 +156,7 @@ func (m *MonetaryCommitment) UnmarshalJSON(data []byte) error { var err error switch key { case "EffectiveDate": - err = unpopulateTimeRFC3339(val, "EffectiveDate", &m.EffectiveDate) + err = unpopulateDateTimeRFC3339(val, "EffectiveDate", &m.EffectiveDate) delete(rawMsg, key) case "ExcludedMeterIds": err = unpopulate(val, "ExcludedMeterIDs", &m.ExcludedMeterIDs) @@ -180,7 +179,7 @@ func (m *MonetaryCommitment) UnmarshalJSON(data []byte) error { func (m MonetaryCredit) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) populate(objectMap, "Credit", m.Credit) - populateTimeRFC3339(objectMap, "EffectiveDate", m.EffectiveDate) + populateDateTimeRFC3339(objectMap, "EffectiveDate", m.EffectiveDate) populate(objectMap, "ExcludedMeterIds", m.ExcludedMeterIDs) objectMap["Name"] = OfferTermInfoMonetaryCredit return json.Marshal(objectMap) @@ -199,7 +198,7 @@ func (m *MonetaryCredit) UnmarshalJSON(data []byte) error { err = unpopulate(val, "Credit", &m.Credit) delete(rawMsg, key) case "EffectiveDate": - err = unpopulateTimeRFC3339(val, "EffectiveDate", &m.EffectiveDate) + err = unpopulateDateTimeRFC3339(val, "EffectiveDate", &m.EffectiveDate) delete(rawMsg, key) case "ExcludedMeterIds": err = unpopulate(val, "ExcludedMeterIDs", &m.ExcludedMeterIDs) @@ -218,7 +217,7 @@ func (m *MonetaryCredit) UnmarshalJSON(data []byte) error { // MarshalJSON implements the json.Marshaller interface for type OfferTermInfoAutoGenerated. func (o OfferTermInfoAutoGenerated) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populateTimeRFC3339(objectMap, "EffectiveDate", o.EffectiveDate) + populateDateTimeRFC3339(objectMap, "EffectiveDate", o.EffectiveDate) objectMap["Name"] = o.Name return json.Marshal(objectMap) } @@ -233,7 +232,7 @@ func (o *OfferTermInfoAutoGenerated) UnmarshalJSON(data []byte) error { var err error switch key { case "EffectiveDate": - err = unpopulateTimeRFC3339(val, "EffectiveDate", &o.EffectiveDate) + err = unpopulateDateTimeRFC3339(val, "EffectiveDate", &o.EffectiveDate) delete(rawMsg, key) case "Name": err = unpopulate(val, "Name", &o.Name) @@ -288,7 +287,7 @@ func (r *RateCardQueryParameters) UnmarshalJSON(data []byte) error { // MarshalJSON implements the json.Marshaller interface for type RecurringCharge. func (r RecurringCharge) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populateTimeRFC3339(objectMap, "EffectiveDate", r.EffectiveDate) + populateDateTimeRFC3339(objectMap, "EffectiveDate", r.EffectiveDate) objectMap["Name"] = OfferTermInfoRecurringCharge populate(objectMap, "RecurringCharge", r.RecurringCharge) return json.Marshal(objectMap) @@ -304,7 +303,7 @@ func (r *RecurringCharge) UnmarshalJSON(data []byte) error { var err error switch key { case "EffectiveDate": - err = unpopulateTimeRFC3339(val, "EffectiveDate", &r.EffectiveDate) + err = unpopulateDateTimeRFC3339(val, "EffectiveDate", &r.EffectiveDate) delete(rawMsg, key) case "Name": err = unpopulate(val, "Name", &r.Name) @@ -446,8 +445,8 @@ func (u UsageSample) MarshalJSON() ([]byte, error) { populate(objectMap, "quantity", u.Quantity) populate(objectMap, "subscriptionId", u.SubscriptionID) populate(objectMap, "unit", u.Unit) - populateTimeRFC3339(objectMap, "usageEndTime", u.UsageEndTime) - populateTimeRFC3339(objectMap, "usageStartTime", u.UsageStartTime) + populateDateTimeRFC3339(objectMap, "usageEndTime", u.UsageEndTime) + populateDateTimeRFC3339(objectMap, "usageStartTime", u.UsageStartTime) return json.Marshal(objectMap) } @@ -491,10 +490,10 @@ func (u *UsageSample) UnmarshalJSON(data []byte) error { err = unpopulate(val, "Unit", &u.Unit) delete(rawMsg, key) case "usageEndTime": - err = unpopulateTimeRFC3339(val, "UsageEndTime", &u.UsageEndTime) + err = unpopulateDateTimeRFC3339(val, "UsageEndTime", &u.UsageEndTime) delete(rawMsg, key) case "usageStartTime": - err = unpopulateTimeRFC3339(val, "UsageStartTime", &u.UsageStartTime) + err = unpopulateDateTimeRFC3339(val, "UsageStartTime", &u.UsageStartTime) delete(rawMsg, key) } if err != nil { diff --git a/sdk/resourcemanager/commerce/armcommerce/options.go b/sdk/resourcemanager/commerce/armcommerce/options.go new file mode 100644 index 000000000000..5bcae5778f8d --- /dev/null +++ b/sdk/resourcemanager/commerce/armcommerce/options.go @@ -0,0 +1,32 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for license information. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. +// Changes may cause incorrect behavior and will be lost if the code is regenerated. + +package armcommerce + +// RateCardClientGetOptions contains the optional parameters for the RateCardClient.Get method. +type RateCardClientGetOptions struct { + // placeholder for future optional parameters +} + +// UsageAggregatesClientListOptions contains the optional parameters for the UsageAggregatesClient.NewListPager method. +type UsageAggregatesClientListOptions struct { + // Daily (default) returns the data in daily granularity, Hourly returns the data in hourly granularity. + AggregationGranularity *AggregationGranularity + + // Used when a continuation token string is provided in the response body of the previous call, enabling paging through a + // large result set. If not present, the data is retrieved from the beginning of the + // day/hour (based on the granularity) passed in. + ContinuationToken *string + + // True returns usage data in instance-level detail, false causes server-side aggregation with fewer details. For example, + // if you have 3 website instances, by default you will get 3 line items for + // website consumption. If you specify showDetails = false, the data will be aggregated as a single line item for website + // consumption within the time period (for the given subscriptionId, meterId, + // usageStartTime and usageEndTime). + ShowDetails *bool +} diff --git a/sdk/resourcemanager/commerce/armcommerce/polymorphic_helpers.go b/sdk/resourcemanager/commerce/armcommerce/polymorphic_helpers.go index 90a20987874b..5d603c926e6c 100644 --- a/sdk/resourcemanager/commerce/armcommerce/polymorphic_helpers.go +++ b/sdk/resourcemanager/commerce/armcommerce/polymorphic_helpers.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcommerce @@ -30,7 +29,10 @@ func unmarshalOfferTermInfoAutoGeneratedClassification(rawMsg json.RawMessage) ( default: b = &OfferTermInfoAutoGenerated{} } - return b, json.Unmarshal(rawMsg, b) + if err := json.Unmarshal(rawMsg, b); err != nil { + return nil, err + } + return b, nil } func unmarshalOfferTermInfoAutoGeneratedClassificationArray(rawMsg json.RawMessage) ([]OfferTermInfoAutoGeneratedClassification, error) { diff --git a/sdk/resourcemanager/commerce/armcommerce/ratecard_client.go b/sdk/resourcemanager/commerce/armcommerce/ratecard_client.go index ba9327daba52..638889df139b 100644 --- a/sdk/resourcemanager/commerce/armcommerce/ratecard_client.go +++ b/sdk/resourcemanager/commerce/armcommerce/ratecard_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcommerce @@ -34,7 +33,7 @@ type RateCardClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewRateCardClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*RateCardClient, error) { - cl, err := arm.NewClient(moduleName+".RateCardClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -60,18 +59,25 @@ func NewRateCardClient(subscriptionID string, credential azcore.TokenCredential, // a part of the $filter. // - options - RateCardClientGetOptions contains the optional parameters for the RateCardClient.Get method. func (client *RateCardClient) Get(ctx context.Context, filter string, options *RateCardClientGetOptions) (RateCardClientGetResponse, error) { + var err error + const operationName = "RateCardClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, filter, options) if err != nil { return RateCardClientGetResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) + httpResp, err := client.internal.Pipeline().Do(req) if err != nil { return RateCardClientGetResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return RateCardClientGetResponse{}, runtime.NewResponseError(resp) + if !runtime.HasStatusCode(httpResp, http.StatusOK) { + err = runtime.NewResponseError(httpResp) + return RateCardClientGetResponse{}, err } - return client.getHandleResponse(resp) + resp, err := client.getHandleResponse(httpResp) + return resp, err } // getCreateRequest creates the Get request. diff --git a/sdk/resourcemanager/commerce/armcommerce/ratecard_client_example_test.go b/sdk/resourcemanager/commerce/armcommerce/ratecard_client_example_test.go index afd7f0a2871f..6027e9801d29 100644 --- a/sdk/resourcemanager/commerce/armcommerce/ratecard_client_example_test.go +++ b/sdk/resourcemanager/commerce/armcommerce/ratecard_client_example_test.go @@ -38,7 +38,7 @@ func ExampleRateCardClient_Get() { // res.ResourceRateCardInfo = armcommerce.ResourceRateCardInfo{ // Meters: []*armcommerce.MeterInfo{ // { - // EffectiveDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2017-09-01T00:00:00Z"); return t}()), + // EffectiveDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2017-09-01T00:00:00.000Z"); return t}()), // IncludedQuantity: to.Ptr[float32](0), // MeterCategory: to.Ptr("Test Category"), // MeterID: to.Ptr("1d7518e5-bc2f-4a93-9057-1b3047856645"), diff --git a/sdk/resourcemanager/commerce/armcommerce/response_types.go b/sdk/resourcemanager/commerce/armcommerce/response_types.go index c7ead68605ae..a6e331e6503c 100644 --- a/sdk/resourcemanager/commerce/armcommerce/response_types.go +++ b/sdk/resourcemanager/commerce/armcommerce/response_types.go @@ -3,18 +3,19 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcommerce // RateCardClientGetResponse contains the response from method RateCardClient.Get. type RateCardClientGetResponse struct { + // Price and Metadata information for resources ResourceRateCardInfo } // UsageAggregatesClientListResponse contains the response from method UsageAggregatesClient.NewListPager. type UsageAggregatesClientListResponse struct { + // The Get UsageAggregates operation response. UsageAggregationListResult } diff --git a/sdk/resourcemanager/commerce/armcommerce/time_rfc3339.go b/sdk/resourcemanager/commerce/armcommerce/time_rfc3339.go index a0a3c173ba59..97ed9aa6ada8 100644 --- a/sdk/resourcemanager/commerce/armcommerce/time_rfc3339.go +++ b/sdk/resourcemanager/commerce/armcommerce/time_rfc3339.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcommerce @@ -19,50 +18,50 @@ import ( "time" ) -const ( - utcLayoutJSON = `"2006-01-02T15:04:05.999999999"` - utcLayout = "2006-01-02T15:04:05.999999999" - rfc3339JSON = `"` + time.RFC3339Nano + `"` -) - // Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases. var tzOffsetRegex = regexp.MustCompile(`(Z|z|\+|-)(\d+:\d+)*"*$`) -type timeRFC3339 time.Time +const ( + utcDateTimeJSON = `"2006-01-02T15:04:05.999999999"` + utcDateTime = "2006-01-02T15:04:05.999999999" + dateTimeJSON = `"` + time.RFC3339Nano + `"` +) + +type dateTimeRFC3339 time.Time -func (t timeRFC3339) MarshalJSON() (json []byte, err error) { +func (t dateTimeRFC3339) MarshalJSON() ([]byte, error) { tt := time.Time(t) return tt.MarshalJSON() } -func (t timeRFC3339) MarshalText() (text []byte, err error) { +func (t dateTimeRFC3339) MarshalText() ([]byte, error) { tt := time.Time(t) return tt.MarshalText() } -func (t *timeRFC3339) UnmarshalJSON(data []byte) error { - layout := utcLayoutJSON +func (t *dateTimeRFC3339) UnmarshalJSON(data []byte) error { + layout := utcDateTimeJSON if tzOffsetRegex.Match(data) { - layout = rfc3339JSON + layout = dateTimeJSON } return t.Parse(layout, string(data)) } -func (t *timeRFC3339) UnmarshalText(data []byte) (err error) { - layout := utcLayout +func (t *dateTimeRFC3339) UnmarshalText(data []byte) error { + layout := utcDateTime if tzOffsetRegex.Match(data) { layout = time.RFC3339Nano } return t.Parse(layout, string(data)) } -func (t *timeRFC3339) Parse(layout, value string) error { +func (t *dateTimeRFC3339) Parse(layout, value string) error { p, err := time.Parse(layout, strings.ToUpper(value)) - *t = timeRFC3339(p) + *t = dateTimeRFC3339(p) return err } -func populateTimeRFC3339(m map[string]any, k string, t *time.Time) { +func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) { if t == nil { return } else if azcore.IsNullValue(t) { @@ -71,14 +70,14 @@ func populateTimeRFC3339(m map[string]any, k string, t *time.Time) { } else if reflect.ValueOf(t).IsNil() { return } - m[k] = (*timeRFC3339)(t) + m[k] = (*dateTimeRFC3339)(t) } -func unpopulateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { +func unpopulateDateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { if data == nil || strings.EqualFold(string(data), "null") { return nil } - var aux timeRFC3339 + var aux dateTimeRFC3339 if err := json.Unmarshal(data, &aux); err != nil { return fmt.Errorf("struct field %s: %v", fn, err) } diff --git a/sdk/resourcemanager/commerce/armcommerce/usageaggregates_client.go b/sdk/resourcemanager/commerce/armcommerce/usageaggregates_client.go index 0491ef8f5f32..6acaba014bb4 100644 --- a/sdk/resourcemanager/commerce/armcommerce/usageaggregates_client.go +++ b/sdk/resourcemanager/commerce/armcommerce/usageaggregates_client.go @@ -3,9 +3,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. See License.txt in the project root for license information. -// Code generated by Microsoft (R) AutoRest Code Generator. +// Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. // Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. package armcommerce @@ -36,7 +35,7 @@ type UsageAggregatesClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewUsageAggregatesClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*UsageAggregatesClient, error) { - cl, err := arm.NewClient(moduleName+".UsageAggregatesClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -60,25 +59,20 @@ func (client *UsageAggregatesClient) NewListPager(reportedStartTime time.Time, r return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *UsageAggregatesClientListResponse) (UsageAggregatesClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, reportedStartTime, reportedEndTime, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "UsageAggregatesClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, reportedStartTime, reportedEndTime, options) + }, nil) if err != nil { return UsageAggregatesClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return UsageAggregatesClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return UsageAggregatesClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } From 7e8843ad6bf3e813124ac6ad362b4fa611e89d45 Mon Sep 17 00:00:00 2001 From: Alancere <804873052@qq.com> Date: Tue, 21 Nov 2023 16:12:42 +0800 Subject: [PATCH 10/10] [Release] sdk/resourcemanager/connectedvmware/armconnectedvmware/1.1.0 generation from spec commit: 164375e67a1bffb207bcf603772c289dbe42d7b5 --- .../armconnectedvmware/CHANGELOG.md | 6 + .../armconnectedvmware/README.md | 7 + .../armconnectedvmware/autorest.md | 2 +- .../armconnectedvmware/client_factory.go | 14 +- .../armconnectedvmware/clusters_client.go | 73 +-- .../armconnectedvmware/constants.go | 4 +- .../armconnectedvmware/datastores_client.go | 73 +-- .../fake/clusters_server.go | 365 +++++++++++++ .../fake/datastores_server.go | 365 +++++++++++++ .../armconnectedvmware/fake/hosts_server.go | 365 +++++++++++++ .../armconnectedvmware/fake/internal.go | 84 +++ .../fake/inventoryitems_server.go | 255 +++++++++ .../fake/operations_server.go | 105 ++++ .../fake/resourcepools_server.go | 365 +++++++++++++ .../armconnectedvmware/fake/server_factory.go | 153 ++++++ .../armconnectedvmware/fake/time_rfc3339.go | 95 ++++ .../fake/vcenters_server.go | 365 +++++++++++++ .../fake/virtualmachineinstances_server.go | 485 ++++++++++++++++++ .../fake/virtualmachinetemplates_server.go | 365 +++++++++++++ .../fake/virtualnetworks_server.go | 365 +++++++++++++ .../fake/vminstanceguestagents_server.go | 253 +++++++++ ...vminstancehybrididentitymetadata_server.go | 153 ++++++ .../connectedvmware/armconnectedvmware/go.mod | 16 +- .../connectedvmware/armconnectedvmware/go.sum | 34 +- .../armconnectedvmware/hosts_client.go | 73 +-- .../inventoryitems_client.go | 35 +- .../armconnectedvmware/models_serde.go | 12 +- .../armconnectedvmware/operations_client.go | 23 +- .../resourcepools_client.go | 73 +-- .../armconnectedvmware/time_rfc3339.go | 40 +- .../armconnectedvmware/vcenters_client.go | 73 +-- .../virtualmachineinstances_client.go | 81 ++- .../virtualmachinetemplates_client.go | 73 +-- .../virtualnetworks_client.go | 73 +-- .../vminstanceguestagents_client.go | 48 +- ...vminstancehybrididentitymetadata_client.go | 27 +- 36 files changed, 4654 insertions(+), 344 deletions(-) create mode 100644 sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/clusters_server.go create mode 100644 sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/datastores_server.go create mode 100644 sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/hosts_server.go create mode 100644 sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/internal.go create mode 100644 sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/inventoryitems_server.go create mode 100644 sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/operations_server.go create mode 100644 sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/resourcepools_server.go create mode 100644 sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/server_factory.go create mode 100644 sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/time_rfc3339.go create mode 100644 sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/vcenters_server.go create mode 100644 sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/virtualmachineinstances_server.go create mode 100644 sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/virtualmachinetemplates_server.go create mode 100644 sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/virtualnetworks_server.go create mode 100644 sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/vminstanceguestagents_server.go create mode 100644 sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/vminstancehybrididentitymetadata_server.go diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/CHANGELOG.md b/sdk/resourcemanager/connectedvmware/armconnectedvmware/CHANGELOG.md index 133e2bd854dd..674e1555f066 100644 --- a/sdk/resourcemanager/connectedvmware/armconnectedvmware/CHANGELOG.md +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/CHANGELOG.md @@ -1,5 +1,11 @@ # Release History +## 1.1.0 (2023-11-24) +### Features Added + +- Support for test fakes and OpenTelemetry trace spans. + + ## 1.0.0 (2023-10-27) ### Breaking Changes diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/README.md b/sdk/resourcemanager/connectedvmware/armconnectedvmware/README.md index 09a8e4d39f47..c5f65a29c7fb 100644 --- a/sdk/resourcemanager/connectedvmware/armconnectedvmware/README.md +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/README.md @@ -60,6 +60,13 @@ A client groups a set of related APIs, providing access to its functionality. C client := clientFactory.NewVirtualMachinesClient() ``` +## Fakes + +The fake package contains types used for constructing in-memory fake servers used in unit tests. +This allows writing tests to cover various success/error conditions without the need for connecting to a live service. + +Please see https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/samples/fakes for details and examples on how to use fakes. + ## Provide Feedback If you encounter bugs or have suggestions, please diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/autorest.md b/sdk/resourcemanager/connectedvmware/armconnectedvmware/autorest.md index e9b43bf16b39..c17ddd5982cb 100644 --- a/sdk/resourcemanager/connectedvmware/armconnectedvmware/autorest.md +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/autorest.md @@ -8,6 +8,6 @@ require: - https://github.com/Azure/azure-rest-api-specs/blob/3066a973f4baf2e2bf072a013b585a820bb10146/specification/connectedvmware/resource-manager/readme.md - https://github.com/Azure/azure-rest-api-specs/blob/3066a973f4baf2e2bf072a013b585a820bb10146/specification/connectedvmware/resource-manager/readme.go.md license-header: MICROSOFT_MIT_NO_VERSION -module-version: 1.0.0 +module-version: 1.1.0 tag: package-2023-10 ``` \ No newline at end of file diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/client_factory.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/client_factory.go index b22508302f60..4f6622afb665 100644 --- a/sdk/resourcemanager/connectedvmware/armconnectedvmware/client_factory.go +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/client_factory.go @@ -36,7 +36,7 @@ type ClientFactory struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewClientFactory(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*ClientFactory, error) { - _, err := arm.NewClient(moduleName+".ClientFactory", moduleVersion, credential, options) + _, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -46,61 +46,73 @@ func NewClientFactory(subscriptionID string, credential azcore.TokenCredential, }, nil } +// NewClustersClient creates a new instance of ClustersClient. func (c *ClientFactory) NewClustersClient() *ClustersClient { subClient, _ := NewClustersClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewDatastoresClient creates a new instance of DatastoresClient. func (c *ClientFactory) NewDatastoresClient() *DatastoresClient { subClient, _ := NewDatastoresClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewHostsClient creates a new instance of HostsClient. func (c *ClientFactory) NewHostsClient() *HostsClient { subClient, _ := NewHostsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewInventoryItemsClient creates a new instance of InventoryItemsClient. func (c *ClientFactory) NewInventoryItemsClient() *InventoryItemsClient { subClient, _ := NewInventoryItemsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewOperationsClient creates a new instance of OperationsClient. func (c *ClientFactory) NewOperationsClient() *OperationsClient { subClient, _ := NewOperationsClient(c.credential, c.options) return subClient } +// NewResourcePoolsClient creates a new instance of ResourcePoolsClient. func (c *ClientFactory) NewResourcePoolsClient() *ResourcePoolsClient { subClient, _ := NewResourcePoolsClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewVCentersClient creates a new instance of VCentersClient. func (c *ClientFactory) NewVCentersClient() *VCentersClient { subClient, _ := NewVCentersClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewVMInstanceGuestAgentsClient creates a new instance of VMInstanceGuestAgentsClient. func (c *ClientFactory) NewVMInstanceGuestAgentsClient() *VMInstanceGuestAgentsClient { subClient, _ := NewVMInstanceGuestAgentsClient(c.credential, c.options) return subClient } +// NewVMInstanceHybridIdentityMetadataClient creates a new instance of VMInstanceHybridIdentityMetadataClient. func (c *ClientFactory) NewVMInstanceHybridIdentityMetadataClient() *VMInstanceHybridIdentityMetadataClient { subClient, _ := NewVMInstanceHybridIdentityMetadataClient(c.credential, c.options) return subClient } +// NewVirtualMachineInstancesClient creates a new instance of VirtualMachineInstancesClient. func (c *ClientFactory) NewVirtualMachineInstancesClient() *VirtualMachineInstancesClient { subClient, _ := NewVirtualMachineInstancesClient(c.credential, c.options) return subClient } +// NewVirtualMachineTemplatesClient creates a new instance of VirtualMachineTemplatesClient. func (c *ClientFactory) NewVirtualMachineTemplatesClient() *VirtualMachineTemplatesClient { subClient, _ := NewVirtualMachineTemplatesClient(c.subscriptionID, c.credential, c.options) return subClient } +// NewVirtualNetworksClient creates a new instance of VirtualNetworksClient. func (c *ClientFactory) NewVirtualNetworksClient() *VirtualNetworksClient { subClient, _ := NewVirtualNetworksClient(c.subscriptionID, c.credential, c.options) return subClient diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/clusters_client.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/clusters_client.go index fd0805fc9968..8662d974950a 100644 --- a/sdk/resourcemanager/connectedvmware/armconnectedvmware/clusters_client.go +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/clusters_client.go @@ -42,7 +42,7 @@ type ClustersClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewClustersClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*ClustersClient, error) { - cl, err := arm.NewClient(moduleName+".ClustersClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -69,10 +69,13 @@ func (client *ClustersClient) BeginCreate(ctx context.Context, resourceGroupName } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[ClustersClientCreateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[ClustersClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[ClustersClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -82,6 +85,10 @@ func (client *ClustersClient) BeginCreate(ctx context.Context, resourceGroupName // Generated from API version 2023-10-01 func (client *ClustersClient) create(ctx context.Context, resourceGroupName string, clusterName string, body Cluster, options *ClustersClientBeginCreateOptions) (*http.Response, error) { var err error + const operationName = "ClustersClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, clusterName, body, options) if err != nil { return nil, err @@ -139,10 +146,14 @@ func (client *ClustersClient) BeginDelete(ctx context.Context, resourceGroupName if err != nil { return nil, err } - poller, err := runtime.NewPoller[ClustersClientDeleteResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[ClustersClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[ClustersClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[ClustersClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -152,6 +163,10 @@ func (client *ClustersClient) BeginDelete(ctx context.Context, resourceGroupName // Generated from API version 2023-10-01 func (client *ClustersClient) deleteOperation(ctx context.Context, resourceGroupName string, clusterName string, options *ClustersClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "ClustersClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, clusterName, options) if err != nil { return nil, err @@ -205,6 +220,10 @@ func (client *ClustersClient) deleteCreateRequest(ctx context.Context, resourceG // - options - ClustersClientGetOptions contains the optional parameters for the ClustersClient.Get method. func (client *ClustersClient) Get(ctx context.Context, resourceGroupName string, clusterName string, options *ClustersClientGetOptions) (ClustersClientGetResponse, error) { var err error + const operationName = "ClustersClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, clusterName, options) if err != nil { return ClustersClientGetResponse{}, err @@ -266,25 +285,20 @@ func (client *ClustersClient) NewListPager(options *ClustersClientListOptions) * return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ClustersClientListResponse) (ClustersClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return ClustersClientListResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ClustersClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return ClustersClientListResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ClustersClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -327,25 +341,20 @@ func (client *ClustersClient) NewListByResourceGroupPager(resourceGroupName stri return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ClustersClientListByResourceGroupResponse) (ClustersClientListByResourceGroupResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByResourceGroupCreateRequest(ctx, resourceGroupName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ClustersClient.NewListByResourceGroupPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByResourceGroupCreateRequest(ctx, resourceGroupName, options) + }, nil) if err != nil { return ClustersClientListByResourceGroupResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return ClustersClientListByResourceGroupResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ClustersClientListByResourceGroupResponse{}, runtime.NewResponseError(resp) - } return client.listByResourceGroupHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -390,6 +399,10 @@ func (client *ClustersClient) listByResourceGroupHandleResponse(resp *http.Respo // - options - ClustersClientUpdateOptions contains the optional parameters for the ClustersClient.Update method. func (client *ClustersClient) Update(ctx context.Context, resourceGroupName string, clusterName string, body ResourcePatch, options *ClustersClientUpdateOptions) (ClustersClientUpdateResponse, error) { var err error + const operationName = "ClustersClient.Update" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceGroupName, clusterName, body, options) if err != nil { return ClustersClientUpdateResponse{}, err diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/constants.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/constants.go index 15e80280836d..6fb88299ea80 100644 --- a/sdk/resourcemanager/connectedvmware/armconnectedvmware/constants.go +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/constants.go @@ -18,8 +18,8 @@ package armconnectedvmware const ( - moduleName = "armconnectedvmware" - moduleVersion = "v1.0.0" + moduleName = "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/connectedvmware/armconnectedvmware" + moduleVersion = "v1.1.0" ) // CreatedByType - The type of identity that created the resource. diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/datastores_client.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/datastores_client.go index 08511095f13e..dba800742896 100644 --- a/sdk/resourcemanager/connectedvmware/armconnectedvmware/datastores_client.go +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/datastores_client.go @@ -42,7 +42,7 @@ type DatastoresClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewDatastoresClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*DatastoresClient, error) { - cl, err := arm.NewClient(moduleName+".DatastoresClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -69,10 +69,13 @@ func (client *DatastoresClient) BeginCreate(ctx context.Context, resourceGroupNa } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[DatastoresClientCreateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[DatastoresClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[DatastoresClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -82,6 +85,10 @@ func (client *DatastoresClient) BeginCreate(ctx context.Context, resourceGroupNa // Generated from API version 2023-10-01 func (client *DatastoresClient) create(ctx context.Context, resourceGroupName string, datastoreName string, body Datastore, options *DatastoresClientBeginCreateOptions) (*http.Response, error) { var err error + const operationName = "DatastoresClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, datastoreName, body, options) if err != nil { return nil, err @@ -139,10 +146,14 @@ func (client *DatastoresClient) BeginDelete(ctx context.Context, resourceGroupNa if err != nil { return nil, err } - poller, err := runtime.NewPoller[DatastoresClientDeleteResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[DatastoresClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[DatastoresClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[DatastoresClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -152,6 +163,10 @@ func (client *DatastoresClient) BeginDelete(ctx context.Context, resourceGroupNa // Generated from API version 2023-10-01 func (client *DatastoresClient) deleteOperation(ctx context.Context, resourceGroupName string, datastoreName string, options *DatastoresClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "DatastoresClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, datastoreName, options) if err != nil { return nil, err @@ -205,6 +220,10 @@ func (client *DatastoresClient) deleteCreateRequest(ctx context.Context, resourc // - options - DatastoresClientGetOptions contains the optional parameters for the DatastoresClient.Get method. func (client *DatastoresClient) Get(ctx context.Context, resourceGroupName string, datastoreName string, options *DatastoresClientGetOptions) (DatastoresClientGetResponse, error) { var err error + const operationName = "DatastoresClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, datastoreName, options) if err != nil { return DatastoresClientGetResponse{}, err @@ -266,25 +285,20 @@ func (client *DatastoresClient) NewListPager(options *DatastoresClientListOption return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *DatastoresClientListResponse) (DatastoresClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return DatastoresClientListResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "DatastoresClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return DatastoresClientListResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return DatastoresClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -327,25 +341,20 @@ func (client *DatastoresClient) NewListByResourceGroupPager(resourceGroupName st return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *DatastoresClientListByResourceGroupResponse) (DatastoresClientListByResourceGroupResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByResourceGroupCreateRequest(ctx, resourceGroupName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "DatastoresClient.NewListByResourceGroupPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByResourceGroupCreateRequest(ctx, resourceGroupName, options) + }, nil) if err != nil { return DatastoresClientListByResourceGroupResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return DatastoresClientListByResourceGroupResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return DatastoresClientListByResourceGroupResponse{}, runtime.NewResponseError(resp) - } return client.listByResourceGroupHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -390,6 +399,10 @@ func (client *DatastoresClient) listByResourceGroupHandleResponse(resp *http.Res // - options - DatastoresClientUpdateOptions contains the optional parameters for the DatastoresClient.Update method. func (client *DatastoresClient) Update(ctx context.Context, resourceGroupName string, datastoreName string, body ResourcePatch, options *DatastoresClientUpdateOptions) (DatastoresClientUpdateResponse, error) { var err error + const operationName = "DatastoresClient.Update" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceGroupName, datastoreName, body, options) if err != nil { return DatastoresClientUpdateResponse{}, err diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/clusters_server.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/clusters_server.go new file mode 100644 index 000000000000..92f7102f5d69 --- /dev/null +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/clusters_server.go @@ -0,0 +1,365 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// Code generated by Microsoft (R) AutoRest Code Generator.Changes may cause incorrect behavior and will be lost if the code +// is regenerated. +// Code generated by @autorest/go. DO NOT EDIT. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/connectedvmware/armconnectedvmware" + "net/http" + "net/url" + "regexp" + "strconv" +) + +// ClustersServer is a fake server for instances of the armconnectedvmware.ClustersClient type. +type ClustersServer struct { + // BeginCreate is the fake for method ClustersClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + BeginCreate func(ctx context.Context, resourceGroupName string, clusterName string, body armconnectedvmware.Cluster, options *armconnectedvmware.ClustersClientBeginCreateOptions) (resp azfake.PollerResponder[armconnectedvmware.ClustersClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method ClustersClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, clusterName string, options *armconnectedvmware.ClustersClientBeginDeleteOptions) (resp azfake.PollerResponder[armconnectedvmware.ClustersClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method ClustersClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, clusterName string, options *armconnectedvmware.ClustersClientGetOptions) (resp azfake.Responder[armconnectedvmware.ClustersClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method ClustersClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armconnectedvmware.ClustersClientListOptions) (resp azfake.PagerResponder[armconnectedvmware.ClustersClientListResponse]) + + // NewListByResourceGroupPager is the fake for method ClustersClient.NewListByResourceGroupPager + // HTTP status codes to indicate success: http.StatusOK + NewListByResourceGroupPager func(resourceGroupName string, options *armconnectedvmware.ClustersClientListByResourceGroupOptions) (resp azfake.PagerResponder[armconnectedvmware.ClustersClientListByResourceGroupResponse]) + + // Update is the fake for method ClustersClient.Update + // HTTP status codes to indicate success: http.StatusOK + Update func(ctx context.Context, resourceGroupName string, clusterName string, body armconnectedvmware.ResourcePatch, options *armconnectedvmware.ClustersClientUpdateOptions) (resp azfake.Responder[armconnectedvmware.ClustersClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewClustersServerTransport creates a new instance of ClustersServerTransport with the provided implementation. +// The returned ClustersServerTransport instance is connected to an instance of armconnectedvmware.ClustersClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewClustersServerTransport(srv *ClustersServer) *ClustersServerTransport { + return &ClustersServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armconnectedvmware.ClustersClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armconnectedvmware.ClustersClientDeleteResponse]](), + newListPager: newTracker[azfake.PagerResponder[armconnectedvmware.ClustersClientListResponse]](), + newListByResourceGroupPager: newTracker[azfake.PagerResponder[armconnectedvmware.ClustersClientListByResourceGroupResponse]](), + } +} + +// ClustersServerTransport connects instances of armconnectedvmware.ClustersClient to instances of ClustersServer. +// Don't use this type directly, use NewClustersServerTransport instead. +type ClustersServerTransport struct { + srv *ClustersServer + beginCreate *tracker[azfake.PollerResponder[armconnectedvmware.ClustersClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armconnectedvmware.ClustersClientDeleteResponse]] + newListPager *tracker[azfake.PagerResponder[armconnectedvmware.ClustersClientListResponse]] + newListByResourceGroupPager *tracker[azfake.PagerResponder[armconnectedvmware.ClustersClientListByResourceGroupResponse]] +} + +// Do implements the policy.Transporter interface for ClustersServerTransport. +func (c *ClustersServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "ClustersClient.BeginCreate": + resp, err = c.dispatchBeginCreate(req) + case "ClustersClient.BeginDelete": + resp, err = c.dispatchBeginDelete(req) + case "ClustersClient.Get": + resp, err = c.dispatchGet(req) + case "ClustersClient.NewListPager": + resp, err = c.dispatchNewListPager(req) + case "ClustersClient.NewListByResourceGroupPager": + resp, err = c.dispatchNewListByResourceGroupPager(req) + case "ClustersClient.Update": + resp, err = c.dispatchUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (c *ClustersServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if c.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := c.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/clusters/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armconnectedvmware.Cluster](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + clusterNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("clusterName")]) + if err != nil { + return nil, err + } + respr, errRespr := c.srv.BeginCreate(req.Context(), resourceGroupNameParam, clusterNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + c.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated}, resp.StatusCode) { + c.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + c.beginCreate.remove(req) + } + + return resp, nil +} + +func (c *ClustersServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if c.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := c.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/clusters/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + clusterNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("clusterName")]) + if err != nil { + return nil, err + } + forceUnescaped, err := url.QueryUnescape(qp.Get("force")) + if err != nil { + return nil, err + } + forceParam, err := parseOptional(forceUnescaped, strconv.ParseBool) + if err != nil { + return nil, err + } + var options *armconnectedvmware.ClustersClientBeginDeleteOptions + if forceParam != nil { + options = &armconnectedvmware.ClustersClientBeginDeleteOptions{ + Force: forceParam, + } + } + respr, errRespr := c.srv.BeginDelete(req.Context(), resourceGroupNameParam, clusterNameParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + c.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + c.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + c.beginDelete.remove(req) + } + + return resp, nil +} + +func (c *ClustersServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if c.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/clusters/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + clusterNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("clusterName")]) + if err != nil { + return nil, err + } + respr, errRespr := c.srv.Get(req.Context(), resourceGroupNameParam, clusterNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Cluster, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (c *ClustersServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if c.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := c.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/clusters` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resp := c.srv.NewListPager(nil) + newListPager = &resp + c.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armconnectedvmware.ClustersClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + c.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + c.newListPager.remove(req) + } + return resp, nil +} + +func (c *ClustersServerTransport) dispatchNewListByResourceGroupPager(req *http.Request) (*http.Response, error) { + if c.srv.NewListByResourceGroupPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByResourceGroupPager not implemented")} + } + newListByResourceGroupPager := c.newListByResourceGroupPager.get(req) + if newListByResourceGroupPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/clusters` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resp := c.srv.NewListByResourceGroupPager(resourceGroupNameParam, nil) + newListByResourceGroupPager = &resp + c.newListByResourceGroupPager.add(req, newListByResourceGroupPager) + server.PagerResponderInjectNextLinks(newListByResourceGroupPager, req, func(page *armconnectedvmware.ClustersClientListByResourceGroupResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByResourceGroupPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + c.newListByResourceGroupPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByResourceGroupPager) { + c.newListByResourceGroupPager.remove(req) + } + return resp, nil +} + +func (c *ClustersServerTransport) dispatchUpdate(req *http.Request) (*http.Response, error) { + if c.srv.Update == nil { + return nil, &nonRetriableError{errors.New("fake for method Update not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/clusters/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armconnectedvmware.ResourcePatch](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + clusterNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("clusterName")]) + if err != nil { + return nil, err + } + respr, errRespr := c.srv.Update(req.Context(), resourceGroupNameParam, clusterNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Cluster, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/datastores_server.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/datastores_server.go new file mode 100644 index 000000000000..d6f8974ca70e --- /dev/null +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/datastores_server.go @@ -0,0 +1,365 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// Code generated by Microsoft (R) AutoRest Code Generator.Changes may cause incorrect behavior and will be lost if the code +// is regenerated. +// Code generated by @autorest/go. DO NOT EDIT. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/connectedvmware/armconnectedvmware" + "net/http" + "net/url" + "regexp" + "strconv" +) + +// DatastoresServer is a fake server for instances of the armconnectedvmware.DatastoresClient type. +type DatastoresServer struct { + // BeginCreate is the fake for method DatastoresClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + BeginCreate func(ctx context.Context, resourceGroupName string, datastoreName string, body armconnectedvmware.Datastore, options *armconnectedvmware.DatastoresClientBeginCreateOptions) (resp azfake.PollerResponder[armconnectedvmware.DatastoresClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method DatastoresClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, datastoreName string, options *armconnectedvmware.DatastoresClientBeginDeleteOptions) (resp azfake.PollerResponder[armconnectedvmware.DatastoresClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method DatastoresClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, datastoreName string, options *armconnectedvmware.DatastoresClientGetOptions) (resp azfake.Responder[armconnectedvmware.DatastoresClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method DatastoresClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armconnectedvmware.DatastoresClientListOptions) (resp azfake.PagerResponder[armconnectedvmware.DatastoresClientListResponse]) + + // NewListByResourceGroupPager is the fake for method DatastoresClient.NewListByResourceGroupPager + // HTTP status codes to indicate success: http.StatusOK + NewListByResourceGroupPager func(resourceGroupName string, options *armconnectedvmware.DatastoresClientListByResourceGroupOptions) (resp azfake.PagerResponder[armconnectedvmware.DatastoresClientListByResourceGroupResponse]) + + // Update is the fake for method DatastoresClient.Update + // HTTP status codes to indicate success: http.StatusOK + Update func(ctx context.Context, resourceGroupName string, datastoreName string, body armconnectedvmware.ResourcePatch, options *armconnectedvmware.DatastoresClientUpdateOptions) (resp azfake.Responder[armconnectedvmware.DatastoresClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewDatastoresServerTransport creates a new instance of DatastoresServerTransport with the provided implementation. +// The returned DatastoresServerTransport instance is connected to an instance of armconnectedvmware.DatastoresClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewDatastoresServerTransport(srv *DatastoresServer) *DatastoresServerTransport { + return &DatastoresServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armconnectedvmware.DatastoresClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armconnectedvmware.DatastoresClientDeleteResponse]](), + newListPager: newTracker[azfake.PagerResponder[armconnectedvmware.DatastoresClientListResponse]](), + newListByResourceGroupPager: newTracker[azfake.PagerResponder[armconnectedvmware.DatastoresClientListByResourceGroupResponse]](), + } +} + +// DatastoresServerTransport connects instances of armconnectedvmware.DatastoresClient to instances of DatastoresServer. +// Don't use this type directly, use NewDatastoresServerTransport instead. +type DatastoresServerTransport struct { + srv *DatastoresServer + beginCreate *tracker[azfake.PollerResponder[armconnectedvmware.DatastoresClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armconnectedvmware.DatastoresClientDeleteResponse]] + newListPager *tracker[azfake.PagerResponder[armconnectedvmware.DatastoresClientListResponse]] + newListByResourceGroupPager *tracker[azfake.PagerResponder[armconnectedvmware.DatastoresClientListByResourceGroupResponse]] +} + +// Do implements the policy.Transporter interface for DatastoresServerTransport. +func (d *DatastoresServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "DatastoresClient.BeginCreate": + resp, err = d.dispatchBeginCreate(req) + case "DatastoresClient.BeginDelete": + resp, err = d.dispatchBeginDelete(req) + case "DatastoresClient.Get": + resp, err = d.dispatchGet(req) + case "DatastoresClient.NewListPager": + resp, err = d.dispatchNewListPager(req) + case "DatastoresClient.NewListByResourceGroupPager": + resp, err = d.dispatchNewListByResourceGroupPager(req) + case "DatastoresClient.Update": + resp, err = d.dispatchUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (d *DatastoresServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if d.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := d.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/datastores/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armconnectedvmware.Datastore](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + datastoreNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("datastoreName")]) + if err != nil { + return nil, err + } + respr, errRespr := d.srv.BeginCreate(req.Context(), resourceGroupNameParam, datastoreNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + d.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated}, resp.StatusCode) { + d.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + d.beginCreate.remove(req) + } + + return resp, nil +} + +func (d *DatastoresServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if d.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := d.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/datastores/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + datastoreNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("datastoreName")]) + if err != nil { + return nil, err + } + forceUnescaped, err := url.QueryUnescape(qp.Get("force")) + if err != nil { + return nil, err + } + forceParam, err := parseOptional(forceUnescaped, strconv.ParseBool) + if err != nil { + return nil, err + } + var options *armconnectedvmware.DatastoresClientBeginDeleteOptions + if forceParam != nil { + options = &armconnectedvmware.DatastoresClientBeginDeleteOptions{ + Force: forceParam, + } + } + respr, errRespr := d.srv.BeginDelete(req.Context(), resourceGroupNameParam, datastoreNameParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + d.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + d.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + d.beginDelete.remove(req) + } + + return resp, nil +} + +func (d *DatastoresServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if d.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/datastores/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + datastoreNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("datastoreName")]) + if err != nil { + return nil, err + } + respr, errRespr := d.srv.Get(req.Context(), resourceGroupNameParam, datastoreNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Datastore, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (d *DatastoresServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if d.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := d.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/datastores` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resp := d.srv.NewListPager(nil) + newListPager = &resp + d.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armconnectedvmware.DatastoresClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + d.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + d.newListPager.remove(req) + } + return resp, nil +} + +func (d *DatastoresServerTransport) dispatchNewListByResourceGroupPager(req *http.Request) (*http.Response, error) { + if d.srv.NewListByResourceGroupPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByResourceGroupPager not implemented")} + } + newListByResourceGroupPager := d.newListByResourceGroupPager.get(req) + if newListByResourceGroupPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/datastores` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resp := d.srv.NewListByResourceGroupPager(resourceGroupNameParam, nil) + newListByResourceGroupPager = &resp + d.newListByResourceGroupPager.add(req, newListByResourceGroupPager) + server.PagerResponderInjectNextLinks(newListByResourceGroupPager, req, func(page *armconnectedvmware.DatastoresClientListByResourceGroupResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByResourceGroupPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + d.newListByResourceGroupPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByResourceGroupPager) { + d.newListByResourceGroupPager.remove(req) + } + return resp, nil +} + +func (d *DatastoresServerTransport) dispatchUpdate(req *http.Request) (*http.Response, error) { + if d.srv.Update == nil { + return nil, &nonRetriableError{errors.New("fake for method Update not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/datastores/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armconnectedvmware.ResourcePatch](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + datastoreNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("datastoreName")]) + if err != nil { + return nil, err + } + respr, errRespr := d.srv.Update(req.Context(), resourceGroupNameParam, datastoreNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Datastore, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/hosts_server.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/hosts_server.go new file mode 100644 index 000000000000..945c90000d39 --- /dev/null +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/hosts_server.go @@ -0,0 +1,365 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// Code generated by Microsoft (R) AutoRest Code Generator.Changes may cause incorrect behavior and will be lost if the code +// is regenerated. +// Code generated by @autorest/go. DO NOT EDIT. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/connectedvmware/armconnectedvmware" + "net/http" + "net/url" + "regexp" + "strconv" +) + +// HostsServer is a fake server for instances of the armconnectedvmware.HostsClient type. +type HostsServer struct { + // BeginCreate is the fake for method HostsClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + BeginCreate func(ctx context.Context, resourceGroupName string, hostName string, body armconnectedvmware.Host, options *armconnectedvmware.HostsClientBeginCreateOptions) (resp azfake.PollerResponder[armconnectedvmware.HostsClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method HostsClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, hostName string, options *armconnectedvmware.HostsClientBeginDeleteOptions) (resp azfake.PollerResponder[armconnectedvmware.HostsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method HostsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, hostName string, options *armconnectedvmware.HostsClientGetOptions) (resp azfake.Responder[armconnectedvmware.HostsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method HostsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armconnectedvmware.HostsClientListOptions) (resp azfake.PagerResponder[armconnectedvmware.HostsClientListResponse]) + + // NewListByResourceGroupPager is the fake for method HostsClient.NewListByResourceGroupPager + // HTTP status codes to indicate success: http.StatusOK + NewListByResourceGroupPager func(resourceGroupName string, options *armconnectedvmware.HostsClientListByResourceGroupOptions) (resp azfake.PagerResponder[armconnectedvmware.HostsClientListByResourceGroupResponse]) + + // Update is the fake for method HostsClient.Update + // HTTP status codes to indicate success: http.StatusOK + Update func(ctx context.Context, resourceGroupName string, hostName string, body armconnectedvmware.ResourcePatch, options *armconnectedvmware.HostsClientUpdateOptions) (resp azfake.Responder[armconnectedvmware.HostsClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewHostsServerTransport creates a new instance of HostsServerTransport with the provided implementation. +// The returned HostsServerTransport instance is connected to an instance of armconnectedvmware.HostsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewHostsServerTransport(srv *HostsServer) *HostsServerTransport { + return &HostsServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armconnectedvmware.HostsClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armconnectedvmware.HostsClientDeleteResponse]](), + newListPager: newTracker[azfake.PagerResponder[armconnectedvmware.HostsClientListResponse]](), + newListByResourceGroupPager: newTracker[azfake.PagerResponder[armconnectedvmware.HostsClientListByResourceGroupResponse]](), + } +} + +// HostsServerTransport connects instances of armconnectedvmware.HostsClient to instances of HostsServer. +// Don't use this type directly, use NewHostsServerTransport instead. +type HostsServerTransport struct { + srv *HostsServer + beginCreate *tracker[azfake.PollerResponder[armconnectedvmware.HostsClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armconnectedvmware.HostsClientDeleteResponse]] + newListPager *tracker[azfake.PagerResponder[armconnectedvmware.HostsClientListResponse]] + newListByResourceGroupPager *tracker[azfake.PagerResponder[armconnectedvmware.HostsClientListByResourceGroupResponse]] +} + +// Do implements the policy.Transporter interface for HostsServerTransport. +func (h *HostsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "HostsClient.BeginCreate": + resp, err = h.dispatchBeginCreate(req) + case "HostsClient.BeginDelete": + resp, err = h.dispatchBeginDelete(req) + case "HostsClient.Get": + resp, err = h.dispatchGet(req) + case "HostsClient.NewListPager": + resp, err = h.dispatchNewListPager(req) + case "HostsClient.NewListByResourceGroupPager": + resp, err = h.dispatchNewListByResourceGroupPager(req) + case "HostsClient.Update": + resp, err = h.dispatchUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (h *HostsServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if h.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := h.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/hosts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armconnectedvmware.Host](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + hostNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("hostName")]) + if err != nil { + return nil, err + } + respr, errRespr := h.srv.BeginCreate(req.Context(), resourceGroupNameParam, hostNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + h.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated}, resp.StatusCode) { + h.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + h.beginCreate.remove(req) + } + + return resp, nil +} + +func (h *HostsServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if h.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := h.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/hosts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + hostNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("hostName")]) + if err != nil { + return nil, err + } + forceUnescaped, err := url.QueryUnescape(qp.Get("force")) + if err != nil { + return nil, err + } + forceParam, err := parseOptional(forceUnescaped, strconv.ParseBool) + if err != nil { + return nil, err + } + var options *armconnectedvmware.HostsClientBeginDeleteOptions + if forceParam != nil { + options = &armconnectedvmware.HostsClientBeginDeleteOptions{ + Force: forceParam, + } + } + respr, errRespr := h.srv.BeginDelete(req.Context(), resourceGroupNameParam, hostNameParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + h.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + h.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + h.beginDelete.remove(req) + } + + return resp, nil +} + +func (h *HostsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if h.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/hosts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + hostNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("hostName")]) + if err != nil { + return nil, err + } + respr, errRespr := h.srv.Get(req.Context(), resourceGroupNameParam, hostNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Host, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (h *HostsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if h.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := h.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/hosts` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resp := h.srv.NewListPager(nil) + newListPager = &resp + h.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armconnectedvmware.HostsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + h.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + h.newListPager.remove(req) + } + return resp, nil +} + +func (h *HostsServerTransport) dispatchNewListByResourceGroupPager(req *http.Request) (*http.Response, error) { + if h.srv.NewListByResourceGroupPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByResourceGroupPager not implemented")} + } + newListByResourceGroupPager := h.newListByResourceGroupPager.get(req) + if newListByResourceGroupPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/hosts` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resp := h.srv.NewListByResourceGroupPager(resourceGroupNameParam, nil) + newListByResourceGroupPager = &resp + h.newListByResourceGroupPager.add(req, newListByResourceGroupPager) + server.PagerResponderInjectNextLinks(newListByResourceGroupPager, req, func(page *armconnectedvmware.HostsClientListByResourceGroupResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByResourceGroupPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + h.newListByResourceGroupPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByResourceGroupPager) { + h.newListByResourceGroupPager.remove(req) + } + return resp, nil +} + +func (h *HostsServerTransport) dispatchUpdate(req *http.Request) (*http.Response, error) { + if h.srv.Update == nil { + return nil, &nonRetriableError{errors.New("fake for method Update not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/hosts/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armconnectedvmware.ResourcePatch](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + hostNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("hostName")]) + if err != nil { + return nil, err + } + respr, errRespr := h.srv.Update(req.Context(), resourceGroupNameParam, hostNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Host, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/internal.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/internal.go new file mode 100644 index 000000000000..5b23dd545623 --- /dev/null +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/internal.go @@ -0,0 +1,84 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// Code generated by Microsoft (R) AutoRest Code Generator.Changes may cause incorrect behavior and will be lost if the code +// is regenerated. +// Code generated by @autorest/go. DO NOT EDIT. + +package fake + +import ( + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "net/http" + "sync" +) + +type nonRetriableError struct { + error +} + +func (nonRetriableError) NonRetriable() { + // marker method +} + +func contains[T comparable](s []T, v T) bool { + for _, vv := range s { + if vv == v { + return true + } + } + return false +} + +func parseOptional[T any](v string, parse func(v string) (T, error)) (*T, error) { + if v == "" { + return nil, nil + } + t, err := parse(v) + if err != nil { + return nil, err + } + return &t, err +} + +func newTracker[T any]() *tracker[T] { + return &tracker[T]{ + items: map[string]*T{}, + } +} + +type tracker[T any] struct { + items map[string]*T + mu sync.Mutex +} + +func (p *tracker[T]) get(req *http.Request) *T { + p.mu.Lock() + defer p.mu.Unlock() + if item, ok := p.items[server.SanitizePagerPollerPath(req.URL.Path)]; ok { + return item + } + return nil +} + +func (p *tracker[T]) add(req *http.Request, item *T) { + p.mu.Lock() + defer p.mu.Unlock() + p.items[server.SanitizePagerPollerPath(req.URL.Path)] = item +} + +func (p *tracker[T]) remove(req *http.Request) { + p.mu.Lock() + defer p.mu.Unlock() + delete(p.items, server.SanitizePagerPollerPath(req.URL.Path)) +} diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/inventoryitems_server.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/inventoryitems_server.go new file mode 100644 index 000000000000..3a293b21da81 --- /dev/null +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/inventoryitems_server.go @@ -0,0 +1,255 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// Code generated by Microsoft (R) AutoRest Code Generator.Changes may cause incorrect behavior and will be lost if the code +// is regenerated. +// Code generated by @autorest/go. DO NOT EDIT. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/connectedvmware/armconnectedvmware" + "net/http" + "net/url" + "regexp" +) + +// InventoryItemsServer is a fake server for instances of the armconnectedvmware.InventoryItemsClient type. +type InventoryItemsServer struct { + // Create is the fake for method InventoryItemsClient.Create + // HTTP status codes to indicate success: http.StatusOK + Create func(ctx context.Context, resourceGroupName string, vcenterName string, inventoryItemName string, body armconnectedvmware.InventoryItem, options *armconnectedvmware.InventoryItemsClientCreateOptions) (resp azfake.Responder[armconnectedvmware.InventoryItemsClientCreateResponse], errResp azfake.ErrorResponder) + + // Delete is the fake for method InventoryItemsClient.Delete + // HTTP status codes to indicate success: http.StatusOK, http.StatusNoContent + Delete func(ctx context.Context, resourceGroupName string, vcenterName string, inventoryItemName string, options *armconnectedvmware.InventoryItemsClientDeleteOptions) (resp azfake.Responder[armconnectedvmware.InventoryItemsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method InventoryItemsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, vcenterName string, inventoryItemName string, options *armconnectedvmware.InventoryItemsClientGetOptions) (resp azfake.Responder[armconnectedvmware.InventoryItemsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListByVCenterPager is the fake for method InventoryItemsClient.NewListByVCenterPager + // HTTP status codes to indicate success: http.StatusOK + NewListByVCenterPager func(resourceGroupName string, vcenterName string, options *armconnectedvmware.InventoryItemsClientListByVCenterOptions) (resp azfake.PagerResponder[armconnectedvmware.InventoryItemsClientListByVCenterResponse]) +} + +// NewInventoryItemsServerTransport creates a new instance of InventoryItemsServerTransport with the provided implementation. +// The returned InventoryItemsServerTransport instance is connected to an instance of armconnectedvmware.InventoryItemsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewInventoryItemsServerTransport(srv *InventoryItemsServer) *InventoryItemsServerTransport { + return &InventoryItemsServerTransport{ + srv: srv, + newListByVCenterPager: newTracker[azfake.PagerResponder[armconnectedvmware.InventoryItemsClientListByVCenterResponse]](), + } +} + +// InventoryItemsServerTransport connects instances of armconnectedvmware.InventoryItemsClient to instances of InventoryItemsServer. +// Don't use this type directly, use NewInventoryItemsServerTransport instead. +type InventoryItemsServerTransport struct { + srv *InventoryItemsServer + newListByVCenterPager *tracker[azfake.PagerResponder[armconnectedvmware.InventoryItemsClientListByVCenterResponse]] +} + +// Do implements the policy.Transporter interface for InventoryItemsServerTransport. +func (i *InventoryItemsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "InventoryItemsClient.Create": + resp, err = i.dispatchCreate(req) + case "InventoryItemsClient.Delete": + resp, err = i.dispatchDelete(req) + case "InventoryItemsClient.Get": + resp, err = i.dispatchGet(req) + case "InventoryItemsClient.NewListByVCenterPager": + resp, err = i.dispatchNewListByVCenterPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (i *InventoryItemsServerTransport) dispatchCreate(req *http.Request) (*http.Response, error) { + if i.srv.Create == nil { + return nil, &nonRetriableError{errors.New("fake for method Create not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/vcenters/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/inventoryItems/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armconnectedvmware.InventoryItem](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + vcenterNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("vcenterName")]) + if err != nil { + return nil, err + } + inventoryItemNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("inventoryItemName")]) + if err != nil { + return nil, err + } + respr, errRespr := i.srv.Create(req.Context(), resourceGroupNameParam, vcenterNameParam, inventoryItemNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).InventoryItem, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (i *InventoryItemsServerTransport) dispatchDelete(req *http.Request) (*http.Response, error) { + if i.srv.Delete == nil { + return nil, &nonRetriableError{errors.New("fake for method Delete not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/vcenters/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/inventoryItems/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + vcenterNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("vcenterName")]) + if err != nil { + return nil, err + } + inventoryItemNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("inventoryItemName")]) + if err != nil { + return nil, err + } + respr, errRespr := i.srv.Delete(req.Context(), resourceGroupNameParam, vcenterNameParam, inventoryItemNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK, http.StatusNoContent}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusNoContent", respContent.HTTPStatus)} + } + resp, err := server.NewResponse(respContent, req, nil) + if err != nil { + return nil, err + } + return resp, nil +} + +func (i *InventoryItemsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if i.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/vcenters/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/inventoryItems/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 4 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + vcenterNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("vcenterName")]) + if err != nil { + return nil, err + } + inventoryItemNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("inventoryItemName")]) + if err != nil { + return nil, err + } + respr, errRespr := i.srv.Get(req.Context(), resourceGroupNameParam, vcenterNameParam, inventoryItemNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).InventoryItem, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (i *InventoryItemsServerTransport) dispatchNewListByVCenterPager(req *http.Request) (*http.Response, error) { + if i.srv.NewListByVCenterPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByVCenterPager not implemented")} + } + newListByVCenterPager := i.newListByVCenterPager.get(req) + if newListByVCenterPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/vcenters/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/inventoryItems` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + vcenterNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("vcenterName")]) + if err != nil { + return nil, err + } + resp := i.srv.NewListByVCenterPager(resourceGroupNameParam, vcenterNameParam, nil) + newListByVCenterPager = &resp + i.newListByVCenterPager.add(req, newListByVCenterPager) + server.PagerResponderInjectNextLinks(newListByVCenterPager, req, func(page *armconnectedvmware.InventoryItemsClientListByVCenterResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByVCenterPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + i.newListByVCenterPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByVCenterPager) { + i.newListByVCenterPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/operations_server.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/operations_server.go new file mode 100644 index 000000000000..ed8142a44195 --- /dev/null +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/operations_server.go @@ -0,0 +1,105 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// Code generated by Microsoft (R) AutoRest Code Generator.Changes may cause incorrect behavior and will be lost if the code +// is regenerated. +// Code generated by @autorest/go. DO NOT EDIT. + +package fake + +import ( + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/connectedvmware/armconnectedvmware" + "net/http" +) + +// OperationsServer is a fake server for instances of the armconnectedvmware.OperationsClient type. +type OperationsServer struct { + // NewListPager is the fake for method OperationsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armconnectedvmware.OperationsClientListOptions) (resp azfake.PagerResponder[armconnectedvmware.OperationsClientListResponse]) +} + +// NewOperationsServerTransport creates a new instance of OperationsServerTransport with the provided implementation. +// The returned OperationsServerTransport instance is connected to an instance of armconnectedvmware.OperationsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewOperationsServerTransport(srv *OperationsServer) *OperationsServerTransport { + return &OperationsServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armconnectedvmware.OperationsClientListResponse]](), + } +} + +// OperationsServerTransport connects instances of armconnectedvmware.OperationsClient to instances of OperationsServer. +// Don't use this type directly, use NewOperationsServerTransport instead. +type OperationsServerTransport struct { + srv *OperationsServer + newListPager *tracker[azfake.PagerResponder[armconnectedvmware.OperationsClientListResponse]] +} + +// Do implements the policy.Transporter interface for OperationsServerTransport. +func (o *OperationsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "OperationsClient.NewListPager": + resp, err = o.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (o *OperationsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if o.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := o.newListPager.get(req) + if newListPager == nil { + resp := o.srv.NewListPager(nil) + newListPager = &resp + o.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armconnectedvmware.OperationsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + o.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + o.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/resourcepools_server.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/resourcepools_server.go new file mode 100644 index 000000000000..53be97a04109 --- /dev/null +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/resourcepools_server.go @@ -0,0 +1,365 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// Code generated by Microsoft (R) AutoRest Code Generator.Changes may cause incorrect behavior and will be lost if the code +// is regenerated. +// Code generated by @autorest/go. DO NOT EDIT. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/connectedvmware/armconnectedvmware" + "net/http" + "net/url" + "regexp" + "strconv" +) + +// ResourcePoolsServer is a fake server for instances of the armconnectedvmware.ResourcePoolsClient type. +type ResourcePoolsServer struct { + // BeginCreate is the fake for method ResourcePoolsClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + BeginCreate func(ctx context.Context, resourceGroupName string, resourcePoolName string, body armconnectedvmware.ResourcePool, options *armconnectedvmware.ResourcePoolsClientBeginCreateOptions) (resp azfake.PollerResponder[armconnectedvmware.ResourcePoolsClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method ResourcePoolsClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, resourcePoolName string, options *armconnectedvmware.ResourcePoolsClientBeginDeleteOptions) (resp azfake.PollerResponder[armconnectedvmware.ResourcePoolsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method ResourcePoolsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, resourcePoolName string, options *armconnectedvmware.ResourcePoolsClientGetOptions) (resp azfake.Responder[armconnectedvmware.ResourcePoolsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method ResourcePoolsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armconnectedvmware.ResourcePoolsClientListOptions) (resp azfake.PagerResponder[armconnectedvmware.ResourcePoolsClientListResponse]) + + // NewListByResourceGroupPager is the fake for method ResourcePoolsClient.NewListByResourceGroupPager + // HTTP status codes to indicate success: http.StatusOK + NewListByResourceGroupPager func(resourceGroupName string, options *armconnectedvmware.ResourcePoolsClientListByResourceGroupOptions) (resp azfake.PagerResponder[armconnectedvmware.ResourcePoolsClientListByResourceGroupResponse]) + + // Update is the fake for method ResourcePoolsClient.Update + // HTTP status codes to indicate success: http.StatusOK + Update func(ctx context.Context, resourceGroupName string, resourcePoolName string, body armconnectedvmware.ResourcePatch, options *armconnectedvmware.ResourcePoolsClientUpdateOptions) (resp azfake.Responder[armconnectedvmware.ResourcePoolsClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewResourcePoolsServerTransport creates a new instance of ResourcePoolsServerTransport with the provided implementation. +// The returned ResourcePoolsServerTransport instance is connected to an instance of armconnectedvmware.ResourcePoolsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewResourcePoolsServerTransport(srv *ResourcePoolsServer) *ResourcePoolsServerTransport { + return &ResourcePoolsServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armconnectedvmware.ResourcePoolsClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armconnectedvmware.ResourcePoolsClientDeleteResponse]](), + newListPager: newTracker[azfake.PagerResponder[armconnectedvmware.ResourcePoolsClientListResponse]](), + newListByResourceGroupPager: newTracker[azfake.PagerResponder[armconnectedvmware.ResourcePoolsClientListByResourceGroupResponse]](), + } +} + +// ResourcePoolsServerTransport connects instances of armconnectedvmware.ResourcePoolsClient to instances of ResourcePoolsServer. +// Don't use this type directly, use NewResourcePoolsServerTransport instead. +type ResourcePoolsServerTransport struct { + srv *ResourcePoolsServer + beginCreate *tracker[azfake.PollerResponder[armconnectedvmware.ResourcePoolsClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armconnectedvmware.ResourcePoolsClientDeleteResponse]] + newListPager *tracker[azfake.PagerResponder[armconnectedvmware.ResourcePoolsClientListResponse]] + newListByResourceGroupPager *tracker[azfake.PagerResponder[armconnectedvmware.ResourcePoolsClientListByResourceGroupResponse]] +} + +// Do implements the policy.Transporter interface for ResourcePoolsServerTransport. +func (r *ResourcePoolsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "ResourcePoolsClient.BeginCreate": + resp, err = r.dispatchBeginCreate(req) + case "ResourcePoolsClient.BeginDelete": + resp, err = r.dispatchBeginDelete(req) + case "ResourcePoolsClient.Get": + resp, err = r.dispatchGet(req) + case "ResourcePoolsClient.NewListPager": + resp, err = r.dispatchNewListPager(req) + case "ResourcePoolsClient.NewListByResourceGroupPager": + resp, err = r.dispatchNewListByResourceGroupPager(req) + case "ResourcePoolsClient.Update": + resp, err = r.dispatchUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (r *ResourcePoolsServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if r.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := r.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/resourcePools/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armconnectedvmware.ResourcePool](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourcePoolNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourcePoolName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.BeginCreate(req.Context(), resourceGroupNameParam, resourcePoolNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + r.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated}, resp.StatusCode) { + r.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + r.beginCreate.remove(req) + } + + return resp, nil +} + +func (r *ResourcePoolsServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if r.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := r.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/resourcePools/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourcePoolNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourcePoolName")]) + if err != nil { + return nil, err + } + forceUnescaped, err := url.QueryUnescape(qp.Get("force")) + if err != nil { + return nil, err + } + forceParam, err := parseOptional(forceUnescaped, strconv.ParseBool) + if err != nil { + return nil, err + } + var options *armconnectedvmware.ResourcePoolsClientBeginDeleteOptions + if forceParam != nil { + options = &armconnectedvmware.ResourcePoolsClientBeginDeleteOptions{ + Force: forceParam, + } + } + respr, errRespr := r.srv.BeginDelete(req.Context(), resourceGroupNameParam, resourcePoolNameParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + r.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + r.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + r.beginDelete.remove(req) + } + + return resp, nil +} + +func (r *ResourcePoolsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if r.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/resourcePools/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourcePoolNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourcePoolName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.Get(req.Context(), resourceGroupNameParam, resourcePoolNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ResourcePool, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (r *ResourcePoolsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if r.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := r.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/resourcePools` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resp := r.srv.NewListPager(nil) + newListPager = &resp + r.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armconnectedvmware.ResourcePoolsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + r.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + r.newListPager.remove(req) + } + return resp, nil +} + +func (r *ResourcePoolsServerTransport) dispatchNewListByResourceGroupPager(req *http.Request) (*http.Response, error) { + if r.srv.NewListByResourceGroupPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByResourceGroupPager not implemented")} + } + newListByResourceGroupPager := r.newListByResourceGroupPager.get(req) + if newListByResourceGroupPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/resourcePools` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resp := r.srv.NewListByResourceGroupPager(resourceGroupNameParam, nil) + newListByResourceGroupPager = &resp + r.newListByResourceGroupPager.add(req, newListByResourceGroupPager) + server.PagerResponderInjectNextLinks(newListByResourceGroupPager, req, func(page *armconnectedvmware.ResourcePoolsClientListByResourceGroupResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByResourceGroupPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + r.newListByResourceGroupPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByResourceGroupPager) { + r.newListByResourceGroupPager.remove(req) + } + return resp, nil +} + +func (r *ResourcePoolsServerTransport) dispatchUpdate(req *http.Request) (*http.Response, error) { + if r.srv.Update == nil { + return nil, &nonRetriableError{errors.New("fake for method Update not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/resourcePools/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armconnectedvmware.ResourcePatch](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resourcePoolNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourcePoolName")]) + if err != nil { + return nil, err + } + respr, errRespr := r.srv.Update(req.Context(), resourceGroupNameParam, resourcePoolNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).ResourcePool, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/server_factory.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/server_factory.go new file mode 100644 index 000000000000..5dde890e9e94 --- /dev/null +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/server_factory.go @@ -0,0 +1,153 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// Code generated by Microsoft (R) AutoRest Code Generator.Changes may cause incorrect behavior and will be lost if the code +// is regenerated. +// Code generated by @autorest/go. DO NOT EDIT. + +package fake + +import ( + "errors" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "net/http" + "strings" + "sync" +) + +// ServerFactory is a fake server for instances of the armconnectedvmware.ClientFactory type. +type ServerFactory struct { + ClustersServer ClustersServer + DatastoresServer DatastoresServer + HostsServer HostsServer + InventoryItemsServer InventoryItemsServer + OperationsServer OperationsServer + ResourcePoolsServer ResourcePoolsServer + VCentersServer VCentersServer + VMInstanceGuestAgentsServer VMInstanceGuestAgentsServer + VMInstanceHybridIdentityMetadataServer VMInstanceHybridIdentityMetadataServer + VirtualMachineInstancesServer VirtualMachineInstancesServer + VirtualMachineTemplatesServer VirtualMachineTemplatesServer + VirtualNetworksServer VirtualNetworksServer +} + +// NewServerFactoryTransport creates a new instance of ServerFactoryTransport with the provided implementation. +// The returned ServerFactoryTransport instance is connected to an instance of armconnectedvmware.ClientFactory via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewServerFactoryTransport(srv *ServerFactory) *ServerFactoryTransport { + return &ServerFactoryTransport{ + srv: srv, + } +} + +// ServerFactoryTransport connects instances of armconnectedvmware.ClientFactory to instances of ServerFactory. +// Don't use this type directly, use NewServerFactoryTransport instead. +type ServerFactoryTransport struct { + srv *ServerFactory + trMu sync.Mutex + trClustersServer *ClustersServerTransport + trDatastoresServer *DatastoresServerTransport + trHostsServer *HostsServerTransport + trInventoryItemsServer *InventoryItemsServerTransport + trOperationsServer *OperationsServerTransport + trResourcePoolsServer *ResourcePoolsServerTransport + trVCentersServer *VCentersServerTransport + trVMInstanceGuestAgentsServer *VMInstanceGuestAgentsServerTransport + trVMInstanceHybridIdentityMetadataServer *VMInstanceHybridIdentityMetadataServerTransport + trVirtualMachineInstancesServer *VirtualMachineInstancesServerTransport + trVirtualMachineTemplatesServer *VirtualMachineTemplatesServerTransport + trVirtualNetworksServer *VirtualNetworksServerTransport +} + +// Do implements the policy.Transporter interface for ServerFactoryTransport. +func (s *ServerFactoryTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + client := method[:strings.Index(method, ".")] + var resp *http.Response + var err error + + switch client { + case "ClustersClient": + initServer(s, &s.trClustersServer, func() *ClustersServerTransport { return NewClustersServerTransport(&s.srv.ClustersServer) }) + resp, err = s.trClustersServer.Do(req) + case "DatastoresClient": + initServer(s, &s.trDatastoresServer, func() *DatastoresServerTransport { return NewDatastoresServerTransport(&s.srv.DatastoresServer) }) + resp, err = s.trDatastoresServer.Do(req) + case "HostsClient": + initServer(s, &s.trHostsServer, func() *HostsServerTransport { return NewHostsServerTransport(&s.srv.HostsServer) }) + resp, err = s.trHostsServer.Do(req) + case "InventoryItemsClient": + initServer(s, &s.trInventoryItemsServer, func() *InventoryItemsServerTransport { + return NewInventoryItemsServerTransport(&s.srv.InventoryItemsServer) + }) + resp, err = s.trInventoryItemsServer.Do(req) + case "OperationsClient": + initServer(s, &s.trOperationsServer, func() *OperationsServerTransport { return NewOperationsServerTransport(&s.srv.OperationsServer) }) + resp, err = s.trOperationsServer.Do(req) + case "ResourcePoolsClient": + initServer(s, &s.trResourcePoolsServer, func() *ResourcePoolsServerTransport { + return NewResourcePoolsServerTransport(&s.srv.ResourcePoolsServer) + }) + resp, err = s.trResourcePoolsServer.Do(req) + case "VCentersClient": + initServer(s, &s.trVCentersServer, func() *VCentersServerTransport { return NewVCentersServerTransport(&s.srv.VCentersServer) }) + resp, err = s.trVCentersServer.Do(req) + case "VMInstanceGuestAgentsClient": + initServer(s, &s.trVMInstanceGuestAgentsServer, func() *VMInstanceGuestAgentsServerTransport { + return NewVMInstanceGuestAgentsServerTransport(&s.srv.VMInstanceGuestAgentsServer) + }) + resp, err = s.trVMInstanceGuestAgentsServer.Do(req) + case "VMInstanceHybridIdentityMetadataClient": + initServer(s, &s.trVMInstanceHybridIdentityMetadataServer, func() *VMInstanceHybridIdentityMetadataServerTransport { + return NewVMInstanceHybridIdentityMetadataServerTransport(&s.srv.VMInstanceHybridIdentityMetadataServer) + }) + resp, err = s.trVMInstanceHybridIdentityMetadataServer.Do(req) + case "VirtualMachineInstancesClient": + initServer(s, &s.trVirtualMachineInstancesServer, func() *VirtualMachineInstancesServerTransport { + return NewVirtualMachineInstancesServerTransport(&s.srv.VirtualMachineInstancesServer) + }) + resp, err = s.trVirtualMachineInstancesServer.Do(req) + case "VirtualMachineTemplatesClient": + initServer(s, &s.trVirtualMachineTemplatesServer, func() *VirtualMachineTemplatesServerTransport { + return NewVirtualMachineTemplatesServerTransport(&s.srv.VirtualMachineTemplatesServer) + }) + resp, err = s.trVirtualMachineTemplatesServer.Do(req) + case "VirtualNetworksClient": + initServer(s, &s.trVirtualNetworksServer, func() *VirtualNetworksServerTransport { + return NewVirtualNetworksServerTransport(&s.srv.VirtualNetworksServer) + }) + resp, err = s.trVirtualNetworksServer.Do(req) + default: + err = fmt.Errorf("unhandled client %s", client) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func initServer[T any](s *ServerFactoryTransport, dst **T, src func() *T) { + s.trMu.Lock() + if *dst == nil { + *dst = src() + } + s.trMu.Unlock() +} diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/time_rfc3339.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/time_rfc3339.go new file mode 100644 index 000000000000..02ac9f2d0900 --- /dev/null +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/time_rfc3339.go @@ -0,0 +1,95 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// Code generated by Microsoft (R) AutoRest Code Generator.Changes may cause incorrect behavior and will be lost if the code +// is regenerated. +// Code generated by @autorest/go. DO NOT EDIT. + +package fake + +import ( + "encoding/json" + "fmt" + "github.com/Azure/azure-sdk-for-go/sdk/azcore" + "reflect" + "regexp" + "strings" + "time" +) + +// Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases. +var tzOffsetRegex = regexp.MustCompile(`(Z|z|\+|-)(\d+:\d+)*"*$`) + +const ( + utcDateTimeJSON = `"2006-01-02T15:04:05.999999999"` + utcDateTime = "2006-01-02T15:04:05.999999999" + dateTimeJSON = `"` + time.RFC3339Nano + `"` +) + +type dateTimeRFC3339 time.Time + +func (t dateTimeRFC3339) MarshalJSON() ([]byte, error) { + tt := time.Time(t) + return tt.MarshalJSON() +} + +func (t dateTimeRFC3339) MarshalText() ([]byte, error) { + tt := time.Time(t) + return tt.MarshalText() +} + +func (t *dateTimeRFC3339) UnmarshalJSON(data []byte) error { + layout := utcDateTimeJSON + if tzOffsetRegex.Match(data) { + layout = dateTimeJSON + } + return t.Parse(layout, string(data)) +} + +func (t *dateTimeRFC3339) UnmarshalText(data []byte) error { + layout := utcDateTime + if tzOffsetRegex.Match(data) { + layout = time.RFC3339Nano + } + return t.Parse(layout, string(data)) +} + +func (t *dateTimeRFC3339) Parse(layout, value string) error { + p, err := time.Parse(layout, strings.ToUpper(value)) + *t = dateTimeRFC3339(p) + return err +} + +func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) { + if t == nil { + return + } else if azcore.IsNullValue(t) { + m[k] = nil + return + } else if reflect.ValueOf(t).IsNil() { + return + } + m[k] = (*dateTimeRFC3339)(t) +} + +func unpopulateDateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { + if data == nil || strings.EqualFold(string(data), "null") { + return nil + } + var aux dateTimeRFC3339 + if err := json.Unmarshal(data, &aux); err != nil { + return fmt.Errorf("struct field %s: %v", fn, err) + } + *t = (*time.Time)(&aux) + return nil +} diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/vcenters_server.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/vcenters_server.go new file mode 100644 index 000000000000..9226905f1897 --- /dev/null +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/vcenters_server.go @@ -0,0 +1,365 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// Code generated by Microsoft (R) AutoRest Code Generator.Changes may cause incorrect behavior and will be lost if the code +// is regenerated. +// Code generated by @autorest/go. DO NOT EDIT. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/connectedvmware/armconnectedvmware" + "net/http" + "net/url" + "regexp" + "strconv" +) + +// VCentersServer is a fake server for instances of the armconnectedvmware.VCentersClient type. +type VCentersServer struct { + // BeginCreate is the fake for method VCentersClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + BeginCreate func(ctx context.Context, resourceGroupName string, vcenterName string, body armconnectedvmware.VCenter, options *armconnectedvmware.VCentersClientBeginCreateOptions) (resp azfake.PollerResponder[armconnectedvmware.VCentersClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method VCentersClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, vcenterName string, options *armconnectedvmware.VCentersClientBeginDeleteOptions) (resp azfake.PollerResponder[armconnectedvmware.VCentersClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method VCentersClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, vcenterName string, options *armconnectedvmware.VCentersClientGetOptions) (resp azfake.Responder[armconnectedvmware.VCentersClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method VCentersClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armconnectedvmware.VCentersClientListOptions) (resp azfake.PagerResponder[armconnectedvmware.VCentersClientListResponse]) + + // NewListByResourceGroupPager is the fake for method VCentersClient.NewListByResourceGroupPager + // HTTP status codes to indicate success: http.StatusOK + NewListByResourceGroupPager func(resourceGroupName string, options *armconnectedvmware.VCentersClientListByResourceGroupOptions) (resp azfake.PagerResponder[armconnectedvmware.VCentersClientListByResourceGroupResponse]) + + // Update is the fake for method VCentersClient.Update + // HTTP status codes to indicate success: http.StatusOK + Update func(ctx context.Context, resourceGroupName string, vcenterName string, body armconnectedvmware.ResourcePatch, options *armconnectedvmware.VCentersClientUpdateOptions) (resp azfake.Responder[armconnectedvmware.VCentersClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewVCentersServerTransport creates a new instance of VCentersServerTransport with the provided implementation. +// The returned VCentersServerTransport instance is connected to an instance of armconnectedvmware.VCentersClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewVCentersServerTransport(srv *VCentersServer) *VCentersServerTransport { + return &VCentersServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armconnectedvmware.VCentersClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armconnectedvmware.VCentersClientDeleteResponse]](), + newListPager: newTracker[azfake.PagerResponder[armconnectedvmware.VCentersClientListResponse]](), + newListByResourceGroupPager: newTracker[azfake.PagerResponder[armconnectedvmware.VCentersClientListByResourceGroupResponse]](), + } +} + +// VCentersServerTransport connects instances of armconnectedvmware.VCentersClient to instances of VCentersServer. +// Don't use this type directly, use NewVCentersServerTransport instead. +type VCentersServerTransport struct { + srv *VCentersServer + beginCreate *tracker[azfake.PollerResponder[armconnectedvmware.VCentersClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armconnectedvmware.VCentersClientDeleteResponse]] + newListPager *tracker[azfake.PagerResponder[armconnectedvmware.VCentersClientListResponse]] + newListByResourceGroupPager *tracker[azfake.PagerResponder[armconnectedvmware.VCentersClientListByResourceGroupResponse]] +} + +// Do implements the policy.Transporter interface for VCentersServerTransport. +func (v *VCentersServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "VCentersClient.BeginCreate": + resp, err = v.dispatchBeginCreate(req) + case "VCentersClient.BeginDelete": + resp, err = v.dispatchBeginDelete(req) + case "VCentersClient.Get": + resp, err = v.dispatchGet(req) + case "VCentersClient.NewListPager": + resp, err = v.dispatchNewListPager(req) + case "VCentersClient.NewListByResourceGroupPager": + resp, err = v.dispatchNewListByResourceGroupPager(req) + case "VCentersClient.Update": + resp, err = v.dispatchUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (v *VCentersServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if v.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := v.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/vcenters/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armconnectedvmware.VCenter](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + vcenterNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("vcenterName")]) + if err != nil { + return nil, err + } + respr, errRespr := v.srv.BeginCreate(req.Context(), resourceGroupNameParam, vcenterNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + v.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated}, resp.StatusCode) { + v.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + v.beginCreate.remove(req) + } + + return resp, nil +} + +func (v *VCentersServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if v.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := v.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/vcenters/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + vcenterNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("vcenterName")]) + if err != nil { + return nil, err + } + forceUnescaped, err := url.QueryUnescape(qp.Get("force")) + if err != nil { + return nil, err + } + forceParam, err := parseOptional(forceUnescaped, strconv.ParseBool) + if err != nil { + return nil, err + } + var options *armconnectedvmware.VCentersClientBeginDeleteOptions + if forceParam != nil { + options = &armconnectedvmware.VCentersClientBeginDeleteOptions{ + Force: forceParam, + } + } + respr, errRespr := v.srv.BeginDelete(req.Context(), resourceGroupNameParam, vcenterNameParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + v.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + v.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + v.beginDelete.remove(req) + } + + return resp, nil +} + +func (v *VCentersServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if v.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/vcenters/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + vcenterNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("vcenterName")]) + if err != nil { + return nil, err + } + respr, errRespr := v.srv.Get(req.Context(), resourceGroupNameParam, vcenterNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).VCenter, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (v *VCentersServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if v.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := v.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/vcenters` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resp := v.srv.NewListPager(nil) + newListPager = &resp + v.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armconnectedvmware.VCentersClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + v.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + v.newListPager.remove(req) + } + return resp, nil +} + +func (v *VCentersServerTransport) dispatchNewListByResourceGroupPager(req *http.Request) (*http.Response, error) { + if v.srv.NewListByResourceGroupPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByResourceGroupPager not implemented")} + } + newListByResourceGroupPager := v.newListByResourceGroupPager.get(req) + if newListByResourceGroupPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/vcenters` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resp := v.srv.NewListByResourceGroupPager(resourceGroupNameParam, nil) + newListByResourceGroupPager = &resp + v.newListByResourceGroupPager.add(req, newListByResourceGroupPager) + server.PagerResponderInjectNextLinks(newListByResourceGroupPager, req, func(page *armconnectedvmware.VCentersClientListByResourceGroupResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByResourceGroupPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + v.newListByResourceGroupPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByResourceGroupPager) { + v.newListByResourceGroupPager.remove(req) + } + return resp, nil +} + +func (v *VCentersServerTransport) dispatchUpdate(req *http.Request) (*http.Response, error) { + if v.srv.Update == nil { + return nil, &nonRetriableError{errors.New("fake for method Update not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/vcenters/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armconnectedvmware.ResourcePatch](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + vcenterNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("vcenterName")]) + if err != nil { + return nil, err + } + respr, errRespr := v.srv.Update(req.Context(), resourceGroupNameParam, vcenterNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).VCenter, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/virtualmachineinstances_server.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/virtualmachineinstances_server.go new file mode 100644 index 000000000000..bd174f783089 --- /dev/null +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/virtualmachineinstances_server.go @@ -0,0 +1,485 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// Code generated by Microsoft (R) AutoRest Code Generator.Changes may cause incorrect behavior and will be lost if the code +// is regenerated. +// Code generated by @autorest/go. DO NOT EDIT. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/connectedvmware/armconnectedvmware" + "net/http" + "net/url" + "reflect" + "regexp" + "strconv" +) + +// VirtualMachineInstancesServer is a fake server for instances of the armconnectedvmware.VirtualMachineInstancesClient type. +type VirtualMachineInstancesServer struct { + // BeginCreateOrUpdate is the fake for method VirtualMachineInstancesClient.BeginCreateOrUpdate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + BeginCreateOrUpdate func(ctx context.Context, resourceURI string, body armconnectedvmware.VirtualMachineInstance, options *armconnectedvmware.VirtualMachineInstancesClientBeginCreateOrUpdateOptions) (resp azfake.PollerResponder[armconnectedvmware.VirtualMachineInstancesClientCreateOrUpdateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method VirtualMachineInstancesClient.BeginDelete + // HTTP status codes to indicate success: http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceURI string, options *armconnectedvmware.VirtualMachineInstancesClientBeginDeleteOptions) (resp azfake.PollerResponder[armconnectedvmware.VirtualMachineInstancesClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method VirtualMachineInstancesClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceURI string, options *armconnectedvmware.VirtualMachineInstancesClientGetOptions) (resp azfake.Responder[armconnectedvmware.VirtualMachineInstancesClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method VirtualMachineInstancesClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(resourceURI string, options *armconnectedvmware.VirtualMachineInstancesClientListOptions) (resp azfake.PagerResponder[armconnectedvmware.VirtualMachineInstancesClientListResponse]) + + // BeginRestart is the fake for method VirtualMachineInstancesClient.BeginRestart + // HTTP status codes to indicate success: http.StatusAccepted + BeginRestart func(ctx context.Context, resourceURI string, options *armconnectedvmware.VirtualMachineInstancesClientBeginRestartOptions) (resp azfake.PollerResponder[armconnectedvmware.VirtualMachineInstancesClientRestartResponse], errResp azfake.ErrorResponder) + + // BeginStart is the fake for method VirtualMachineInstancesClient.BeginStart + // HTTP status codes to indicate success: http.StatusAccepted + BeginStart func(ctx context.Context, resourceURI string, options *armconnectedvmware.VirtualMachineInstancesClientBeginStartOptions) (resp azfake.PollerResponder[armconnectedvmware.VirtualMachineInstancesClientStartResponse], errResp azfake.ErrorResponder) + + // BeginStop is the fake for method VirtualMachineInstancesClient.BeginStop + // HTTP status codes to indicate success: http.StatusAccepted + BeginStop func(ctx context.Context, resourceURI string, options *armconnectedvmware.VirtualMachineInstancesClientBeginStopOptions) (resp azfake.PollerResponder[armconnectedvmware.VirtualMachineInstancesClientStopResponse], errResp azfake.ErrorResponder) + + // BeginUpdate is the fake for method VirtualMachineInstancesClient.BeginUpdate + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted + BeginUpdate func(ctx context.Context, resourceURI string, body armconnectedvmware.VirtualMachineInstanceUpdate, options *armconnectedvmware.VirtualMachineInstancesClientBeginUpdateOptions) (resp azfake.PollerResponder[armconnectedvmware.VirtualMachineInstancesClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewVirtualMachineInstancesServerTransport creates a new instance of VirtualMachineInstancesServerTransport with the provided implementation. +// The returned VirtualMachineInstancesServerTransport instance is connected to an instance of armconnectedvmware.VirtualMachineInstancesClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewVirtualMachineInstancesServerTransport(srv *VirtualMachineInstancesServer) *VirtualMachineInstancesServerTransport { + return &VirtualMachineInstancesServerTransport{ + srv: srv, + beginCreateOrUpdate: newTracker[azfake.PollerResponder[armconnectedvmware.VirtualMachineInstancesClientCreateOrUpdateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armconnectedvmware.VirtualMachineInstancesClientDeleteResponse]](), + newListPager: newTracker[azfake.PagerResponder[armconnectedvmware.VirtualMachineInstancesClientListResponse]](), + beginRestart: newTracker[azfake.PollerResponder[armconnectedvmware.VirtualMachineInstancesClientRestartResponse]](), + beginStart: newTracker[azfake.PollerResponder[armconnectedvmware.VirtualMachineInstancesClientStartResponse]](), + beginStop: newTracker[azfake.PollerResponder[armconnectedvmware.VirtualMachineInstancesClientStopResponse]](), + beginUpdate: newTracker[azfake.PollerResponder[armconnectedvmware.VirtualMachineInstancesClientUpdateResponse]](), + } +} + +// VirtualMachineInstancesServerTransport connects instances of armconnectedvmware.VirtualMachineInstancesClient to instances of VirtualMachineInstancesServer. +// Don't use this type directly, use NewVirtualMachineInstancesServerTransport instead. +type VirtualMachineInstancesServerTransport struct { + srv *VirtualMachineInstancesServer + beginCreateOrUpdate *tracker[azfake.PollerResponder[armconnectedvmware.VirtualMachineInstancesClientCreateOrUpdateResponse]] + beginDelete *tracker[azfake.PollerResponder[armconnectedvmware.VirtualMachineInstancesClientDeleteResponse]] + newListPager *tracker[azfake.PagerResponder[armconnectedvmware.VirtualMachineInstancesClientListResponse]] + beginRestart *tracker[azfake.PollerResponder[armconnectedvmware.VirtualMachineInstancesClientRestartResponse]] + beginStart *tracker[azfake.PollerResponder[armconnectedvmware.VirtualMachineInstancesClientStartResponse]] + beginStop *tracker[azfake.PollerResponder[armconnectedvmware.VirtualMachineInstancesClientStopResponse]] + beginUpdate *tracker[azfake.PollerResponder[armconnectedvmware.VirtualMachineInstancesClientUpdateResponse]] +} + +// Do implements the policy.Transporter interface for VirtualMachineInstancesServerTransport. +func (v *VirtualMachineInstancesServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "VirtualMachineInstancesClient.BeginCreateOrUpdate": + resp, err = v.dispatchBeginCreateOrUpdate(req) + case "VirtualMachineInstancesClient.BeginDelete": + resp, err = v.dispatchBeginDelete(req) + case "VirtualMachineInstancesClient.Get": + resp, err = v.dispatchGet(req) + case "VirtualMachineInstancesClient.NewListPager": + resp, err = v.dispatchNewListPager(req) + case "VirtualMachineInstancesClient.BeginRestart": + resp, err = v.dispatchBeginRestart(req) + case "VirtualMachineInstancesClient.BeginStart": + resp, err = v.dispatchBeginStart(req) + case "VirtualMachineInstancesClient.BeginStop": + resp, err = v.dispatchBeginStop(req) + case "VirtualMachineInstancesClient.BeginUpdate": + resp, err = v.dispatchBeginUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (v *VirtualMachineInstancesServerTransport) dispatchBeginCreateOrUpdate(req *http.Request) (*http.Response, error) { + if v.srv.BeginCreateOrUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreateOrUpdate not implemented")} + } + beginCreateOrUpdate := v.beginCreateOrUpdate.get(req) + if beginCreateOrUpdate == nil { + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualMachineInstances/default` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armconnectedvmware.VirtualMachineInstance](req) + if err != nil { + return nil, err + } + resourceURIParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceUri")]) + if err != nil { + return nil, err + } + respr, errRespr := v.srv.BeginCreateOrUpdate(req.Context(), resourceURIParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreateOrUpdate = &respr + v.beginCreateOrUpdate.add(req, beginCreateOrUpdate) + } + + resp, err := server.PollerResponderNext(beginCreateOrUpdate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated}, resp.StatusCode) { + v.beginCreateOrUpdate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreateOrUpdate) { + v.beginCreateOrUpdate.remove(req) + } + + return resp, nil +} + +func (v *VirtualMachineInstancesServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if v.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := v.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualMachineInstances/default` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + resourceURIParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceUri")]) + if err != nil { + return nil, err + } + deleteFromHostUnescaped, err := url.QueryUnescape(qp.Get("deleteFromHost")) + if err != nil { + return nil, err + } + deleteFromHostParam, err := parseOptional(deleteFromHostUnescaped, strconv.ParseBool) + if err != nil { + return nil, err + } + forceUnescaped, err := url.QueryUnescape(qp.Get("force")) + if err != nil { + return nil, err + } + forceParam, err := parseOptional(forceUnescaped, strconv.ParseBool) + if err != nil { + return nil, err + } + var options *armconnectedvmware.VirtualMachineInstancesClientBeginDeleteOptions + if deleteFromHostParam != nil || forceParam != nil { + options = &armconnectedvmware.VirtualMachineInstancesClientBeginDeleteOptions{ + DeleteFromHost: deleteFromHostParam, + Force: forceParam, + } + } + respr, errRespr := v.srv.BeginDelete(req.Context(), resourceURIParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + v.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + v.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + v.beginDelete.remove(req) + } + + return resp, nil +} + +func (v *VirtualMachineInstancesServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if v.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualMachineInstances/default` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceURIParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceUri")]) + if err != nil { + return nil, err + } + respr, errRespr := v.srv.Get(req.Context(), resourceURIParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).VirtualMachineInstance, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (v *VirtualMachineInstancesServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if v.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := v.newListPager.get(req) + if newListPager == nil { + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualMachineInstances` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceURIParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceUri")]) + if err != nil { + return nil, err + } + resp := v.srv.NewListPager(resourceURIParam, nil) + newListPager = &resp + v.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armconnectedvmware.VirtualMachineInstancesClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + v.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + v.newListPager.remove(req) + } + return resp, nil +} + +func (v *VirtualMachineInstancesServerTransport) dispatchBeginRestart(req *http.Request) (*http.Response, error) { + if v.srv.BeginRestart == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginRestart not implemented")} + } + beginRestart := v.beginRestart.get(req) + if beginRestart == nil { + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualMachineInstances/default/restart` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceURIParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceUri")]) + if err != nil { + return nil, err + } + respr, errRespr := v.srv.BeginRestart(req.Context(), resourceURIParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginRestart = &respr + v.beginRestart.add(req, beginRestart) + } + + resp, err := server.PollerResponderNext(beginRestart, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusAccepted}, resp.StatusCode) { + v.beginRestart.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginRestart) { + v.beginRestart.remove(req) + } + + return resp, nil +} + +func (v *VirtualMachineInstancesServerTransport) dispatchBeginStart(req *http.Request) (*http.Response, error) { + if v.srv.BeginStart == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginStart not implemented")} + } + beginStart := v.beginStart.get(req) + if beginStart == nil { + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualMachineInstances/default/start` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceURIParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceUri")]) + if err != nil { + return nil, err + } + respr, errRespr := v.srv.BeginStart(req.Context(), resourceURIParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginStart = &respr + v.beginStart.add(req, beginStart) + } + + resp, err := server.PollerResponderNext(beginStart, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusAccepted}, resp.StatusCode) { + v.beginStart.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginStart) { + v.beginStart.remove(req) + } + + return resp, nil +} + +func (v *VirtualMachineInstancesServerTransport) dispatchBeginStop(req *http.Request) (*http.Response, error) { + if v.srv.BeginStop == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginStop not implemented")} + } + beginStop := v.beginStop.get(req) + if beginStop == nil { + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualMachineInstances/default/stop` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armconnectedvmware.StopVirtualMachineOptions](req) + if err != nil { + return nil, err + } + resourceURIParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceUri")]) + if err != nil { + return nil, err + } + var options *armconnectedvmware.VirtualMachineInstancesClientBeginStopOptions + if !reflect.ValueOf(body).IsZero() { + options = &armconnectedvmware.VirtualMachineInstancesClientBeginStopOptions{ + Body: &body, + } + } + respr, errRespr := v.srv.BeginStop(req.Context(), resourceURIParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginStop = &respr + v.beginStop.add(req, beginStop) + } + + resp, err := server.PollerResponderNext(beginStop, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusAccepted}, resp.StatusCode) { + v.beginStop.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginStop) { + v.beginStop.remove(req) + } + + return resp, nil +} + +func (v *VirtualMachineInstancesServerTransport) dispatchBeginUpdate(req *http.Request) (*http.Response, error) { + if v.srv.BeginUpdate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginUpdate not implemented")} + } + beginUpdate := v.beginUpdate.get(req) + if beginUpdate == nil { + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualMachineInstances/default` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armconnectedvmware.VirtualMachineInstanceUpdate](req) + if err != nil { + return nil, err + } + resourceURIParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceUri")]) + if err != nil { + return nil, err + } + respr, errRespr := v.srv.BeginUpdate(req.Context(), resourceURIParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginUpdate = &respr + v.beginUpdate.add(req, beginUpdate) + } + + resp, err := server.PollerResponderNext(beginUpdate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted}, resp.StatusCode) { + v.beginUpdate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted", resp.StatusCode)} + } + if !server.PollerResponderMore(beginUpdate) { + v.beginUpdate.remove(req) + } + + return resp, nil +} diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/virtualmachinetemplates_server.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/virtualmachinetemplates_server.go new file mode 100644 index 000000000000..68d409947602 --- /dev/null +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/virtualmachinetemplates_server.go @@ -0,0 +1,365 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// Code generated by Microsoft (R) AutoRest Code Generator.Changes may cause incorrect behavior and will be lost if the code +// is regenerated. +// Code generated by @autorest/go. DO NOT EDIT. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/connectedvmware/armconnectedvmware" + "net/http" + "net/url" + "regexp" + "strconv" +) + +// VirtualMachineTemplatesServer is a fake server for instances of the armconnectedvmware.VirtualMachineTemplatesClient type. +type VirtualMachineTemplatesServer struct { + // BeginCreate is the fake for method VirtualMachineTemplatesClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + BeginCreate func(ctx context.Context, resourceGroupName string, virtualMachineTemplateName string, body armconnectedvmware.VirtualMachineTemplate, options *armconnectedvmware.VirtualMachineTemplatesClientBeginCreateOptions) (resp azfake.PollerResponder[armconnectedvmware.VirtualMachineTemplatesClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method VirtualMachineTemplatesClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, virtualMachineTemplateName string, options *armconnectedvmware.VirtualMachineTemplatesClientBeginDeleteOptions) (resp azfake.PollerResponder[armconnectedvmware.VirtualMachineTemplatesClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method VirtualMachineTemplatesClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, virtualMachineTemplateName string, options *armconnectedvmware.VirtualMachineTemplatesClientGetOptions) (resp azfake.Responder[armconnectedvmware.VirtualMachineTemplatesClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method VirtualMachineTemplatesClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armconnectedvmware.VirtualMachineTemplatesClientListOptions) (resp azfake.PagerResponder[armconnectedvmware.VirtualMachineTemplatesClientListResponse]) + + // NewListByResourceGroupPager is the fake for method VirtualMachineTemplatesClient.NewListByResourceGroupPager + // HTTP status codes to indicate success: http.StatusOK + NewListByResourceGroupPager func(resourceGroupName string, options *armconnectedvmware.VirtualMachineTemplatesClientListByResourceGroupOptions) (resp azfake.PagerResponder[armconnectedvmware.VirtualMachineTemplatesClientListByResourceGroupResponse]) + + // Update is the fake for method VirtualMachineTemplatesClient.Update + // HTTP status codes to indicate success: http.StatusOK + Update func(ctx context.Context, resourceGroupName string, virtualMachineTemplateName string, body armconnectedvmware.ResourcePatch, options *armconnectedvmware.VirtualMachineTemplatesClientUpdateOptions) (resp azfake.Responder[armconnectedvmware.VirtualMachineTemplatesClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewVirtualMachineTemplatesServerTransport creates a new instance of VirtualMachineTemplatesServerTransport with the provided implementation. +// The returned VirtualMachineTemplatesServerTransport instance is connected to an instance of armconnectedvmware.VirtualMachineTemplatesClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewVirtualMachineTemplatesServerTransport(srv *VirtualMachineTemplatesServer) *VirtualMachineTemplatesServerTransport { + return &VirtualMachineTemplatesServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armconnectedvmware.VirtualMachineTemplatesClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armconnectedvmware.VirtualMachineTemplatesClientDeleteResponse]](), + newListPager: newTracker[azfake.PagerResponder[armconnectedvmware.VirtualMachineTemplatesClientListResponse]](), + newListByResourceGroupPager: newTracker[azfake.PagerResponder[armconnectedvmware.VirtualMachineTemplatesClientListByResourceGroupResponse]](), + } +} + +// VirtualMachineTemplatesServerTransport connects instances of armconnectedvmware.VirtualMachineTemplatesClient to instances of VirtualMachineTemplatesServer. +// Don't use this type directly, use NewVirtualMachineTemplatesServerTransport instead. +type VirtualMachineTemplatesServerTransport struct { + srv *VirtualMachineTemplatesServer + beginCreate *tracker[azfake.PollerResponder[armconnectedvmware.VirtualMachineTemplatesClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armconnectedvmware.VirtualMachineTemplatesClientDeleteResponse]] + newListPager *tracker[azfake.PagerResponder[armconnectedvmware.VirtualMachineTemplatesClientListResponse]] + newListByResourceGroupPager *tracker[azfake.PagerResponder[armconnectedvmware.VirtualMachineTemplatesClientListByResourceGroupResponse]] +} + +// Do implements the policy.Transporter interface for VirtualMachineTemplatesServerTransport. +func (v *VirtualMachineTemplatesServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "VirtualMachineTemplatesClient.BeginCreate": + resp, err = v.dispatchBeginCreate(req) + case "VirtualMachineTemplatesClient.BeginDelete": + resp, err = v.dispatchBeginDelete(req) + case "VirtualMachineTemplatesClient.Get": + resp, err = v.dispatchGet(req) + case "VirtualMachineTemplatesClient.NewListPager": + resp, err = v.dispatchNewListPager(req) + case "VirtualMachineTemplatesClient.NewListByResourceGroupPager": + resp, err = v.dispatchNewListByResourceGroupPager(req) + case "VirtualMachineTemplatesClient.Update": + resp, err = v.dispatchUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (v *VirtualMachineTemplatesServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if v.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := v.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualMachineTemplates/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armconnectedvmware.VirtualMachineTemplate](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + virtualMachineTemplateNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("virtualMachineTemplateName")]) + if err != nil { + return nil, err + } + respr, errRespr := v.srv.BeginCreate(req.Context(), resourceGroupNameParam, virtualMachineTemplateNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + v.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated}, resp.StatusCode) { + v.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + v.beginCreate.remove(req) + } + + return resp, nil +} + +func (v *VirtualMachineTemplatesServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if v.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := v.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualMachineTemplates/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + virtualMachineTemplateNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("virtualMachineTemplateName")]) + if err != nil { + return nil, err + } + forceUnescaped, err := url.QueryUnescape(qp.Get("force")) + if err != nil { + return nil, err + } + forceParam, err := parseOptional(forceUnescaped, strconv.ParseBool) + if err != nil { + return nil, err + } + var options *armconnectedvmware.VirtualMachineTemplatesClientBeginDeleteOptions + if forceParam != nil { + options = &armconnectedvmware.VirtualMachineTemplatesClientBeginDeleteOptions{ + Force: forceParam, + } + } + respr, errRespr := v.srv.BeginDelete(req.Context(), resourceGroupNameParam, virtualMachineTemplateNameParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + v.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + v.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + v.beginDelete.remove(req) + } + + return resp, nil +} + +func (v *VirtualMachineTemplatesServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if v.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualMachineTemplates/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + virtualMachineTemplateNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("virtualMachineTemplateName")]) + if err != nil { + return nil, err + } + respr, errRespr := v.srv.Get(req.Context(), resourceGroupNameParam, virtualMachineTemplateNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).VirtualMachineTemplate, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (v *VirtualMachineTemplatesServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if v.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := v.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualMachineTemplates` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resp := v.srv.NewListPager(nil) + newListPager = &resp + v.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armconnectedvmware.VirtualMachineTemplatesClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + v.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + v.newListPager.remove(req) + } + return resp, nil +} + +func (v *VirtualMachineTemplatesServerTransport) dispatchNewListByResourceGroupPager(req *http.Request) (*http.Response, error) { + if v.srv.NewListByResourceGroupPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByResourceGroupPager not implemented")} + } + newListByResourceGroupPager := v.newListByResourceGroupPager.get(req) + if newListByResourceGroupPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualMachineTemplates` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resp := v.srv.NewListByResourceGroupPager(resourceGroupNameParam, nil) + newListByResourceGroupPager = &resp + v.newListByResourceGroupPager.add(req, newListByResourceGroupPager) + server.PagerResponderInjectNextLinks(newListByResourceGroupPager, req, func(page *armconnectedvmware.VirtualMachineTemplatesClientListByResourceGroupResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByResourceGroupPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + v.newListByResourceGroupPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByResourceGroupPager) { + v.newListByResourceGroupPager.remove(req) + } + return resp, nil +} + +func (v *VirtualMachineTemplatesServerTransport) dispatchUpdate(req *http.Request) (*http.Response, error) { + if v.srv.Update == nil { + return nil, &nonRetriableError{errors.New("fake for method Update not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualMachineTemplates/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armconnectedvmware.ResourcePatch](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + virtualMachineTemplateNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("virtualMachineTemplateName")]) + if err != nil { + return nil, err + } + respr, errRespr := v.srv.Update(req.Context(), resourceGroupNameParam, virtualMachineTemplateNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).VirtualMachineTemplate, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/virtualnetworks_server.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/virtualnetworks_server.go new file mode 100644 index 000000000000..82ffc2fa1ca3 --- /dev/null +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/virtualnetworks_server.go @@ -0,0 +1,365 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// Code generated by Microsoft (R) AutoRest Code Generator.Changes may cause incorrect behavior and will be lost if the code +// is regenerated. +// Code generated by @autorest/go. DO NOT EDIT. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/connectedvmware/armconnectedvmware" + "net/http" + "net/url" + "regexp" + "strconv" +) + +// VirtualNetworksServer is a fake server for instances of the armconnectedvmware.VirtualNetworksClient type. +type VirtualNetworksServer struct { + // BeginCreate is the fake for method VirtualNetworksClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + BeginCreate func(ctx context.Context, resourceGroupName string, virtualNetworkName string, body armconnectedvmware.VirtualNetwork, options *armconnectedvmware.VirtualNetworksClientBeginCreateOptions) (resp azfake.PollerResponder[armconnectedvmware.VirtualNetworksClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method VirtualNetworksClient.BeginDelete + // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceGroupName string, virtualNetworkName string, options *armconnectedvmware.VirtualNetworksClientBeginDeleteOptions) (resp azfake.PollerResponder[armconnectedvmware.VirtualNetworksClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method VirtualNetworksClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceGroupName string, virtualNetworkName string, options *armconnectedvmware.VirtualNetworksClientGetOptions) (resp azfake.Responder[armconnectedvmware.VirtualNetworksClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method VirtualNetworksClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(options *armconnectedvmware.VirtualNetworksClientListOptions) (resp azfake.PagerResponder[armconnectedvmware.VirtualNetworksClientListResponse]) + + // NewListByResourceGroupPager is the fake for method VirtualNetworksClient.NewListByResourceGroupPager + // HTTP status codes to indicate success: http.StatusOK + NewListByResourceGroupPager func(resourceGroupName string, options *armconnectedvmware.VirtualNetworksClientListByResourceGroupOptions) (resp azfake.PagerResponder[armconnectedvmware.VirtualNetworksClientListByResourceGroupResponse]) + + // Update is the fake for method VirtualNetworksClient.Update + // HTTP status codes to indicate success: http.StatusOK + Update func(ctx context.Context, resourceGroupName string, virtualNetworkName string, body armconnectedvmware.ResourcePatch, options *armconnectedvmware.VirtualNetworksClientUpdateOptions) (resp azfake.Responder[armconnectedvmware.VirtualNetworksClientUpdateResponse], errResp azfake.ErrorResponder) +} + +// NewVirtualNetworksServerTransport creates a new instance of VirtualNetworksServerTransport with the provided implementation. +// The returned VirtualNetworksServerTransport instance is connected to an instance of armconnectedvmware.VirtualNetworksClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewVirtualNetworksServerTransport(srv *VirtualNetworksServer) *VirtualNetworksServerTransport { + return &VirtualNetworksServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armconnectedvmware.VirtualNetworksClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armconnectedvmware.VirtualNetworksClientDeleteResponse]](), + newListPager: newTracker[azfake.PagerResponder[armconnectedvmware.VirtualNetworksClientListResponse]](), + newListByResourceGroupPager: newTracker[azfake.PagerResponder[armconnectedvmware.VirtualNetworksClientListByResourceGroupResponse]](), + } +} + +// VirtualNetworksServerTransport connects instances of armconnectedvmware.VirtualNetworksClient to instances of VirtualNetworksServer. +// Don't use this type directly, use NewVirtualNetworksServerTransport instead. +type VirtualNetworksServerTransport struct { + srv *VirtualNetworksServer + beginCreate *tracker[azfake.PollerResponder[armconnectedvmware.VirtualNetworksClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armconnectedvmware.VirtualNetworksClientDeleteResponse]] + newListPager *tracker[azfake.PagerResponder[armconnectedvmware.VirtualNetworksClientListResponse]] + newListByResourceGroupPager *tracker[azfake.PagerResponder[armconnectedvmware.VirtualNetworksClientListByResourceGroupResponse]] +} + +// Do implements the policy.Transporter interface for VirtualNetworksServerTransport. +func (v *VirtualNetworksServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "VirtualNetworksClient.BeginCreate": + resp, err = v.dispatchBeginCreate(req) + case "VirtualNetworksClient.BeginDelete": + resp, err = v.dispatchBeginDelete(req) + case "VirtualNetworksClient.Get": + resp, err = v.dispatchGet(req) + case "VirtualNetworksClient.NewListPager": + resp, err = v.dispatchNewListPager(req) + case "VirtualNetworksClient.NewListByResourceGroupPager": + resp, err = v.dispatchNewListByResourceGroupPager(req) + case "VirtualNetworksClient.Update": + resp, err = v.dispatchUpdate(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (v *VirtualNetworksServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if v.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := v.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualNetworks/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armconnectedvmware.VirtualNetwork](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + virtualNetworkNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("virtualNetworkName")]) + if err != nil { + return nil, err + } + respr, errRespr := v.srv.BeginCreate(req.Context(), resourceGroupNameParam, virtualNetworkNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + v.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated}, resp.StatusCode) { + v.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + v.beginCreate.remove(req) + } + + return resp, nil +} + +func (v *VirtualNetworksServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if v.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := v.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualNetworks/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + qp := req.URL.Query() + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + virtualNetworkNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("virtualNetworkName")]) + if err != nil { + return nil, err + } + forceUnescaped, err := url.QueryUnescape(qp.Get("force")) + if err != nil { + return nil, err + } + forceParam, err := parseOptional(forceUnescaped, strconv.ParseBool) + if err != nil { + return nil, err + } + var options *armconnectedvmware.VirtualNetworksClientBeginDeleteOptions + if forceParam != nil { + options = &armconnectedvmware.VirtualNetworksClientBeginDeleteOptions{ + Force: forceParam, + } + } + respr, errRespr := v.srv.BeginDelete(req.Context(), resourceGroupNameParam, virtualNetworkNameParam, options) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + v.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + v.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + v.beginDelete.remove(req) + } + + return resp, nil +} + +func (v *VirtualNetworksServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if v.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualNetworks/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + virtualNetworkNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("virtualNetworkName")]) + if err != nil { + return nil, err + } + respr, errRespr := v.srv.Get(req.Context(), resourceGroupNameParam, virtualNetworkNameParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).VirtualNetwork, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (v *VirtualNetworksServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if v.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := v.newListPager.get(req) + if newListPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualNetworks` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resp := v.srv.NewListPager(nil) + newListPager = &resp + v.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armconnectedvmware.VirtualNetworksClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + v.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + v.newListPager.remove(req) + } + return resp, nil +} + +func (v *VirtualNetworksServerTransport) dispatchNewListByResourceGroupPager(req *http.Request) (*http.Response, error) { + if v.srv.NewListByResourceGroupPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListByResourceGroupPager not implemented")} + } + newListByResourceGroupPager := v.newListByResourceGroupPager.get(req) + if newListByResourceGroupPager == nil { + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualNetworks` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 2 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + resp := v.srv.NewListByResourceGroupPager(resourceGroupNameParam, nil) + newListByResourceGroupPager = &resp + v.newListByResourceGroupPager.add(req, newListByResourceGroupPager) + server.PagerResponderInjectNextLinks(newListByResourceGroupPager, req, func(page *armconnectedvmware.VirtualNetworksClientListByResourceGroupResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListByResourceGroupPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + v.newListByResourceGroupPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListByResourceGroupPager) { + v.newListByResourceGroupPager.remove(req) + } + return resp, nil +} + +func (v *VirtualNetworksServerTransport) dispatchUpdate(req *http.Request) (*http.Response, error) { + if v.srv.Update == nil { + return nil, &nonRetriableError{errors.New("fake for method Update not implemented")} + } + const regexStr = `/subscriptions/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualNetworks/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 3 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armconnectedvmware.ResourcePatch](req) + if err != nil { + return nil, err + } + resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) + if err != nil { + return nil, err + } + virtualNetworkNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("virtualNetworkName")]) + if err != nil { + return nil, err + } + respr, errRespr := v.srv.Update(req.Context(), resourceGroupNameParam, virtualNetworkNameParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).VirtualNetwork, req) + if err != nil { + return nil, err + } + return resp, nil +} diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/vminstanceguestagents_server.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/vminstanceguestagents_server.go new file mode 100644 index 000000000000..a90c5672f69d --- /dev/null +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/vminstanceguestagents_server.go @@ -0,0 +1,253 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// Code generated by Microsoft (R) AutoRest Code Generator.Changes may cause incorrect behavior and will be lost if the code +// is regenerated. +// Code generated by @autorest/go. DO NOT EDIT. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/connectedvmware/armconnectedvmware" + "net/http" + "net/url" + "regexp" +) + +// VMInstanceGuestAgentsServer is a fake server for instances of the armconnectedvmware.VMInstanceGuestAgentsClient type. +type VMInstanceGuestAgentsServer struct { + // BeginCreate is the fake for method VMInstanceGuestAgentsClient.BeginCreate + // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated + BeginCreate func(ctx context.Context, resourceURI string, body armconnectedvmware.GuestAgent, options *armconnectedvmware.VMInstanceGuestAgentsClientBeginCreateOptions) (resp azfake.PollerResponder[armconnectedvmware.VMInstanceGuestAgentsClientCreateResponse], errResp azfake.ErrorResponder) + + // BeginDelete is the fake for method VMInstanceGuestAgentsClient.BeginDelete + // HTTP status codes to indicate success: http.StatusAccepted, http.StatusNoContent + BeginDelete func(ctx context.Context, resourceURI string, options *armconnectedvmware.VMInstanceGuestAgentsClientBeginDeleteOptions) (resp azfake.PollerResponder[armconnectedvmware.VMInstanceGuestAgentsClientDeleteResponse], errResp azfake.ErrorResponder) + + // Get is the fake for method VMInstanceGuestAgentsClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceURI string, options *armconnectedvmware.VMInstanceGuestAgentsClientGetOptions) (resp azfake.Responder[armconnectedvmware.VMInstanceGuestAgentsClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method VMInstanceGuestAgentsClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(resourceURI string, options *armconnectedvmware.VMInstanceGuestAgentsClientListOptions) (resp azfake.PagerResponder[armconnectedvmware.VMInstanceGuestAgentsClientListResponse]) +} + +// NewVMInstanceGuestAgentsServerTransport creates a new instance of VMInstanceGuestAgentsServerTransport with the provided implementation. +// The returned VMInstanceGuestAgentsServerTransport instance is connected to an instance of armconnectedvmware.VMInstanceGuestAgentsClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewVMInstanceGuestAgentsServerTransport(srv *VMInstanceGuestAgentsServer) *VMInstanceGuestAgentsServerTransport { + return &VMInstanceGuestAgentsServerTransport{ + srv: srv, + beginCreate: newTracker[azfake.PollerResponder[armconnectedvmware.VMInstanceGuestAgentsClientCreateResponse]](), + beginDelete: newTracker[azfake.PollerResponder[armconnectedvmware.VMInstanceGuestAgentsClientDeleteResponse]](), + newListPager: newTracker[azfake.PagerResponder[armconnectedvmware.VMInstanceGuestAgentsClientListResponse]](), + } +} + +// VMInstanceGuestAgentsServerTransport connects instances of armconnectedvmware.VMInstanceGuestAgentsClient to instances of VMInstanceGuestAgentsServer. +// Don't use this type directly, use NewVMInstanceGuestAgentsServerTransport instead. +type VMInstanceGuestAgentsServerTransport struct { + srv *VMInstanceGuestAgentsServer + beginCreate *tracker[azfake.PollerResponder[armconnectedvmware.VMInstanceGuestAgentsClientCreateResponse]] + beginDelete *tracker[azfake.PollerResponder[armconnectedvmware.VMInstanceGuestAgentsClientDeleteResponse]] + newListPager *tracker[azfake.PagerResponder[armconnectedvmware.VMInstanceGuestAgentsClientListResponse]] +} + +// Do implements the policy.Transporter interface for VMInstanceGuestAgentsServerTransport. +func (v *VMInstanceGuestAgentsServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "VMInstanceGuestAgentsClient.BeginCreate": + resp, err = v.dispatchBeginCreate(req) + case "VMInstanceGuestAgentsClient.BeginDelete": + resp, err = v.dispatchBeginDelete(req) + case "VMInstanceGuestAgentsClient.Get": + resp, err = v.dispatchGet(req) + case "VMInstanceGuestAgentsClient.NewListPager": + resp, err = v.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (v *VMInstanceGuestAgentsServerTransport) dispatchBeginCreate(req *http.Request) (*http.Response, error) { + if v.srv.BeginCreate == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginCreate not implemented")} + } + beginCreate := v.beginCreate.get(req) + if beginCreate == nil { + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualMachineInstances/default/guestAgents/default` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + body, err := server.UnmarshalRequestAsJSON[armconnectedvmware.GuestAgent](req) + if err != nil { + return nil, err + } + resourceURIParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceUri")]) + if err != nil { + return nil, err + } + respr, errRespr := v.srv.BeginCreate(req.Context(), resourceURIParam, body, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginCreate = &respr + v.beginCreate.add(req, beginCreate) + } + + resp, err := server.PollerResponderNext(beginCreate, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusOK, http.StatusCreated}, resp.StatusCode) { + v.beginCreate.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", resp.StatusCode)} + } + if !server.PollerResponderMore(beginCreate) { + v.beginCreate.remove(req) + } + + return resp, nil +} + +func (v *VMInstanceGuestAgentsServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { + if v.srv.BeginDelete == nil { + return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} + } + beginDelete := v.beginDelete.get(req) + if beginDelete == nil { + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualMachineInstances/default/guestAgents/default` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceURIParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceUri")]) + if err != nil { + return nil, err + } + respr, errRespr := v.srv.BeginDelete(req.Context(), resourceURIParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + beginDelete = &respr + v.beginDelete.add(req, beginDelete) + } + + resp, err := server.PollerResponderNext(beginDelete, req) + if err != nil { + return nil, err + } + + if !contains([]int{http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { + v.beginDelete.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} + } + if !server.PollerResponderMore(beginDelete) { + v.beginDelete.remove(req) + } + + return resp, nil +} + +func (v *VMInstanceGuestAgentsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if v.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualMachineInstances/default/guestAgents/default` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceURIParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceUri")]) + if err != nil { + return nil, err + } + respr, errRespr := v.srv.Get(req.Context(), resourceURIParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).GuestAgent, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (v *VMInstanceGuestAgentsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if v.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := v.newListPager.get(req) + if newListPager == nil { + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualMachineInstances/default/guestAgents` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceURIParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceUri")]) + if err != nil { + return nil, err + } + resp := v.srv.NewListPager(resourceURIParam, nil) + newListPager = &resp + v.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armconnectedvmware.VMInstanceGuestAgentsClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + v.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + v.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/vminstancehybrididentitymetadata_server.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/vminstancehybrididentitymetadata_server.go new file mode 100644 index 000000000000..fc972ae287df --- /dev/null +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/fake/vminstancehybrididentitymetadata_server.go @@ -0,0 +1,153 @@ +//go:build go1.18 +// +build go1.18 + +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// Code generated by Microsoft (R) AutoRest Code Generator.Changes may cause incorrect behavior and will be lost if the code +// is regenerated. +// Code generated by @autorest/go. DO NOT EDIT. + +package fake + +import ( + "context" + "errors" + "fmt" + azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" + "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" + "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/connectedvmware/armconnectedvmware" + "net/http" + "net/url" + "regexp" +) + +// VMInstanceHybridIdentityMetadataServer is a fake server for instances of the armconnectedvmware.VMInstanceHybridIdentityMetadataClient type. +type VMInstanceHybridIdentityMetadataServer struct { + // Get is the fake for method VMInstanceHybridIdentityMetadataClient.Get + // HTTP status codes to indicate success: http.StatusOK + Get func(ctx context.Context, resourceURI string, options *armconnectedvmware.VMInstanceHybridIdentityMetadataClientGetOptions) (resp azfake.Responder[armconnectedvmware.VMInstanceHybridIdentityMetadataClientGetResponse], errResp azfake.ErrorResponder) + + // NewListPager is the fake for method VMInstanceHybridIdentityMetadataClient.NewListPager + // HTTP status codes to indicate success: http.StatusOK + NewListPager func(resourceURI string, options *armconnectedvmware.VMInstanceHybridIdentityMetadataClientListOptions) (resp azfake.PagerResponder[armconnectedvmware.VMInstanceHybridIdentityMetadataClientListResponse]) +} + +// NewVMInstanceHybridIdentityMetadataServerTransport creates a new instance of VMInstanceHybridIdentityMetadataServerTransport with the provided implementation. +// The returned VMInstanceHybridIdentityMetadataServerTransport instance is connected to an instance of armconnectedvmware.VMInstanceHybridIdentityMetadataClient via the +// azcore.ClientOptions.Transporter field in the client's constructor parameters. +func NewVMInstanceHybridIdentityMetadataServerTransport(srv *VMInstanceHybridIdentityMetadataServer) *VMInstanceHybridIdentityMetadataServerTransport { + return &VMInstanceHybridIdentityMetadataServerTransport{ + srv: srv, + newListPager: newTracker[azfake.PagerResponder[armconnectedvmware.VMInstanceHybridIdentityMetadataClientListResponse]](), + } +} + +// VMInstanceHybridIdentityMetadataServerTransport connects instances of armconnectedvmware.VMInstanceHybridIdentityMetadataClient to instances of VMInstanceHybridIdentityMetadataServer. +// Don't use this type directly, use NewVMInstanceHybridIdentityMetadataServerTransport instead. +type VMInstanceHybridIdentityMetadataServerTransport struct { + srv *VMInstanceHybridIdentityMetadataServer + newListPager *tracker[azfake.PagerResponder[armconnectedvmware.VMInstanceHybridIdentityMetadataClientListResponse]] +} + +// Do implements the policy.Transporter interface for VMInstanceHybridIdentityMetadataServerTransport. +func (v *VMInstanceHybridIdentityMetadataServerTransport) Do(req *http.Request) (*http.Response, error) { + rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) + method, ok := rawMethod.(string) + if !ok { + return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} + } + + var resp *http.Response + var err error + + switch method { + case "VMInstanceHybridIdentityMetadataClient.Get": + resp, err = v.dispatchGet(req) + case "VMInstanceHybridIdentityMetadataClient.NewListPager": + resp, err = v.dispatchNewListPager(req) + default: + err = fmt.Errorf("unhandled API %s", method) + } + + if err != nil { + return nil, err + } + + return resp, nil +} + +func (v *VMInstanceHybridIdentityMetadataServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { + if v.srv.Get == nil { + return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} + } + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualMachineInstances/default/hybridIdentityMetadata/default` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceURIParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceUri")]) + if err != nil { + return nil, err + } + respr, errRespr := v.srv.Get(req.Context(), resourceURIParam, nil) + if respErr := server.GetError(errRespr, req); respErr != nil { + return nil, respErr + } + respContent := server.GetResponseContent(respr) + if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} + } + resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).VMInstanceHybridIdentityMetadata, req) + if err != nil { + return nil, err + } + return resp, nil +} + +func (v *VMInstanceHybridIdentityMetadataServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { + if v.srv.NewListPager == nil { + return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} + } + newListPager := v.newListPager.get(req) + if newListPager == nil { + const regexStr = `/(?P[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.ConnectedVMwarevSphere/virtualMachineInstances/default/hybridIdentityMetadata` + regex := regexp.MustCompile(regexStr) + matches := regex.FindStringSubmatch(req.URL.EscapedPath()) + if matches == nil || len(matches) < 1 { + return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) + } + resourceURIParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceUri")]) + if err != nil { + return nil, err + } + resp := v.srv.NewListPager(resourceURIParam, nil) + newListPager = &resp + v.newListPager.add(req, newListPager) + server.PagerResponderInjectNextLinks(newListPager, req, func(page *armconnectedvmware.VMInstanceHybridIdentityMetadataClientListResponse, createLink func() string) { + page.NextLink = to.Ptr(createLink()) + }) + } + resp, err := server.PagerResponderNext(newListPager, req) + if err != nil { + return nil, err + } + if !contains([]int{http.StatusOK}, resp.StatusCode) { + v.newListPager.remove(req) + return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} + } + if !server.PagerResponderMore(newListPager) { + v.newListPager.remove(req) + } + return resp, nil +} diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/go.mod b/sdk/resourcemanager/connectedvmware/armconnectedvmware/go.mod index 5cd0d19da48a..fc548c20742a 100644 --- a/sdk/resourcemanager/connectedvmware/armconnectedvmware/go.mod +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/go.mod @@ -3,19 +3,19 @@ module github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/connectedvmware/arm go 1.18 require ( - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.1 - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.1 + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 ) require ( - github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 // indirect github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 // indirect github.com/golang-jwt/jwt/v5 v5.0.0 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/google/uuid v1.3.1 // indirect github.com/kylelemons/godebug v1.1.0 // indirect github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect - golang.org/x/crypto v0.12.0 // indirect - golang.org/x/net v0.14.0 // indirect - golang.org/x/sys v0.11.0 // indirect - golang.org/x/text v0.12.0 // indirect + golang.org/x/crypto v0.14.0 // indirect + golang.org/x/net v0.17.0 // indirect + golang.org/x/sys v0.13.0 // indirect + golang.org/x/text v0.13.0 // indirect ) diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/go.sum b/sdk/resourcemanager/connectedvmware/armconnectedvmware/go.sum index 545850a5189d..7985f1da436f 100644 --- a/sdk/resourcemanager/connectedvmware/armconnectedvmware/go.sum +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/go.sum @@ -1,31 +1,31 @@ -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.1 h1:/iHxaJhsFr0+xVFfbMr5vxz848jyiWuIEDhYq3y5odY= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.7.1/go.mod h1:bjGvMhVMb+EEm3VRNQawDMUyMMjo+S5ewNjflkep/0Q= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.1 h1:LNHhpdK7hzUcx/k1LIcuh5k7k1LGIWLQfCjaneSj7Fc= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.3.1/go.mod h1:uE9zaUfEQT/nbQjVi2IblCG9iaLtZsuYZ8ne+PuQ02M= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0 h1:sXr+ck84g/ZlZUOZiNELInmMgOsuGwdjjVkEIde0OtY= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.3.0/go.mod h1:okt5dMMTOFjX/aovMlrjvvXoPMBVSPzk9185BT0+eZM= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 h1:fb8kj/Dh4CSwgsOzHeZY4Xh68cFVbzXx+ONXGMY//4w= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0/go.mod h1:uReU2sSxZExRPBAg3qKzmAucSi51+SP1OhohieR821Q= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 h1:BMAjVKJM0U/CYF27gA0ZMmXGkOcvfFtD0oHVZ1TIPRI= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0/go.mod h1:1fXstnBMas5kzG+S3q8UoJcmyU6nUeunJcMDHcRYHhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 h1:d81/ng9rET2YqdVkVwkb6EXeRrLJIwyGnJcAlAWKwhs= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0/go.mod h1:s4kgfzA0covAXNicZHDMN58jExvcng2mC/DepXiF1EI= github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1 h1:WpB/QDNLpMw72xHJc34BNNykqSOeEJDAWkhf0u12/Jk= github.com/AzureAD/microsoft-authentication-library-for-go v1.1.1/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= github.com/golang-jwt/jwt/v5 v5.0.0 h1:1n1XNM9hk7O9mnQoNBGolZvzebBQ7p93ULHRc28XJUE= github.com/golang-jwt/jwt/v5 v5.0.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= -github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= -golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= -golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= -golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= -golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= -golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= -golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/hosts_client.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/hosts_client.go index 70f5edbf6c62..8b6e12df4aa8 100644 --- a/sdk/resourcemanager/connectedvmware/armconnectedvmware/hosts_client.go +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/hosts_client.go @@ -42,7 +42,7 @@ type HostsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewHostsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*HostsClient, error) { - cl, err := arm.NewClient(moduleName+".HostsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -69,10 +69,13 @@ func (client *HostsClient) BeginCreate(ctx context.Context, resourceGroupName st } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[HostsClientCreateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[HostsClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[HostsClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -82,6 +85,10 @@ func (client *HostsClient) BeginCreate(ctx context.Context, resourceGroupName st // Generated from API version 2023-10-01 func (client *HostsClient) create(ctx context.Context, resourceGroupName string, hostName string, body Host, options *HostsClientBeginCreateOptions) (*http.Response, error) { var err error + const operationName = "HostsClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, hostName, body, options) if err != nil { return nil, err @@ -139,10 +146,14 @@ func (client *HostsClient) BeginDelete(ctx context.Context, resourceGroupName st if err != nil { return nil, err } - poller, err := runtime.NewPoller[HostsClientDeleteResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[HostsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[HostsClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[HostsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -152,6 +163,10 @@ func (client *HostsClient) BeginDelete(ctx context.Context, resourceGroupName st // Generated from API version 2023-10-01 func (client *HostsClient) deleteOperation(ctx context.Context, resourceGroupName string, hostName string, options *HostsClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "HostsClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, hostName, options) if err != nil { return nil, err @@ -205,6 +220,10 @@ func (client *HostsClient) deleteCreateRequest(ctx context.Context, resourceGrou // - options - HostsClientGetOptions contains the optional parameters for the HostsClient.Get method. func (client *HostsClient) Get(ctx context.Context, resourceGroupName string, hostName string, options *HostsClientGetOptions) (HostsClientGetResponse, error) { var err error + const operationName = "HostsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, hostName, options) if err != nil { return HostsClientGetResponse{}, err @@ -266,25 +285,20 @@ func (client *HostsClient) NewListPager(options *HostsClientListOptions) *runtim return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *HostsClientListResponse) (HostsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return HostsClientListResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "HostsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return HostsClientListResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return HostsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -327,25 +341,20 @@ func (client *HostsClient) NewListByResourceGroupPager(resourceGroupName string, return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *HostsClientListByResourceGroupResponse) (HostsClientListByResourceGroupResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByResourceGroupCreateRequest(ctx, resourceGroupName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "HostsClient.NewListByResourceGroupPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByResourceGroupCreateRequest(ctx, resourceGroupName, options) + }, nil) if err != nil { return HostsClientListByResourceGroupResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return HostsClientListByResourceGroupResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return HostsClientListByResourceGroupResponse{}, runtime.NewResponseError(resp) - } return client.listByResourceGroupHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -390,6 +399,10 @@ func (client *HostsClient) listByResourceGroupHandleResponse(resp *http.Response // - options - HostsClientUpdateOptions contains the optional parameters for the HostsClient.Update method. func (client *HostsClient) Update(ctx context.Context, resourceGroupName string, hostName string, body ResourcePatch, options *HostsClientUpdateOptions) (HostsClientUpdateResponse, error) { var err error + const operationName = "HostsClient.Update" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceGroupName, hostName, body, options) if err != nil { return HostsClientUpdateResponse{}, err diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/inventoryitems_client.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/inventoryitems_client.go index 858223486c97..52cc9ffc9617 100644 --- a/sdk/resourcemanager/connectedvmware/armconnectedvmware/inventoryitems_client.go +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/inventoryitems_client.go @@ -41,7 +41,7 @@ type InventoryItemsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewInventoryItemsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*InventoryItemsClient, error) { - cl, err := arm.NewClient(moduleName+".InventoryItemsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -63,6 +63,10 @@ func NewInventoryItemsClient(subscriptionID string, credential azcore.TokenCrede // - options - InventoryItemsClientCreateOptions contains the optional parameters for the InventoryItemsClient.Create method. func (client *InventoryItemsClient) Create(ctx context.Context, resourceGroupName string, vcenterName string, inventoryItemName string, body InventoryItem, options *InventoryItemsClientCreateOptions) (InventoryItemsClientCreateResponse, error) { var err error + const operationName = "InventoryItemsClient.Create" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, vcenterName, inventoryItemName, body, options) if err != nil { return InventoryItemsClientCreateResponse{}, err @@ -131,6 +135,10 @@ func (client *InventoryItemsClient) createHandleResponse(resp *http.Response) (I // - options - InventoryItemsClientDeleteOptions contains the optional parameters for the InventoryItemsClient.Delete method. func (client *InventoryItemsClient) Delete(ctx context.Context, resourceGroupName string, vcenterName string, inventoryItemName string, options *InventoryItemsClientDeleteOptions) (InventoryItemsClientDeleteResponse, error) { var err error + const operationName = "InventoryItemsClient.Delete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, vcenterName, inventoryItemName, options) if err != nil { return InventoryItemsClientDeleteResponse{}, err @@ -186,6 +194,10 @@ func (client *InventoryItemsClient) deleteCreateRequest(ctx context.Context, res // - options - InventoryItemsClientGetOptions contains the optional parameters for the InventoryItemsClient.Get method. func (client *InventoryItemsClient) Get(ctx context.Context, resourceGroupName string, vcenterName string, inventoryItemName string, options *InventoryItemsClientGetOptions) (InventoryItemsClientGetResponse, error) { var err error + const operationName = "InventoryItemsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, vcenterName, inventoryItemName, options) if err != nil { return InventoryItemsClientGetResponse{}, err @@ -254,25 +266,20 @@ func (client *InventoryItemsClient) NewListByVCenterPager(resourceGroupName stri return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *InventoryItemsClientListByVCenterResponse) (InventoryItemsClientListByVCenterResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByVCenterCreateRequest(ctx, resourceGroupName, vcenterName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "InventoryItemsClient.NewListByVCenterPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByVCenterCreateRequest(ctx, resourceGroupName, vcenterName, options) + }, nil) if err != nil { return InventoryItemsClientListByVCenterResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return InventoryItemsClientListByVCenterResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return InventoryItemsClientListByVCenterResponse{}, runtime.NewResponseError(resp) - } return client.listByVCenterHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/models_serde.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/models_serde.go index 73c10a30d8d6..dc962950fc8f 100644 --- a/sdk/resourcemanager/connectedvmware/armconnectedvmware/models_serde.go +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/models_serde.go @@ -1871,7 +1871,7 @@ func (r *ResourcePoolsList) UnmarshalJSON(data []byte) error { // MarshalJSON implements the json.Marshaller interface for type ResourceStatus. func (r ResourceStatus) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populateTimeRFC3339(objectMap, "lastUpdatedAt", r.LastUpdatedAt) + populateDateTimeRFC3339(objectMap, "lastUpdatedAt", r.LastUpdatedAt) populate(objectMap, "message", r.Message) populate(objectMap, "reason", r.Reason) populate(objectMap, "severity", r.Severity) @@ -1890,7 +1890,7 @@ func (r *ResourceStatus) UnmarshalJSON(data []byte) error { var err error switch key { case "lastUpdatedAt": - err = unpopulateTimeRFC3339(val, "LastUpdatedAt", &r.LastUpdatedAt) + err = unpopulateDateTimeRFC3339(val, "LastUpdatedAt", &r.LastUpdatedAt) delete(rawMsg, key) case "message": err = unpopulate(val, "Message", &r.Message) @@ -2030,10 +2030,10 @@ func (s *StorageProfileUpdate) UnmarshalJSON(data []byte) error { // MarshalJSON implements the json.Marshaller interface for type SystemData. func (s SystemData) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populateTimeRFC3339(objectMap, "createdAt", s.CreatedAt) + populateDateTimeRFC3339(objectMap, "createdAt", s.CreatedAt) populate(objectMap, "createdBy", s.CreatedBy) populate(objectMap, "createdByType", s.CreatedByType) - populateTimeRFC3339(objectMap, "lastModifiedAt", s.LastModifiedAt) + populateDateTimeRFC3339(objectMap, "lastModifiedAt", s.LastModifiedAt) populate(objectMap, "lastModifiedBy", s.LastModifiedBy) populate(objectMap, "lastModifiedByType", s.LastModifiedByType) return json.Marshal(objectMap) @@ -2049,7 +2049,7 @@ func (s *SystemData) UnmarshalJSON(data []byte) error { var err error switch key { case "createdAt": - err = unpopulateTimeRFC3339(val, "CreatedAt", &s.CreatedAt) + err = unpopulateDateTimeRFC3339(val, "CreatedAt", &s.CreatedAt) delete(rawMsg, key) case "createdBy": err = unpopulate(val, "CreatedBy", &s.CreatedBy) @@ -2058,7 +2058,7 @@ func (s *SystemData) UnmarshalJSON(data []byte) error { err = unpopulate(val, "CreatedByType", &s.CreatedByType) delete(rawMsg, key) case "lastModifiedAt": - err = unpopulateTimeRFC3339(val, "LastModifiedAt", &s.LastModifiedAt) + err = unpopulateDateTimeRFC3339(val, "LastModifiedAt", &s.LastModifiedAt) delete(rawMsg, key) case "lastModifiedBy": err = unpopulate(val, "LastModifiedBy", &s.LastModifiedBy) diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/operations_client.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/operations_client.go index a3b88afe7fc8..3d662a1e703a 100644 --- a/sdk/resourcemanager/connectedvmware/armconnectedvmware/operations_client.go +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/operations_client.go @@ -36,7 +36,7 @@ type OperationsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewOperationsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*OperationsClient, error) { - cl, err := arm.NewClient(moduleName+".OperationsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -56,25 +56,20 @@ func (client *OperationsClient) NewListPager(options *OperationsClientListOption return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *OperationsClientListResponse) (OperationsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "OperationsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return OperationsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return OperationsClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return OperationsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/resourcepools_client.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/resourcepools_client.go index 2b8d2360d6a3..acd91ef86445 100644 --- a/sdk/resourcemanager/connectedvmware/armconnectedvmware/resourcepools_client.go +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/resourcepools_client.go @@ -42,7 +42,7 @@ type ResourcePoolsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewResourcePoolsClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*ResourcePoolsClient, error) { - cl, err := arm.NewClient(moduleName+".ResourcePoolsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -70,10 +70,13 @@ func (client *ResourcePoolsClient) BeginCreate(ctx context.Context, resourceGrou } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[ResourcePoolsClientCreateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[ResourcePoolsClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[ResourcePoolsClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -83,6 +86,10 @@ func (client *ResourcePoolsClient) BeginCreate(ctx context.Context, resourceGrou // Generated from API version 2023-10-01 func (client *ResourcePoolsClient) create(ctx context.Context, resourceGroupName string, resourcePoolName string, body ResourcePool, options *ResourcePoolsClientBeginCreateOptions) (*http.Response, error) { var err error + const operationName = "ResourcePoolsClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, resourcePoolName, body, options) if err != nil { return nil, err @@ -141,10 +148,14 @@ func (client *ResourcePoolsClient) BeginDelete(ctx context.Context, resourceGrou if err != nil { return nil, err } - poller, err := runtime.NewPoller[ResourcePoolsClientDeleteResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[ResourcePoolsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[ResourcePoolsClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[ResourcePoolsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -154,6 +165,10 @@ func (client *ResourcePoolsClient) BeginDelete(ctx context.Context, resourceGrou // Generated from API version 2023-10-01 func (client *ResourcePoolsClient) deleteOperation(ctx context.Context, resourceGroupName string, resourcePoolName string, options *ResourcePoolsClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "ResourcePoolsClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, resourcePoolName, options) if err != nil { return nil, err @@ -207,6 +222,10 @@ func (client *ResourcePoolsClient) deleteCreateRequest(ctx context.Context, reso // - options - ResourcePoolsClientGetOptions contains the optional parameters for the ResourcePoolsClient.Get method. func (client *ResourcePoolsClient) Get(ctx context.Context, resourceGroupName string, resourcePoolName string, options *ResourcePoolsClientGetOptions) (ResourcePoolsClientGetResponse, error) { var err error + const operationName = "ResourcePoolsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, resourcePoolName, options) if err != nil { return ResourcePoolsClientGetResponse{}, err @@ -268,25 +287,20 @@ func (client *ResourcePoolsClient) NewListPager(options *ResourcePoolsClientList return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ResourcePoolsClientListResponse) (ResourcePoolsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return ResourcePoolsClientListResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ResourcePoolsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return ResourcePoolsClientListResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ResourcePoolsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -329,25 +343,20 @@ func (client *ResourcePoolsClient) NewListByResourceGroupPager(resourceGroupName return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *ResourcePoolsClientListByResourceGroupResponse) (ResourcePoolsClientListByResourceGroupResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByResourceGroupCreateRequest(ctx, resourceGroupName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "ResourcePoolsClient.NewListByResourceGroupPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByResourceGroupCreateRequest(ctx, resourceGroupName, options) + }, nil) if err != nil { return ResourcePoolsClientListByResourceGroupResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return ResourcePoolsClientListByResourceGroupResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return ResourcePoolsClientListByResourceGroupResponse{}, runtime.NewResponseError(resp) - } return client.listByResourceGroupHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -392,6 +401,10 @@ func (client *ResourcePoolsClient) listByResourceGroupHandleResponse(resp *http. // - options - ResourcePoolsClientUpdateOptions contains the optional parameters for the ResourcePoolsClient.Update method. func (client *ResourcePoolsClient) Update(ctx context.Context, resourceGroupName string, resourcePoolName string, body ResourcePatch, options *ResourcePoolsClientUpdateOptions) (ResourcePoolsClientUpdateResponse, error) { var err error + const operationName = "ResourcePoolsClient.Update" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceGroupName, resourcePoolName, body, options) if err != nil { return ResourcePoolsClientUpdateResponse{}, err diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/time_rfc3339.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/time_rfc3339.go index 2440c0beec07..b2bbeaa149ed 100644 --- a/sdk/resourcemanager/connectedvmware/armconnectedvmware/time_rfc3339.go +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/time_rfc3339.go @@ -27,50 +27,50 @@ import ( "time" ) -const ( - utcLayoutJSON = `"2006-01-02T15:04:05.999999999"` - utcLayout = "2006-01-02T15:04:05.999999999" - rfc3339JSON = `"` + time.RFC3339Nano + `"` -) - // Azure reports time in UTC but it doesn't include the 'Z' time zone suffix in some cases. var tzOffsetRegex = regexp.MustCompile(`(Z|z|\+|-)(\d+:\d+)*"*$`) -type timeRFC3339 time.Time +const ( + utcDateTimeJSON = `"2006-01-02T15:04:05.999999999"` + utcDateTime = "2006-01-02T15:04:05.999999999" + dateTimeJSON = `"` + time.RFC3339Nano + `"` +) + +type dateTimeRFC3339 time.Time -func (t timeRFC3339) MarshalJSON() (json []byte, err error) { +func (t dateTimeRFC3339) MarshalJSON() ([]byte, error) { tt := time.Time(t) return tt.MarshalJSON() } -func (t timeRFC3339) MarshalText() (text []byte, err error) { +func (t dateTimeRFC3339) MarshalText() ([]byte, error) { tt := time.Time(t) return tt.MarshalText() } -func (t *timeRFC3339) UnmarshalJSON(data []byte) error { - layout := utcLayoutJSON +func (t *dateTimeRFC3339) UnmarshalJSON(data []byte) error { + layout := utcDateTimeJSON if tzOffsetRegex.Match(data) { - layout = rfc3339JSON + layout = dateTimeJSON } return t.Parse(layout, string(data)) } -func (t *timeRFC3339) UnmarshalText(data []byte) (err error) { - layout := utcLayout +func (t *dateTimeRFC3339) UnmarshalText(data []byte) error { + layout := utcDateTime if tzOffsetRegex.Match(data) { layout = time.RFC3339Nano } return t.Parse(layout, string(data)) } -func (t *timeRFC3339) Parse(layout, value string) error { +func (t *dateTimeRFC3339) Parse(layout, value string) error { p, err := time.Parse(layout, strings.ToUpper(value)) - *t = timeRFC3339(p) + *t = dateTimeRFC3339(p) return err } -func populateTimeRFC3339(m map[string]any, k string, t *time.Time) { +func populateDateTimeRFC3339(m map[string]any, k string, t *time.Time) { if t == nil { return } else if azcore.IsNullValue(t) { @@ -79,14 +79,14 @@ func populateTimeRFC3339(m map[string]any, k string, t *time.Time) { } else if reflect.ValueOf(t).IsNil() { return } - m[k] = (*timeRFC3339)(t) + m[k] = (*dateTimeRFC3339)(t) } -func unpopulateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { +func unpopulateDateTimeRFC3339(data json.RawMessage, fn string, t **time.Time) error { if data == nil || strings.EqualFold(string(data), "null") { return nil } - var aux timeRFC3339 + var aux dateTimeRFC3339 if err := json.Unmarshal(data, &aux); err != nil { return fmt.Errorf("struct field %s: %v", fn, err) } diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/vcenters_client.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/vcenters_client.go index 7d738c1273bf..b8e27f069e3c 100644 --- a/sdk/resourcemanager/connectedvmware/armconnectedvmware/vcenters_client.go +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/vcenters_client.go @@ -42,7 +42,7 @@ type VCentersClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewVCentersClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*VCentersClient, error) { - cl, err := arm.NewClient(moduleName+".VCentersClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -69,10 +69,13 @@ func (client *VCentersClient) BeginCreate(ctx context.Context, resourceGroupName } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VCentersClientCreateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[VCentersClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VCentersClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -82,6 +85,10 @@ func (client *VCentersClient) BeginCreate(ctx context.Context, resourceGroupName // Generated from API version 2023-10-01 func (client *VCentersClient) create(ctx context.Context, resourceGroupName string, vcenterName string, body VCenter, options *VCentersClientBeginCreateOptions) (*http.Response, error) { var err error + const operationName = "VCentersClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, vcenterName, body, options) if err != nil { return nil, err @@ -139,10 +146,14 @@ func (client *VCentersClient) BeginDelete(ctx context.Context, resourceGroupName if err != nil { return nil, err } - poller, err := runtime.NewPoller[VCentersClientDeleteResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VCentersClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[VCentersClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VCentersClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -152,6 +163,10 @@ func (client *VCentersClient) BeginDelete(ctx context.Context, resourceGroupName // Generated from API version 2023-10-01 func (client *VCentersClient) deleteOperation(ctx context.Context, resourceGroupName string, vcenterName string, options *VCentersClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "VCentersClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, vcenterName, options) if err != nil { return nil, err @@ -205,6 +220,10 @@ func (client *VCentersClient) deleteCreateRequest(ctx context.Context, resourceG // - options - VCentersClientGetOptions contains the optional parameters for the VCentersClient.Get method. func (client *VCentersClient) Get(ctx context.Context, resourceGroupName string, vcenterName string, options *VCentersClientGetOptions) (VCentersClientGetResponse, error) { var err error + const operationName = "VCentersClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, vcenterName, options) if err != nil { return VCentersClientGetResponse{}, err @@ -266,25 +285,20 @@ func (client *VCentersClient) NewListPager(options *VCentersClientListOptions) * return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *VCentersClientListResponse) (VCentersClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return VCentersClientListResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "VCentersClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return VCentersClientListResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return VCentersClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -327,25 +341,20 @@ func (client *VCentersClient) NewListByResourceGroupPager(resourceGroupName stri return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *VCentersClientListByResourceGroupResponse) (VCentersClientListByResourceGroupResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByResourceGroupCreateRequest(ctx, resourceGroupName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "VCentersClient.NewListByResourceGroupPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByResourceGroupCreateRequest(ctx, resourceGroupName, options) + }, nil) if err != nil { return VCentersClientListByResourceGroupResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return VCentersClientListByResourceGroupResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return VCentersClientListByResourceGroupResponse{}, runtime.NewResponseError(resp) - } return client.listByResourceGroupHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -390,6 +399,10 @@ func (client *VCentersClient) listByResourceGroupHandleResponse(resp *http.Respo // - options - VCentersClientUpdateOptions contains the optional parameters for the VCentersClient.Update method. func (client *VCentersClient) Update(ctx context.Context, resourceGroupName string, vcenterName string, body ResourcePatch, options *VCentersClientUpdateOptions) (VCentersClientUpdateResponse, error) { var err error + const operationName = "VCentersClient.Update" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceGroupName, vcenterName, body, options) if err != nil { return VCentersClientUpdateResponse{}, err diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/virtualmachineinstances_client.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/virtualmachineinstances_client.go index 4fc6844059fd..c15160b72b02 100644 --- a/sdk/resourcemanager/connectedvmware/armconnectedvmware/virtualmachineinstances_client.go +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/virtualmachineinstances_client.go @@ -38,7 +38,7 @@ type VirtualMachineInstancesClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewVirtualMachineInstancesClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*VirtualMachineInstancesClient, error) { - cl, err := arm.NewClient(moduleName+".VirtualMachineInstancesClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -65,10 +65,13 @@ func (client *VirtualMachineInstancesClient) BeginCreateOrUpdate(ctx context.Con } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VirtualMachineInstancesClientCreateOrUpdateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[VirtualMachineInstancesClientCreateOrUpdateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VirtualMachineInstancesClientCreateOrUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -79,6 +82,10 @@ func (client *VirtualMachineInstancesClient) BeginCreateOrUpdate(ctx context.Con // Generated from API version 2023-10-01 func (client *VirtualMachineInstancesClient) createOrUpdate(ctx context.Context, resourceURI string, body VirtualMachineInstance, options *VirtualMachineInstancesClientBeginCreateOrUpdateOptions) (*http.Response, error) { var err error + const operationName = "VirtualMachineInstancesClient.BeginCreateOrUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createOrUpdateCreateRequest(ctx, resourceURI, body, options) if err != nil { return nil, err @@ -127,10 +134,13 @@ func (client *VirtualMachineInstancesClient) BeginDelete(ctx context.Context, re } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VirtualMachineInstancesClientDeleteResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[VirtualMachineInstancesClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VirtualMachineInstancesClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -140,6 +150,10 @@ func (client *VirtualMachineInstancesClient) BeginDelete(ctx context.Context, re // Generated from API version 2023-10-01 func (client *VirtualMachineInstancesClient) deleteOperation(ctx context.Context, resourceURI string, options *VirtualMachineInstancesClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "VirtualMachineInstancesClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceURI, options) if err != nil { return nil, err @@ -185,6 +199,10 @@ func (client *VirtualMachineInstancesClient) deleteCreateRequest(ctx context.Con // method. func (client *VirtualMachineInstancesClient) Get(ctx context.Context, resourceURI string, options *VirtualMachineInstancesClientGetOptions) (VirtualMachineInstancesClientGetResponse, error) { var err error + const operationName = "VirtualMachineInstancesClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceURI, options) if err != nil { return VirtualMachineInstancesClientGetResponse{}, err @@ -237,25 +255,20 @@ func (client *VirtualMachineInstancesClient) NewListPager(resourceURI string, op return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *VirtualMachineInstancesClientListResponse) (VirtualMachineInstancesClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, resourceURI, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return VirtualMachineInstancesClientListResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "VirtualMachineInstancesClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, resourceURI, options) + }, nil) if err != nil { return VirtualMachineInstancesClientListResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return VirtualMachineInstancesClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -298,10 +311,13 @@ func (client *VirtualMachineInstancesClient) BeginRestart(ctx context.Context, r } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VirtualMachineInstancesClientRestartResponse]{ FinalStateVia: runtime.FinalStateViaLocation, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[VirtualMachineInstancesClientRestartResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VirtualMachineInstancesClientRestartResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -311,6 +327,10 @@ func (client *VirtualMachineInstancesClient) BeginRestart(ctx context.Context, r // Generated from API version 2023-10-01 func (client *VirtualMachineInstancesClient) restart(ctx context.Context, resourceURI string, options *VirtualMachineInstancesClientBeginRestartOptions) (*http.Response, error) { var err error + const operationName = "VirtualMachineInstancesClient.BeginRestart" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.restartCreateRequest(ctx, resourceURI, options) if err != nil { return nil, err @@ -356,10 +376,13 @@ func (client *VirtualMachineInstancesClient) BeginStart(ctx context.Context, res } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VirtualMachineInstancesClientStartResponse]{ FinalStateVia: runtime.FinalStateViaLocation, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[VirtualMachineInstancesClientStartResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VirtualMachineInstancesClientStartResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -369,6 +392,10 @@ func (client *VirtualMachineInstancesClient) BeginStart(ctx context.Context, res // Generated from API version 2023-10-01 func (client *VirtualMachineInstancesClient) start(ctx context.Context, resourceURI string, options *VirtualMachineInstancesClientBeginStartOptions) (*http.Response, error) { var err error + const operationName = "VirtualMachineInstancesClient.BeginStart" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.startCreateRequest(ctx, resourceURI, options) if err != nil { return nil, err @@ -414,10 +441,13 @@ func (client *VirtualMachineInstancesClient) BeginStop(ctx context.Context, reso } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VirtualMachineInstancesClientStopResponse]{ FinalStateVia: runtime.FinalStateViaLocation, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[VirtualMachineInstancesClientStopResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VirtualMachineInstancesClientStopResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -427,6 +457,10 @@ func (client *VirtualMachineInstancesClient) BeginStop(ctx context.Context, reso // Generated from API version 2023-10-01 func (client *VirtualMachineInstancesClient) stop(ctx context.Context, resourceURI string, options *VirtualMachineInstancesClientBeginStopOptions) (*http.Response, error) { var err error + const operationName = "VirtualMachineInstancesClient.BeginStop" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.stopCreateRequest(ctx, resourceURI, options) if err != nil { return nil, err @@ -479,10 +513,13 @@ func (client *VirtualMachineInstancesClient) BeginUpdate(ctx context.Context, re } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VirtualMachineInstancesClientUpdateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[VirtualMachineInstancesClientUpdateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VirtualMachineInstancesClientUpdateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -492,6 +529,10 @@ func (client *VirtualMachineInstancesClient) BeginUpdate(ctx context.Context, re // Generated from API version 2023-10-01 func (client *VirtualMachineInstancesClient) update(ctx context.Context, resourceURI string, body VirtualMachineInstanceUpdate, options *VirtualMachineInstancesClientBeginUpdateOptions) (*http.Response, error) { var err error + const operationName = "VirtualMachineInstancesClient.BeginUpdate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceURI, body, options) if err != nil { return nil, err diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/virtualmachinetemplates_client.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/virtualmachinetemplates_client.go index 8dc85bc63bfc..2e06194086ea 100644 --- a/sdk/resourcemanager/connectedvmware/armconnectedvmware/virtualmachinetemplates_client.go +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/virtualmachinetemplates_client.go @@ -42,7 +42,7 @@ type VirtualMachineTemplatesClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewVirtualMachineTemplatesClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*VirtualMachineTemplatesClient, error) { - cl, err := arm.NewClient(moduleName+".VirtualMachineTemplatesClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -70,10 +70,13 @@ func (client *VirtualMachineTemplatesClient) BeginCreate(ctx context.Context, re } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VirtualMachineTemplatesClientCreateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[VirtualMachineTemplatesClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VirtualMachineTemplatesClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -83,6 +86,10 @@ func (client *VirtualMachineTemplatesClient) BeginCreate(ctx context.Context, re // Generated from API version 2023-10-01 func (client *VirtualMachineTemplatesClient) create(ctx context.Context, resourceGroupName string, virtualMachineTemplateName string, body VirtualMachineTemplate, options *VirtualMachineTemplatesClientBeginCreateOptions) (*http.Response, error) { var err error + const operationName = "VirtualMachineTemplatesClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, virtualMachineTemplateName, body, options) if err != nil { return nil, err @@ -141,10 +148,14 @@ func (client *VirtualMachineTemplatesClient) BeginDelete(ctx context.Context, re if err != nil { return nil, err } - poller, err := runtime.NewPoller[VirtualMachineTemplatesClientDeleteResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VirtualMachineTemplatesClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[VirtualMachineTemplatesClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VirtualMachineTemplatesClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -154,6 +165,10 @@ func (client *VirtualMachineTemplatesClient) BeginDelete(ctx context.Context, re // Generated from API version 2023-10-01 func (client *VirtualMachineTemplatesClient) deleteOperation(ctx context.Context, resourceGroupName string, virtualMachineTemplateName string, options *VirtualMachineTemplatesClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "VirtualMachineTemplatesClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, virtualMachineTemplateName, options) if err != nil { return nil, err @@ -208,6 +223,10 @@ func (client *VirtualMachineTemplatesClient) deleteCreateRequest(ctx context.Con // method. func (client *VirtualMachineTemplatesClient) Get(ctx context.Context, resourceGroupName string, virtualMachineTemplateName string, options *VirtualMachineTemplatesClientGetOptions) (VirtualMachineTemplatesClientGetResponse, error) { var err error + const operationName = "VirtualMachineTemplatesClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, virtualMachineTemplateName, options) if err != nil { return VirtualMachineTemplatesClientGetResponse{}, err @@ -270,25 +289,20 @@ func (client *VirtualMachineTemplatesClient) NewListPager(options *VirtualMachin return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *VirtualMachineTemplatesClientListResponse) (VirtualMachineTemplatesClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return VirtualMachineTemplatesClientListResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "VirtualMachineTemplatesClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return VirtualMachineTemplatesClientListResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return VirtualMachineTemplatesClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -331,25 +345,20 @@ func (client *VirtualMachineTemplatesClient) NewListByResourceGroupPager(resourc return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *VirtualMachineTemplatesClientListByResourceGroupResponse) (VirtualMachineTemplatesClientListByResourceGroupResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByResourceGroupCreateRequest(ctx, resourceGroupName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "VirtualMachineTemplatesClient.NewListByResourceGroupPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByResourceGroupCreateRequest(ctx, resourceGroupName, options) + }, nil) if err != nil { return VirtualMachineTemplatesClientListByResourceGroupResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return VirtualMachineTemplatesClientListByResourceGroupResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return VirtualMachineTemplatesClientListByResourceGroupResponse{}, runtime.NewResponseError(resp) - } return client.listByResourceGroupHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -395,6 +404,10 @@ func (client *VirtualMachineTemplatesClient) listByResourceGroupHandleResponse(r // method. func (client *VirtualMachineTemplatesClient) Update(ctx context.Context, resourceGroupName string, virtualMachineTemplateName string, body ResourcePatch, options *VirtualMachineTemplatesClientUpdateOptions) (VirtualMachineTemplatesClientUpdateResponse, error) { var err error + const operationName = "VirtualMachineTemplatesClient.Update" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceGroupName, virtualMachineTemplateName, body, options) if err != nil { return VirtualMachineTemplatesClientUpdateResponse{}, err diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/virtualnetworks_client.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/virtualnetworks_client.go index e91e01b1ca96..2cb2d5d772bb 100644 --- a/sdk/resourcemanager/connectedvmware/armconnectedvmware/virtualnetworks_client.go +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/virtualnetworks_client.go @@ -42,7 +42,7 @@ type VirtualNetworksClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewVirtualNetworksClient(subscriptionID string, credential azcore.TokenCredential, options *arm.ClientOptions) (*VirtualNetworksClient, error) { - cl, err := arm.NewClient(moduleName+".VirtualNetworksClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -70,10 +70,13 @@ func (client *VirtualNetworksClient) BeginCreate(ctx context.Context, resourceGr } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VirtualNetworksClientCreateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[VirtualNetworksClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VirtualNetworksClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -83,6 +86,10 @@ func (client *VirtualNetworksClient) BeginCreate(ctx context.Context, resourceGr // Generated from API version 2023-10-01 func (client *VirtualNetworksClient) create(ctx context.Context, resourceGroupName string, virtualNetworkName string, body VirtualNetwork, options *VirtualNetworksClientBeginCreateOptions) (*http.Response, error) { var err error + const operationName = "VirtualNetworksClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceGroupName, virtualNetworkName, body, options) if err != nil { return nil, err @@ -141,10 +148,14 @@ func (client *VirtualNetworksClient) BeginDelete(ctx context.Context, resourceGr if err != nil { return nil, err } - poller, err := runtime.NewPoller[VirtualNetworksClientDeleteResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VirtualNetworksClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[VirtualNetworksClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VirtualNetworksClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -154,6 +165,10 @@ func (client *VirtualNetworksClient) BeginDelete(ctx context.Context, resourceGr // Generated from API version 2023-10-01 func (client *VirtualNetworksClient) deleteOperation(ctx context.Context, resourceGroupName string, virtualNetworkName string, options *VirtualNetworksClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "VirtualNetworksClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceGroupName, virtualNetworkName, options) if err != nil { return nil, err @@ -207,6 +222,10 @@ func (client *VirtualNetworksClient) deleteCreateRequest(ctx context.Context, re // - options - VirtualNetworksClientGetOptions contains the optional parameters for the VirtualNetworksClient.Get method. func (client *VirtualNetworksClient) Get(ctx context.Context, resourceGroupName string, virtualNetworkName string, options *VirtualNetworksClientGetOptions) (VirtualNetworksClientGetResponse, error) { var err error + const operationName = "VirtualNetworksClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceGroupName, virtualNetworkName, options) if err != nil { return VirtualNetworksClientGetResponse{}, err @@ -269,25 +288,20 @@ func (client *VirtualNetworksClient) NewListPager(options *VirtualNetworksClient return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *VirtualNetworksClientListResponse) (VirtualNetworksClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) - } - if err != nil { - return VirtualNetworksClientListResponse{}, err + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "VirtualNetworksClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } - resp, err := client.internal.Pipeline().Do(req) + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, options) + }, nil) if err != nil { return VirtualNetworksClientListResponse{}, err } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return VirtualNetworksClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -330,25 +344,20 @@ func (client *VirtualNetworksClient) NewListByResourceGroupPager(resourceGroupNa return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *VirtualNetworksClientListByResourceGroupResponse) (VirtualNetworksClientListByResourceGroupResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listByResourceGroupCreateRequest(ctx, resourceGroupName, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "VirtualNetworksClient.NewListByResourceGroupPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listByResourceGroupCreateRequest(ctx, resourceGroupName, options) + }, nil) if err != nil { return VirtualNetworksClientListByResourceGroupResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return VirtualNetworksClientListByResourceGroupResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return VirtualNetworksClientListByResourceGroupResponse{}, runtime.NewResponseError(resp) - } return client.listByResourceGroupHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } @@ -393,6 +402,10 @@ func (client *VirtualNetworksClient) listByResourceGroupHandleResponse(resp *htt // - options - VirtualNetworksClientUpdateOptions contains the optional parameters for the VirtualNetworksClient.Update method. func (client *VirtualNetworksClient) Update(ctx context.Context, resourceGroupName string, virtualNetworkName string, body ResourcePatch, options *VirtualNetworksClientUpdateOptions) (VirtualNetworksClientUpdateResponse, error) { var err error + const operationName = "VirtualNetworksClient.Update" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.updateCreateRequest(ctx, resourceGroupName, virtualNetworkName, body, options) if err != nil { return VirtualNetworksClientUpdateResponse{}, err diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/vminstanceguestagents_client.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/vminstanceguestagents_client.go index 4ee8ea04bb3e..be49d60a9517 100644 --- a/sdk/resourcemanager/connectedvmware/armconnectedvmware/vminstanceguestagents_client.go +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/vminstanceguestagents_client.go @@ -37,7 +37,7 @@ type VMInstanceGuestAgentsClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewVMInstanceGuestAgentsClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*VMInstanceGuestAgentsClient, error) { - cl, err := arm.NewClient(moduleName+".VMInstanceGuestAgentsClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -63,10 +63,13 @@ func (client *VMInstanceGuestAgentsClient) BeginCreate(ctx context.Context, reso } poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VMInstanceGuestAgentsClientCreateResponse]{ FinalStateVia: runtime.FinalStateViaAzureAsyncOp, + Tracer: client.internal.Tracer(), }) return poller, err } else { - return runtime.NewPollerFromResumeToken[VMInstanceGuestAgentsClientCreateResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VMInstanceGuestAgentsClientCreateResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -76,6 +79,10 @@ func (client *VMInstanceGuestAgentsClient) BeginCreate(ctx context.Context, reso // Generated from API version 2023-10-01 func (client *VMInstanceGuestAgentsClient) create(ctx context.Context, resourceURI string, body GuestAgent, options *VMInstanceGuestAgentsClientBeginCreateOptions) (*http.Response, error) { var err error + const operationName = "VMInstanceGuestAgentsClient.BeginCreate" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.createCreateRequest(ctx, resourceURI, body, options) if err != nil { return nil, err @@ -122,10 +129,14 @@ func (client *VMInstanceGuestAgentsClient) BeginDelete(ctx context.Context, reso if err != nil { return nil, err } - poller, err := runtime.NewPoller[VMInstanceGuestAgentsClientDeleteResponse](resp, client.internal.Pipeline(), nil) + poller, err := runtime.NewPoller(resp, client.internal.Pipeline(), &runtime.NewPollerOptions[VMInstanceGuestAgentsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) return poller, err } else { - return runtime.NewPollerFromResumeToken[VMInstanceGuestAgentsClientDeleteResponse](options.ResumeToken, client.internal.Pipeline(), nil) + return runtime.NewPollerFromResumeToken(options.ResumeToken, client.internal.Pipeline(), &runtime.NewPollerFromResumeTokenOptions[VMInstanceGuestAgentsClientDeleteResponse]{ + Tracer: client.internal.Tracer(), + }) } } @@ -135,6 +146,10 @@ func (client *VMInstanceGuestAgentsClient) BeginDelete(ctx context.Context, reso // Generated from API version 2023-10-01 func (client *VMInstanceGuestAgentsClient) deleteOperation(ctx context.Context, resourceURI string, options *VMInstanceGuestAgentsClientBeginDeleteOptions) (*http.Response, error) { var err error + const operationName = "VMInstanceGuestAgentsClient.BeginDelete" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.deleteCreateRequest(ctx, resourceURI, options) if err != nil { return nil, err @@ -174,6 +189,10 @@ func (client *VMInstanceGuestAgentsClient) deleteCreateRequest(ctx context.Conte // method. func (client *VMInstanceGuestAgentsClient) Get(ctx context.Context, resourceURI string, options *VMInstanceGuestAgentsClientGetOptions) (VMInstanceGuestAgentsClientGetResponse, error) { var err error + const operationName = "VMInstanceGuestAgentsClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceURI, options) if err != nil { return VMInstanceGuestAgentsClientGetResponse{}, err @@ -226,25 +245,20 @@ func (client *VMInstanceGuestAgentsClient) NewListPager(resourceURI string, opti return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *VMInstanceGuestAgentsClientListResponse) (VMInstanceGuestAgentsClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, resourceURI, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "VMInstanceGuestAgentsClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, resourceURI, options) + }, nil) if err != nil { return VMInstanceGuestAgentsClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return VMInstanceGuestAgentsClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return VMInstanceGuestAgentsClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) } diff --git a/sdk/resourcemanager/connectedvmware/armconnectedvmware/vminstancehybrididentitymetadata_client.go b/sdk/resourcemanager/connectedvmware/armconnectedvmware/vminstancehybrididentitymetadata_client.go index f4b68e9e4b85..f9cc32e37a4e 100644 --- a/sdk/resourcemanager/connectedvmware/armconnectedvmware/vminstancehybrididentitymetadata_client.go +++ b/sdk/resourcemanager/connectedvmware/armconnectedvmware/vminstancehybrididentitymetadata_client.go @@ -37,7 +37,7 @@ type VMInstanceHybridIdentityMetadataClient struct { // - credential - used to authorize requests. Usually a credential from azidentity. // - options - pass nil to accept the default values. func NewVMInstanceHybridIdentityMetadataClient(credential azcore.TokenCredential, options *arm.ClientOptions) (*VMInstanceHybridIdentityMetadataClient, error) { - cl, err := arm.NewClient(moduleName+".VMInstanceHybridIdentityMetadataClient", moduleVersion, credential, options) + cl, err := arm.NewClient(moduleName, moduleVersion, credential, options) if err != nil { return nil, err } @@ -56,6 +56,10 @@ func NewVMInstanceHybridIdentityMetadataClient(credential azcore.TokenCredential // method. func (client *VMInstanceHybridIdentityMetadataClient) Get(ctx context.Context, resourceURI string, options *VMInstanceHybridIdentityMetadataClientGetOptions) (VMInstanceHybridIdentityMetadataClientGetResponse, error) { var err error + const operationName = "VMInstanceHybridIdentityMetadataClient.Get" + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, operationName) + ctx, endSpan := runtime.StartSpan(ctx, operationName, client.internal.Tracer(), nil) + defer func() { endSpan(err) }() req, err := client.getCreateRequest(ctx, resourceURI, options) if err != nil { return VMInstanceHybridIdentityMetadataClientGetResponse{}, err @@ -108,25 +112,20 @@ func (client *VMInstanceHybridIdentityMetadataClient) NewListPager(resourceURI s return page.NextLink != nil && len(*page.NextLink) > 0 }, Fetcher: func(ctx context.Context, page *VMInstanceHybridIdentityMetadataClientListResponse) (VMInstanceHybridIdentityMetadataClientListResponse, error) { - var req *policy.Request - var err error - if page == nil { - req, err = client.listCreateRequest(ctx, resourceURI, options) - } else { - req, err = runtime.NewRequest(ctx, http.MethodGet, *page.NextLink) + ctx = context.WithValue(ctx, runtime.CtxAPINameKey{}, "VMInstanceHybridIdentityMetadataClient.NewListPager") + nextLink := "" + if page != nil { + nextLink = *page.NextLink } + resp, err := runtime.FetcherForNextLink(ctx, client.internal.Pipeline(), nextLink, func(ctx context.Context) (*policy.Request, error) { + return client.listCreateRequest(ctx, resourceURI, options) + }, nil) if err != nil { return VMInstanceHybridIdentityMetadataClientListResponse{}, err } - resp, err := client.internal.Pipeline().Do(req) - if err != nil { - return VMInstanceHybridIdentityMetadataClientListResponse{}, err - } - if !runtime.HasStatusCode(resp, http.StatusOK) { - return VMInstanceHybridIdentityMetadataClientListResponse{}, runtime.NewResponseError(resp) - } return client.listHandleResponse(resp) }, + Tracer: client.internal.Tracer(), }) }