package skus // 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. import ( "context" "encoding/json" "github.com/Azure/go-autorest/autorest" "github.com/Azure/go-autorest/autorest/to" "github.com/Azure/go-autorest/tracing" "net/http" ) // The package's fully qualified name. const fqdn = "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-09-01/skus" // ResourceSku describes an available Compute SKU. type ResourceSku struct { // ResourceType - READ-ONLY; The type of resource the SKU applies to. ResourceType *string `json:"resourceType,omitempty"` // Name - READ-ONLY; The name of SKU. Name *string `json:"name,omitempty"` // Tier - READ-ONLY; Specifies the tier of virtual machines in a scale set.

Possible Values:

**Standard**

**Basic** Tier *string `json:"tier,omitempty"` // Size - READ-ONLY; The Size of the SKU. Size *string `json:"size,omitempty"` // Family - READ-ONLY; The Family of this particular SKU. Family *string `json:"family,omitempty"` // Kind - READ-ONLY; The Kind of resources that are supported in this SKU. Kind *string `json:"kind,omitempty"` // Capacity - READ-ONLY; Specifies the number of virtual machines in the scale set. Capacity *ResourceSkuCapacity `json:"capacity,omitempty"` // Locations - READ-ONLY; The set of locations that the SKU is available. Locations *[]string `json:"locations,omitempty"` // LocationInfo - READ-ONLY; A list of locations and availability zones in those locations where the SKU is available. LocationInfo *[]ResourceSkuLocationInfo `json:"locationInfo,omitempty"` // APIVersions - READ-ONLY; The api versions that support this SKU. APIVersions *[]string `json:"apiVersions,omitempty"` // Costs - READ-ONLY; Metadata for retrieving price info. Costs *[]ResourceSkuCosts `json:"costs,omitempty"` // Capabilities - READ-ONLY; A name value pair to describe the capability. Capabilities *[]ResourceSkuCapabilities `json:"capabilities,omitempty"` // Restrictions - READ-ONLY; The restrictions because of which SKU cannot be used. This is empty if there are no restrictions. Restrictions *[]ResourceSkuRestrictions `json:"restrictions,omitempty"` } // MarshalJSON is the custom marshaler for ResourceSku. func (rs ResourceSku) MarshalJSON() ([]byte, error) { objectMap := make(map[string]interface{}) return json.Marshal(objectMap) } // ResourceSkuCapabilities describes The SKU capabilities object. type ResourceSkuCapabilities struct { // Name - READ-ONLY; An invariant to describe the feature. Name *string `json:"name,omitempty"` // Value - READ-ONLY; An invariant if the feature is measured by quantity. Value *string `json:"value,omitempty"` } // MarshalJSON is the custom marshaler for ResourceSkuCapabilities. func (rsc ResourceSkuCapabilities) MarshalJSON() ([]byte, error) { objectMap := make(map[string]interface{}) return json.Marshal(objectMap) } // ResourceSkuCapacity describes scaling information of a SKU. type ResourceSkuCapacity struct { // Minimum - READ-ONLY; The minimum capacity. Minimum *int64 `json:"minimum,omitempty"` // Maximum - READ-ONLY; The maximum capacity that can be set. Maximum *int64 `json:"maximum,omitempty"` // Default - READ-ONLY; The default capacity. Default *int64 `json:"default,omitempty"` // ScaleType - READ-ONLY; The scale type applicable to the sku. Possible values include: 'Automatic', 'Manual', 'None' ScaleType ResourceSkuCapacityScaleType `json:"scaleType,omitempty"` } // MarshalJSON is the custom marshaler for ResourceSkuCapacity. func (rsc ResourceSkuCapacity) MarshalJSON() ([]byte, error) { objectMap := make(map[string]interface{}) return json.Marshal(objectMap) } // ResourceSkuCosts describes metadata for retrieving price info. type ResourceSkuCosts struct { // MeterID - READ-ONLY; Used for querying price from commerce. MeterID *string `json:"meterID,omitempty"` // Quantity - READ-ONLY; The multiplier is needed to extend the base metered cost. Quantity *int64 `json:"quantity,omitempty"` // ExtendedUnit - READ-ONLY; An invariant to show the extended unit. ExtendedUnit *string `json:"extendedUnit,omitempty"` } // MarshalJSON is the custom marshaler for ResourceSkuCosts. func (rsc ResourceSkuCosts) MarshalJSON() ([]byte, error) { objectMap := make(map[string]interface{}) return json.Marshal(objectMap) } // ResourceSkuLocationInfo ... type ResourceSkuLocationInfo struct { // Location - READ-ONLY; Location of the SKU Location *string `json:"location,omitempty"` // Zones - READ-ONLY; List of availability zones where the SKU is supported. Zones *[]string `json:"zones,omitempty"` } // MarshalJSON is the custom marshaler for ResourceSkuLocationInfo. func (rsli ResourceSkuLocationInfo) MarshalJSON() ([]byte, error) { objectMap := make(map[string]interface{}) return json.Marshal(objectMap) } // ResourceSkuRestrictionInfo ... type ResourceSkuRestrictionInfo struct { // Locations - READ-ONLY; Locations where the SKU is restricted Locations *[]string `json:"locations,omitempty"` // Zones - READ-ONLY; List of availability zones where the SKU is restricted. Zones *[]string `json:"zones,omitempty"` } // MarshalJSON is the custom marshaler for ResourceSkuRestrictionInfo. func (rsri ResourceSkuRestrictionInfo) MarshalJSON() ([]byte, error) { objectMap := make(map[string]interface{}) return json.Marshal(objectMap) } // ResourceSkuRestrictions describes scaling information of a SKU. type ResourceSkuRestrictions struct { // Type - READ-ONLY; The type of restrictions. Possible values include: 'Location', 'Zone' Type ResourceSkuRestrictionsType `json:"type,omitempty"` // Values - READ-ONLY; The value of restrictions. If the restriction type is set to location. This would be different locations where the SKU is restricted. Values *[]string `json:"values,omitempty"` // RestrictionInfo - READ-ONLY; The information about the restriction where the SKU cannot be used. RestrictionInfo *ResourceSkuRestrictionInfo `json:"restrictionInfo,omitempty"` // ReasonCode - READ-ONLY; The reason for restriction. Possible values include: 'QuotaID', 'NotAvailableForSubscription' ReasonCode ResourceSkuRestrictionsReasonCode `json:"reasonCode,omitempty"` } // MarshalJSON is the custom marshaler for ResourceSkuRestrictions. func (rsr ResourceSkuRestrictions) MarshalJSON() ([]byte, error) { objectMap := make(map[string]interface{}) return json.Marshal(objectMap) } // ResourceSkusResult the List Resource Skus operation response. type ResourceSkusResult struct { autorest.Response `json:"-"` // Value - The list of skus available for the subscription. Value *[]ResourceSku `json:"value,omitempty"` // NextLink - The URI to fetch the next page of Resource Skus. Call ListNext() with this URI to fetch the next page of Resource Skus NextLink *string `json:"nextLink,omitempty"` } // ResourceSkusResultIterator provides access to a complete listing of ResourceSku values. type ResourceSkusResultIterator struct { i int page ResourceSkusResultPage } // NextWithContext advances to the next value. If there was an error making // the request the iterator does not advance and the error is returned. func (iter *ResourceSkusResultIterator) NextWithContext(ctx context.Context) (err error) { if tracing.IsEnabled() { ctx = tracing.StartSpan(ctx, fqdn+"/ResourceSkusResultIterator.NextWithContext") defer func() { sc := -1 if iter.Response().Response.Response != nil { sc = iter.Response().Response.Response.StatusCode } tracing.EndSpan(ctx, sc, err) }() } iter.i++ if iter.i < len(iter.page.Values()) { return nil } err = iter.page.NextWithContext(ctx) if err != nil { iter.i-- return err } iter.i = 0 return nil } // Next advances to the next value. If there was an error making // the request the iterator does not advance and the error is returned. // Deprecated: Use NextWithContext() instead. func (iter *ResourceSkusResultIterator) Next() error { return iter.NextWithContext(context.Background()) } // NotDone returns true if the enumeration should be started or is not yet complete. func (iter ResourceSkusResultIterator) NotDone() bool { return iter.page.NotDone() && iter.i < len(iter.page.Values()) } // Response returns the raw server response from the last page request. func (iter ResourceSkusResultIterator) Response() ResourceSkusResult { return iter.page.Response() } // Value returns the current value or a zero-initialized value if the // iterator has advanced beyond the end of the collection. func (iter ResourceSkusResultIterator) Value() ResourceSku { if !iter.page.NotDone() { return ResourceSku{} } return iter.page.Values()[iter.i] } // Creates a new instance of the ResourceSkusResultIterator type. func NewResourceSkusResultIterator(page ResourceSkusResultPage) ResourceSkusResultIterator { return ResourceSkusResultIterator{page: page} } // IsEmpty returns true if the ListResult contains no values. func (rsr ResourceSkusResult) IsEmpty() bool { return rsr.Value == nil || len(*rsr.Value) == 0 } // hasNextLink returns true if the NextLink is not empty. func (rsr ResourceSkusResult) hasNextLink() bool { return rsr.NextLink != nil && len(*rsr.NextLink) != 0 } // resourceSkusResultPreparer prepares a request to retrieve the next set of results. // It returns nil if no more results exist. func (rsr ResourceSkusResult) resourceSkusResultPreparer(ctx context.Context) (*http.Request, error) { if !rsr.hasNextLink() { return nil, nil } return autorest.Prepare((&http.Request{}).WithContext(ctx), autorest.AsJSON(), autorest.AsGet(), autorest.WithBaseURL(to.String(rsr.NextLink))) } // ResourceSkusResultPage contains a page of ResourceSku values. type ResourceSkusResultPage struct { fn func(context.Context, ResourceSkusResult) (ResourceSkusResult, error) rsr ResourceSkusResult } // NextWithContext advances to the next page of values. If there was an error making // the request the page does not advance and the error is returned. func (page *ResourceSkusResultPage) NextWithContext(ctx context.Context) (err error) { if tracing.IsEnabled() { ctx = tracing.StartSpan(ctx, fqdn+"/ResourceSkusResultPage.NextWithContext") defer func() { sc := -1 if page.Response().Response.Response != nil { sc = page.Response().Response.Response.StatusCode } tracing.EndSpan(ctx, sc, err) }() } for { next, err := page.fn(ctx, page.rsr) if err != nil { return err } page.rsr = next if !next.hasNextLink() || !next.IsEmpty() { break } } return nil } // Next advances to the next page of values. If there was an error making // the request the page does not advance and the error is returned. // Deprecated: Use NextWithContext() instead. func (page *ResourceSkusResultPage) Next() error { return page.NextWithContext(context.Background()) } // NotDone returns true if the page enumeration should be started or is not yet complete. func (page ResourceSkusResultPage) NotDone() bool { return !page.rsr.IsEmpty() } // Response returns the raw server response from the last page request. func (page ResourceSkusResultPage) Response() ResourceSkusResult { return page.rsr } // Values returns the slice of values for the current page or nil if there are no values. func (page ResourceSkusResultPage) Values() []ResourceSku { if page.rsr.IsEmpty() { return nil } return *page.rsr.Value } // Creates a new instance of the ResourceSkusResultPage type. func NewResourceSkusResultPage(cur ResourceSkusResult, getNextPage func(context.Context, ResourceSkusResult) (ResourceSkusResult, error)) ResourceSkusResultPage { return ResourceSkusResultPage{ fn: getNextPage, rsr: cur, } }