diff --git a/sdk/resourcemanager/commerce/armcommerce/CHANGELOG.md b/sdk/resourcemanager/commerce/armcommerce/CHANGELOG.md index 6eb19fbf95e0..d89ec55a9aa3 100644 --- a/sdk/resourcemanager/commerce/armcommerce/CHANGELOG.md +++ b/sdk/resourcemanager/commerce/armcommerce/CHANGELOG.md @@ -1,5 +1,18 @@ # Release History +## 0.3.0 (2023-03-29) +### Breaking Changes + +- Struct `InfoField` has been removed +- Field `UsageAggregationListResult` of struct `UsageAggregatesClientListResponse` has been removed + +### Features Added + +- Type of `UsageSample.InfoFields` has been changed from `*InfoField` to `any` +- New struct `ErrorObjectResponse` +- New field `Value` in struct `UsageAggregatesClientListResponse` + + ## 0.2.0 (2023-03-28) ### Features Added diff --git a/sdk/resourcemanager/commerce/armcommerce/autorest.md b/sdk/resourcemanager/commerce/armcommerce/autorest.md index d0fde16e64aa..be80cfb4f4be 100644 --- a/sdk/resourcemanager/commerce/armcommerce/autorest.md +++ b/sdk/resourcemanager/commerce/armcommerce/autorest.md @@ -5,9 +5,9 @@ ``` yaml azure-arm: true 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 +- /mnt/vss/_work/1/s/azure-rest-api-specs/specification/commerce/resource-manager/readme.md +- /mnt/vss/_work/1/s/azure-rest-api-specs/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/constants.go b/sdk/resourcemanager/commerce/armcommerce/constants.go index f46a1c027b08..42351f7b8399 100644 --- a/sdk/resourcemanager/commerce/armcommerce/constants.go +++ b/sdk/resourcemanager/commerce/armcommerce/constants.go @@ -11,7 +11,7 @@ package armcommerce const ( moduleName = "armcommerce" - moduleVersion = "v0.2.0" + moduleVersion = "v0.3.0" ) type AggregationGranularity string diff --git a/sdk/resourcemanager/commerce/armcommerce/go.mod b/sdk/resourcemanager/commerce/armcommerce/go.mod index ed023affbe11..d805f6528f05 100644 --- a/sdk/resourcemanager/commerce/armcommerce/go.mod +++ b/sdk/resourcemanager/commerce/armcommerce/go.mod @@ -2,20 +2,12 @@ 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 -) +require github.com/Azure/azure-sdk-for-go/sdk/azcore 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/kylelemons/godebug v1.1.0 // indirect - github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect - golang.org/x/crypto v0.6.0 // indirect + github.com/davecgh/go-spew v1.1.1 // 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 + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect ) diff --git a/sdk/resourcemanager/commerce/armcommerce/go.sum b/sdk/resourcemanager/commerce/armcommerce/go.sum index 8ba445a8c4da..b6bd7eaad1ba 100644 --- a/sdk/resourcemanager/commerce/armcommerce/go.sum +++ b/sdk/resourcemanager/commerce/armcommerce/go.sum @@ -1,31 +1,15 @@ 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/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/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/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= 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= -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= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= 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= diff --git a/sdk/resourcemanager/commerce/armcommerce/models.go b/sdk/resourcemanager/commerce/armcommerce/models.go index 8afab235ecc7..42ba8952319d 100644 --- a/sdk/resourcemanager/commerce/armcommerce/models.go +++ b/sdk/resourcemanager/commerce/armcommerce/models.go @@ -11,6 +11,12 @@ package armcommerce import "time" +// ErrorObjectResponse - Describes the format of Error response with a wrapper object +type ErrorObjectResponse struct { + // Wrapper object for error information + Error *ErrorResponse `json:"error,omitempty"` +} + // ErrorResponse - Describes the format of Error response. type ErrorResponse struct { // Error code @@ -20,12 +26,6 @@ type ErrorResponse struct { Message *string `json:"message,omitempty"` } -// 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"` -} - // MeterInfo - Detailed information about the meter. type MeterInfo struct { // Indicates the date from which the meter rate is effective. @@ -234,7 +234,7 @@ type UsageAggregationListResult struct { // UsageSample - Describes a sample of the usageAggregation. type UsageSample struct { // Key-value pairs of instance details (legacy format). - InfoFields *InfoField `json:"infoFields,omitempty"` + InfoFields any `json:"infoFields,omitempty"` // Key-value pairs of instance details represented as a string. InstanceData *string `json:"instanceData,omitempty"` diff --git a/sdk/resourcemanager/commerce/armcommerce/models_serde.go b/sdk/resourcemanager/commerce/armcommerce/models_serde.go index c4c1a85465c7..4fd59a628eee 100644 --- a/sdk/resourcemanager/commerce/armcommerce/models_serde.go +++ b/sdk/resourcemanager/commerce/armcommerce/models_serde.go @@ -16,16 +16,15 @@ import ( "reflect" ) -// MarshalJSON implements the json.Marshaller interface for type ErrorResponse. -func (e ErrorResponse) MarshalJSON() ([]byte, error) { +// MarshalJSON implements the json.Marshaller interface for type ErrorObjectResponse. +func (e ErrorObjectResponse) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populate(objectMap, "code", e.Code) - populate(objectMap, "message", e.Message) + populate(objectMap, "error", e.Error) return json.Marshal(objectMap) } -// UnmarshalJSON implements the json.Unmarshaller interface for type ErrorResponse. -func (e *ErrorResponse) UnmarshalJSON(data []byte) error { +// UnmarshalJSON implements the json.Unmarshaller interface for type ErrorObjectResponse. +func (e *ErrorObjectResponse) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { return fmt.Errorf("unmarshalling type %T: %v", e, err) @@ -33,11 +32,8 @@ func (e *ErrorResponse) UnmarshalJSON(data []byte) error { for key, val := range rawMsg { var err error switch key { - case "code": - err = unpopulate(val, "Code", &e.Code) - delete(rawMsg, key) - case "message": - err = unpopulate(val, "Message", &e.Message) + case "error": + err = unpopulate(val, "Error", &e.Error) delete(rawMsg, key) } if err != nil { @@ -47,28 +43,32 @@ func (e *ErrorResponse) UnmarshalJSON(data []byte) error { return nil } -// MarshalJSON implements the json.Marshaller interface for type InfoField. -func (i InfoField) MarshalJSON() ([]byte, error) { +// MarshalJSON implements the json.Marshaller interface for type ErrorResponse. +func (e ErrorResponse) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populate(objectMap, "project", i.Project) + populate(objectMap, "code", e.Code) + populate(objectMap, "message", e.Message) return json.Marshal(objectMap) } -// UnmarshalJSON implements the json.Unmarshaller interface for type InfoField. -func (i *InfoField) UnmarshalJSON(data []byte) error { +// UnmarshalJSON implements the json.Unmarshaller interface for type ErrorResponse. +func (e *ErrorResponse) UnmarshalJSON(data []byte) error { var rawMsg map[string]json.RawMessage if err := json.Unmarshal(data, &rawMsg); err != nil { - return fmt.Errorf("unmarshalling type %T: %v", i, err) + return fmt.Errorf("unmarshalling type %T: %v", e, err) } for key, val := range rawMsg { var err error switch key { - case "project": - err = unpopulate(val, "Project", &i.Project) + case "code": + err = unpopulate(val, "Code", &e.Code) + delete(rawMsg, key) + case "message": + err = unpopulate(val, "Message", &e.Message) delete(rawMsg, key) } if err != nil { - return fmt.Errorf("unmarshalling type %T: %v", i, err) + return fmt.Errorf("unmarshalling type %T: %v", e, err) } } return nil @@ -436,7 +436,7 @@ func (u *UsageAggregationListResult) UnmarshalJSON(data []byte) error { // MarshalJSON implements the json.Marshaller interface for type UsageSample. func (u UsageSample) MarshalJSON() ([]byte, error) { objectMap := make(map[string]any) - populate(objectMap, "infoFields", u.InfoFields) + populate(objectMap, "infoFields", &u.InfoFields) populate(objectMap, "instanceData", u.InstanceData) populate(objectMap, "meterCategory", u.MeterCategory) populate(objectMap, "meterId", u.MeterID) diff --git a/sdk/resourcemanager/commerce/armcommerce/ratecard_client_example_test.go b/sdk/resourcemanager/commerce/armcommerce/ratecard_client_example_test.go deleted file mode 100644 index afd7f0a2871f..000000000000 --- a/sdk/resourcemanager/commerce/armcommerce/ratecard_client_example_test.go +++ /dev/null @@ -1,59 +0,0 @@ -//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. -// Changes may cause incorrect behavior and will be lost if the code is regenerated. -// DO NOT EDIT. - -package armcommerce_test - -import ( - "context" - "log" - - "github.com/Azure/azure-sdk-for-go/sdk/azidentity" - "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/commerce/armcommerce" -) - -// Generated from example definition: https://github.com/Azure/azure-rest-api-specs/blob/163e27c0ca7570bc39e00a46f255740d9b3ba3cb/specification/commerce/resource-manager/Microsoft.Commerce/preview/2015-06-01-preview/examples/GetRateCard.json -func ExampleRateCardClient_Get() { - cred, err := azidentity.NewDefaultAzureCredential(nil) - if err != nil { - log.Fatalf("failed to obtain a credential: %v", err) - } - ctx := context.Background() - clientFactory, err := armcommerce.NewClientFactory("", cred, nil) - if err != nil { - log.Fatalf("failed to create client: %v", err) - } - res, err := clientFactory.NewRateCardClient().Get(ctx, "OfferDurableId eq 'MS-AZR-0003P' and Currency eq 'USD' and Locale eq 'en-US' and RegionInfo eq 'US'", nil) - if err != nil { - log.Fatalf("failed to finish the request: %v", err) - } - // You could use response here. We use blank identifier for just demo purposes. - _ = 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.ResourceRateCardInfo = armcommerce.ResourceRateCardInfo{ - // Meters: []*armcommerce.MeterInfo{ - // { - // EffectiveDate: to.Ptr(func() time.Time { t, _ := time.Parse(time.RFC3339Nano, "2017-09-01T00:00:00Z"); return t}()), - // IncludedQuantity: to.Ptr[float32](0), - // MeterCategory: to.Ptr("Test Category"), - // MeterID: to.Ptr("1d7518e5-bc2f-4a93-9057-1b3047856645"), - // MeterName: to.Ptr("Test Meter"), - // MeterRates: map[string]*float32{ - // "0": to.Ptr[float32](1.99), - // "100": to.Ptr[float32](0.99), - // }, - // MeterRegion: to.Ptr("US West"), - // MeterSubCategory: to.Ptr("Test Subcategory"), - // MeterTags: []*string{ - // to.Ptr("Third Party")}, - // Unit: to.Ptr("Hours"), - // }}, - // OfferTerms: []armcommerce.OfferTermInfoAutoGeneratedClassification{ - // }, - // } -} diff --git a/sdk/resourcemanager/commerce/armcommerce/response_types.go b/sdk/resourcemanager/commerce/armcommerce/response_types.go index c7ead68605ae..64ebdca80ccc 100644 --- a/sdk/resourcemanager/commerce/armcommerce/response_types.go +++ b/sdk/resourcemanager/commerce/armcommerce/response_types.go @@ -16,5 +16,6 @@ type RateCardClientGetResponse struct { // UsageAggregatesClientListResponse contains the response from method UsageAggregatesClient.NewListPager. type UsageAggregatesClientListResponse struct { - UsageAggregationListResult + // Possible types are UsageAggregationListResult, ErrorObjectResponse + Value any } diff --git a/sdk/resourcemanager/commerce/armcommerce/usageaggregates_client.go b/sdk/resourcemanager/commerce/armcommerce/usageaggregates_client.go index 0491ef8f5f32..645549b594e0 100644 --- a/sdk/resourcemanager/commerce/armcommerce/usageaggregates_client.go +++ b/sdk/resourcemanager/commerce/armcommerce/usageaggregates_client.go @@ -12,6 +12,7 @@ package armcommerce import ( "context" "errors" + "fmt" "github.com/Azure/azure-sdk-for-go/sdk/azcore" "github.com/Azure/azure-sdk-for-go/sdk/azcore/arm" "github.com/Azure/azure-sdk-for-go/sdk/azcore/policy" @@ -114,8 +115,21 @@ func (client *UsageAggregatesClient) listCreateRequest(ctx context.Context, repo // listHandleResponse handles the List response. func (client *UsageAggregatesClient) listHandleResponse(resp *http.Response) (UsageAggregatesClientListResponse, error) { result := UsageAggregatesClientListResponse{} - if err := runtime.UnmarshalAsJSON(resp, &result.UsageAggregationListResult); err != nil { - return UsageAggregatesClientListResponse{}, err + switch resp.StatusCode { + case http.StatusOK: + var val UsageAggregationListResult + if err := runtime.UnmarshalAsJSON(resp, &val); err != nil { + return UsageAggregatesClientListResponse{}, err + } + result.Value = val + case http.StatusAccepted: + var val ErrorObjectResponse + if err := runtime.UnmarshalAsJSON(resp, &val); err != nil { + return UsageAggregatesClientListResponse{}, err + } + result.Value = val + default: + return UsageAggregatesClientListResponse{}, fmt.Errorf("unhandled HTTP status code %d", resp.StatusCode) } return result, nil }