diff --git a/profiles/latest/costmanagement/mgmt/costmanagement/costmanagementapi/models.go b/profiles/latest/costmanagement/mgmt/costmanagement/costmanagementapi/models.go index d592058fec26..9e5866aad71b 100644 --- a/profiles/latest/costmanagement/mgmt/costmanagement/costmanagementapi/models.go +++ b/profiles/latest/costmanagement/mgmt/costmanagement/costmanagementapi/models.go @@ -19,11 +19,9 @@ package costmanagementapi -import original "github.com/Azure/azure-sdk-for-go/services/costmanagement/mgmt/2018-05-31/costmanagement/costmanagementapi" +import original "github.com/Azure/azure-sdk-for-go/services/costmanagement/mgmt/2019-01-01/costmanagement/costmanagementapi" -type BaseClientAPI = original.BaseClientAPI -type BillingAccountDimensionsClientAPI = original.BillingAccountDimensionsClientAPI +type DimensionsClientAPI = original.DimensionsClientAPI +type ExportsClientAPI = original.ExportsClientAPI type OperationsClientAPI = original.OperationsClientAPI -type ReportConfigClientAPI = original.ReportConfigClientAPI -type ResourceGroupDimensionsClientAPI = original.ResourceGroupDimensionsClientAPI -type SubscriptionDimensionsClientAPI = original.SubscriptionDimensionsClientAPI +type QueryClientAPI = original.QueryClientAPI diff --git a/profiles/latest/costmanagement/mgmt/costmanagement/models.go b/profiles/latest/costmanagement/mgmt/costmanagement/models.go index c69d1bba5ca9..c4e2508a0170 100644 --- a/profiles/latest/costmanagement/mgmt/costmanagement/models.go +++ b/profiles/latest/costmanagement/mgmt/costmanagement/models.go @@ -22,13 +22,32 @@ package costmanagement import ( "context" - original "github.com/Azure/azure-sdk-for-go/services/costmanagement/mgmt/2018-05-31/costmanagement" + original "github.com/Azure/azure-sdk-for-go/services/costmanagement/mgmt/2019-01-01/costmanagement" ) const ( DefaultBaseURI = original.DefaultBaseURI ) +type ExecutionStatus = original.ExecutionStatus + +const ( + Completed ExecutionStatus = original.Completed + DataNotAvailable ExecutionStatus = original.DataNotAvailable + Failed ExecutionStatus = original.Failed + InProgress ExecutionStatus = original.InProgress + NewDataNotAvailable ExecutionStatus = original.NewDataNotAvailable + Queued ExecutionStatus = original.Queued + Timeout ExecutionStatus = original.Timeout +) + +type ExecutionType = original.ExecutionType + +const ( + OnDemand ExecutionType = original.OnDemand + Scheduled ExecutionType = original.Scheduled +) + type FormatType = original.FormatType const ( @@ -38,7 +57,15 @@ const ( type GranularityType = original.GranularityType const ( - Daily GranularityType = original.Daily + Daily GranularityType = original.Daily + Hourly GranularityType = original.Hourly +) + +type QueryColumnType = original.QueryColumnType + +const ( + QueryColumnTypeDimension QueryColumnType = original.QueryColumnTypeDimension + QueryColumnTypeTag QueryColumnType = original.QueryColumnTypeTag ) type RecurrenceType = original.RecurrenceType @@ -50,11 +77,11 @@ const ( RecurrenceTypeWeekly RecurrenceType = original.RecurrenceTypeWeekly ) -type ReportConfigColumnType = original.ReportConfigColumnType +type SortDirection = original.SortDirection const ( - ReportConfigColumnTypeDimension ReportConfigColumnType = original.ReportConfigColumnTypeDimension - ReportConfigColumnTypeTag ReportConfigColumnType = original.ReportConfigColumnTypeTag + Ascending SortDirection = original.Ascending + Descending SortDirection = original.Descending ) type StatusType = original.StatusType @@ -67,19 +94,34 @@ const ( type TimeframeType = original.TimeframeType const ( - Custom TimeframeType = original.Custom - MonthToDate TimeframeType = original.MonthToDate - WeekToDate TimeframeType = original.WeekToDate - YearToDate TimeframeType = original.YearToDate + Custom TimeframeType = original.Custom + MonthToDate TimeframeType = original.MonthToDate + TheLastMonth TimeframeType = original.TheLastMonth + TheLastWeek TimeframeType = original.TheLastWeek + TheLastYear TimeframeType = original.TheLastYear + WeekToDate TimeframeType = original.WeekToDate + YearToDate TimeframeType = original.YearToDate ) type BaseClient = original.BaseClient -type BillingAccountDimensionsClient = original.BillingAccountDimensionsClient +type CommonExportProperties = original.CommonExportProperties type Dimension = original.Dimension type DimensionProperties = original.DimensionProperties +type DimensionsClient = original.DimensionsClient type DimensionsListResult = original.DimensionsListResult type ErrorDetails = original.ErrorDetails type ErrorResponse = original.ErrorResponse +type Export = original.Export +type ExportDeliveryDestination = original.ExportDeliveryDestination +type ExportDeliveryInfo = original.ExportDeliveryInfo +type ExportExecution = original.ExportExecution +type ExportExecutionListResult = original.ExportExecutionListResult +type ExportExecutionProperties = original.ExportExecutionProperties +type ExportListResult = original.ExportListResult +type ExportProperties = original.ExportProperties +type ExportRecurrencePeriod = original.ExportRecurrencePeriod +type ExportSchedule = original.ExportSchedule +type ExportsClient = original.ExportsClient type Operation = original.Operation type OperationDisplay = original.OperationDisplay type OperationListResult = original.OperationListResult @@ -87,37 +129,35 @@ type OperationListResultIterator = original.OperationListResultIterator type OperationListResultPage = original.OperationListResultPage type OperationsClient = original.OperationsClient type Query = original.Query +type QueryAggregation = original.QueryAggregation +type QueryClient = original.QueryClient type QueryColumn = original.QueryColumn +type QueryComparisonExpression = original.QueryComparisonExpression +type QueryDataset = original.QueryDataset +type QueryDatasetConfiguration = original.QueryDatasetConfiguration +type QueryDefinition = original.QueryDefinition +type QueryFilter = original.QueryFilter +type QueryGrouping = original.QueryGrouping type QueryProperties = original.QueryProperties type QueryResult = original.QueryResult -type ReportConfig = original.ReportConfig -type ReportConfigAggregation = original.ReportConfigAggregation -type ReportConfigClient = original.ReportConfigClient -type ReportConfigComparisonExpression = original.ReportConfigComparisonExpression -type ReportConfigDataset = original.ReportConfigDataset -type ReportConfigDatasetConfiguration = original.ReportConfigDatasetConfiguration -type ReportConfigDefinition = original.ReportConfigDefinition -type ReportConfigDeliveryDestination = original.ReportConfigDeliveryDestination -type ReportConfigDeliveryInfo = original.ReportConfigDeliveryInfo -type ReportConfigFilter = original.ReportConfigFilter -type ReportConfigGrouping = original.ReportConfigGrouping -type ReportConfigListResult = original.ReportConfigListResult -type ReportConfigProperties = original.ReportConfigProperties -type ReportConfigRecurrencePeriod = original.ReportConfigRecurrencePeriod -type ReportConfigSchedule = original.ReportConfigSchedule -type ReportConfigTimePeriod = original.ReportConfigTimePeriod +type QuerySortingConfiguration = original.QuerySortingConfiguration +type QueryTimePeriod = original.QueryTimePeriod type Resource = original.Resource -type ResourceGroupDimensionsClient = original.ResourceGroupDimensionsClient -type SubscriptionDimensionsClient = original.SubscriptionDimensionsClient func New(subscriptionID string) BaseClient { return original.New(subscriptionID) } -func NewBillingAccountDimensionsClient(subscriptionID string) BillingAccountDimensionsClient { - return original.NewBillingAccountDimensionsClient(subscriptionID) +func NewDimensionsClient(subscriptionID string) DimensionsClient { + return original.NewDimensionsClient(subscriptionID) +} +func NewDimensionsClientWithBaseURI(baseURI string, subscriptionID string) DimensionsClient { + return original.NewDimensionsClientWithBaseURI(baseURI, subscriptionID) +} +func NewExportsClient(subscriptionID string) ExportsClient { + return original.NewExportsClient(subscriptionID) } -func NewBillingAccountDimensionsClientWithBaseURI(baseURI string, subscriptionID string) BillingAccountDimensionsClient { - return original.NewBillingAccountDimensionsClientWithBaseURI(baseURI, subscriptionID) +func NewExportsClientWithBaseURI(baseURI string, subscriptionID string) ExportsClient { + return original.NewExportsClientWithBaseURI(baseURI, subscriptionID) } func NewOperationListResultIterator(page OperationListResultPage) OperationListResultIterator { return original.NewOperationListResultIterator(page) @@ -131,38 +171,35 @@ func NewOperationsClient(subscriptionID string) OperationsClient { func NewOperationsClientWithBaseURI(baseURI string, subscriptionID string) OperationsClient { return original.NewOperationsClientWithBaseURI(baseURI, subscriptionID) } -func NewReportConfigClient(subscriptionID string) ReportConfigClient { - return original.NewReportConfigClient(subscriptionID) -} -func NewReportConfigClientWithBaseURI(baseURI string, subscriptionID string) ReportConfigClient { - return original.NewReportConfigClientWithBaseURI(baseURI, subscriptionID) -} -func NewResourceGroupDimensionsClient(subscriptionID string) ResourceGroupDimensionsClient { - return original.NewResourceGroupDimensionsClient(subscriptionID) +func NewQueryClient(subscriptionID string) QueryClient { + return original.NewQueryClient(subscriptionID) } -func NewResourceGroupDimensionsClientWithBaseURI(baseURI string, subscriptionID string) ResourceGroupDimensionsClient { - return original.NewResourceGroupDimensionsClientWithBaseURI(baseURI, subscriptionID) -} -func NewSubscriptionDimensionsClient(subscriptionID string) SubscriptionDimensionsClient { - return original.NewSubscriptionDimensionsClient(subscriptionID) -} -func NewSubscriptionDimensionsClientWithBaseURI(baseURI string, subscriptionID string) SubscriptionDimensionsClient { - return original.NewSubscriptionDimensionsClientWithBaseURI(baseURI, subscriptionID) +func NewQueryClientWithBaseURI(baseURI string, subscriptionID string) QueryClient { + return original.NewQueryClientWithBaseURI(baseURI, subscriptionID) } func NewWithBaseURI(baseURI string, subscriptionID string) BaseClient { return original.NewWithBaseURI(baseURI, subscriptionID) } +func PossibleExecutionStatusValues() []ExecutionStatus { + return original.PossibleExecutionStatusValues() +} +func PossibleExecutionTypeValues() []ExecutionType { + return original.PossibleExecutionTypeValues() +} func PossibleFormatTypeValues() []FormatType { return original.PossibleFormatTypeValues() } func PossibleGranularityTypeValues() []GranularityType { return original.PossibleGranularityTypeValues() } +func PossibleQueryColumnTypeValues() []QueryColumnType { + return original.PossibleQueryColumnTypeValues() +} func PossibleRecurrenceTypeValues() []RecurrenceType { return original.PossibleRecurrenceTypeValues() } -func PossibleReportConfigColumnTypeValues() []ReportConfigColumnType { - return original.PossibleReportConfigColumnTypeValues() +func PossibleSortDirectionValues() []SortDirection { + return original.PossibleSortDirectionValues() } func PossibleStatusTypeValues() []StatusType { return original.PossibleStatusTypeValues() diff --git a/profiles/preview/costmanagement/mgmt/costmanagement/costmanagementapi/models.go b/profiles/preview/costmanagement/mgmt/costmanagement/costmanagementapi/models.go index d592058fec26..9e5866aad71b 100644 --- a/profiles/preview/costmanagement/mgmt/costmanagement/costmanagementapi/models.go +++ b/profiles/preview/costmanagement/mgmt/costmanagement/costmanagementapi/models.go @@ -19,11 +19,9 @@ package costmanagementapi -import original "github.com/Azure/azure-sdk-for-go/services/costmanagement/mgmt/2018-05-31/costmanagement/costmanagementapi" +import original "github.com/Azure/azure-sdk-for-go/services/costmanagement/mgmt/2019-01-01/costmanagement/costmanagementapi" -type BaseClientAPI = original.BaseClientAPI -type BillingAccountDimensionsClientAPI = original.BillingAccountDimensionsClientAPI +type DimensionsClientAPI = original.DimensionsClientAPI +type ExportsClientAPI = original.ExportsClientAPI type OperationsClientAPI = original.OperationsClientAPI -type ReportConfigClientAPI = original.ReportConfigClientAPI -type ResourceGroupDimensionsClientAPI = original.ResourceGroupDimensionsClientAPI -type SubscriptionDimensionsClientAPI = original.SubscriptionDimensionsClientAPI +type QueryClientAPI = original.QueryClientAPI diff --git a/profiles/preview/costmanagement/mgmt/costmanagement/models.go b/profiles/preview/costmanagement/mgmt/costmanagement/models.go index 094a522d7101..2cbec2bef4b8 100644 --- a/profiles/preview/costmanagement/mgmt/costmanagement/models.go +++ b/profiles/preview/costmanagement/mgmt/costmanagement/models.go @@ -22,13 +22,32 @@ package costmanagement import ( "context" - original "github.com/Azure/azure-sdk-for-go/services/costmanagement/mgmt/2018-05-31/costmanagement" + original "github.com/Azure/azure-sdk-for-go/services/costmanagement/mgmt/2019-01-01/costmanagement" ) const ( DefaultBaseURI = original.DefaultBaseURI ) +type ExecutionStatus = original.ExecutionStatus + +const ( + Completed ExecutionStatus = original.Completed + DataNotAvailable ExecutionStatus = original.DataNotAvailable + Failed ExecutionStatus = original.Failed + InProgress ExecutionStatus = original.InProgress + NewDataNotAvailable ExecutionStatus = original.NewDataNotAvailable + Queued ExecutionStatus = original.Queued + Timeout ExecutionStatus = original.Timeout +) + +type ExecutionType = original.ExecutionType + +const ( + OnDemand ExecutionType = original.OnDemand + Scheduled ExecutionType = original.Scheduled +) + type FormatType = original.FormatType const ( @@ -38,7 +57,15 @@ const ( type GranularityType = original.GranularityType const ( - Daily GranularityType = original.Daily + Daily GranularityType = original.Daily + Hourly GranularityType = original.Hourly +) + +type QueryColumnType = original.QueryColumnType + +const ( + QueryColumnTypeDimension QueryColumnType = original.QueryColumnTypeDimension + QueryColumnTypeTag QueryColumnType = original.QueryColumnTypeTag ) type RecurrenceType = original.RecurrenceType @@ -50,11 +77,11 @@ const ( RecurrenceTypeWeekly RecurrenceType = original.RecurrenceTypeWeekly ) -type ReportConfigColumnType = original.ReportConfigColumnType +type SortDirection = original.SortDirection const ( - ReportConfigColumnTypeDimension ReportConfigColumnType = original.ReportConfigColumnTypeDimension - ReportConfigColumnTypeTag ReportConfigColumnType = original.ReportConfigColumnTypeTag + Ascending SortDirection = original.Ascending + Descending SortDirection = original.Descending ) type StatusType = original.StatusType @@ -67,19 +94,34 @@ const ( type TimeframeType = original.TimeframeType const ( - Custom TimeframeType = original.Custom - MonthToDate TimeframeType = original.MonthToDate - WeekToDate TimeframeType = original.WeekToDate - YearToDate TimeframeType = original.YearToDate + Custom TimeframeType = original.Custom + MonthToDate TimeframeType = original.MonthToDate + TheLastMonth TimeframeType = original.TheLastMonth + TheLastWeek TimeframeType = original.TheLastWeek + TheLastYear TimeframeType = original.TheLastYear + WeekToDate TimeframeType = original.WeekToDate + YearToDate TimeframeType = original.YearToDate ) type BaseClient = original.BaseClient -type BillingAccountDimensionsClient = original.BillingAccountDimensionsClient +type CommonExportProperties = original.CommonExportProperties type Dimension = original.Dimension type DimensionProperties = original.DimensionProperties +type DimensionsClient = original.DimensionsClient type DimensionsListResult = original.DimensionsListResult type ErrorDetails = original.ErrorDetails type ErrorResponse = original.ErrorResponse +type Export = original.Export +type ExportDeliveryDestination = original.ExportDeliveryDestination +type ExportDeliveryInfo = original.ExportDeliveryInfo +type ExportExecution = original.ExportExecution +type ExportExecutionListResult = original.ExportExecutionListResult +type ExportExecutionProperties = original.ExportExecutionProperties +type ExportListResult = original.ExportListResult +type ExportProperties = original.ExportProperties +type ExportRecurrencePeriod = original.ExportRecurrencePeriod +type ExportSchedule = original.ExportSchedule +type ExportsClient = original.ExportsClient type Operation = original.Operation type OperationDisplay = original.OperationDisplay type OperationListResult = original.OperationListResult @@ -87,37 +129,35 @@ type OperationListResultIterator = original.OperationListResultIterator type OperationListResultPage = original.OperationListResultPage type OperationsClient = original.OperationsClient type Query = original.Query +type QueryAggregation = original.QueryAggregation +type QueryClient = original.QueryClient type QueryColumn = original.QueryColumn +type QueryComparisonExpression = original.QueryComparisonExpression +type QueryDataset = original.QueryDataset +type QueryDatasetConfiguration = original.QueryDatasetConfiguration +type QueryDefinition = original.QueryDefinition +type QueryFilter = original.QueryFilter +type QueryGrouping = original.QueryGrouping type QueryProperties = original.QueryProperties type QueryResult = original.QueryResult -type ReportConfig = original.ReportConfig -type ReportConfigAggregation = original.ReportConfigAggregation -type ReportConfigClient = original.ReportConfigClient -type ReportConfigComparisonExpression = original.ReportConfigComparisonExpression -type ReportConfigDataset = original.ReportConfigDataset -type ReportConfigDatasetConfiguration = original.ReportConfigDatasetConfiguration -type ReportConfigDefinition = original.ReportConfigDefinition -type ReportConfigDeliveryDestination = original.ReportConfigDeliveryDestination -type ReportConfigDeliveryInfo = original.ReportConfigDeliveryInfo -type ReportConfigFilter = original.ReportConfigFilter -type ReportConfigGrouping = original.ReportConfigGrouping -type ReportConfigListResult = original.ReportConfigListResult -type ReportConfigProperties = original.ReportConfigProperties -type ReportConfigRecurrencePeriod = original.ReportConfigRecurrencePeriod -type ReportConfigSchedule = original.ReportConfigSchedule -type ReportConfigTimePeriod = original.ReportConfigTimePeriod +type QuerySortingConfiguration = original.QuerySortingConfiguration +type QueryTimePeriod = original.QueryTimePeriod type Resource = original.Resource -type ResourceGroupDimensionsClient = original.ResourceGroupDimensionsClient -type SubscriptionDimensionsClient = original.SubscriptionDimensionsClient func New(subscriptionID string) BaseClient { return original.New(subscriptionID) } -func NewBillingAccountDimensionsClient(subscriptionID string) BillingAccountDimensionsClient { - return original.NewBillingAccountDimensionsClient(subscriptionID) +func NewDimensionsClient(subscriptionID string) DimensionsClient { + return original.NewDimensionsClient(subscriptionID) +} +func NewDimensionsClientWithBaseURI(baseURI string, subscriptionID string) DimensionsClient { + return original.NewDimensionsClientWithBaseURI(baseURI, subscriptionID) +} +func NewExportsClient(subscriptionID string) ExportsClient { + return original.NewExportsClient(subscriptionID) } -func NewBillingAccountDimensionsClientWithBaseURI(baseURI string, subscriptionID string) BillingAccountDimensionsClient { - return original.NewBillingAccountDimensionsClientWithBaseURI(baseURI, subscriptionID) +func NewExportsClientWithBaseURI(baseURI string, subscriptionID string) ExportsClient { + return original.NewExportsClientWithBaseURI(baseURI, subscriptionID) } func NewOperationListResultIterator(page OperationListResultPage) OperationListResultIterator { return original.NewOperationListResultIterator(page) @@ -131,38 +171,35 @@ func NewOperationsClient(subscriptionID string) OperationsClient { func NewOperationsClientWithBaseURI(baseURI string, subscriptionID string) OperationsClient { return original.NewOperationsClientWithBaseURI(baseURI, subscriptionID) } -func NewReportConfigClient(subscriptionID string) ReportConfigClient { - return original.NewReportConfigClient(subscriptionID) -} -func NewReportConfigClientWithBaseURI(baseURI string, subscriptionID string) ReportConfigClient { - return original.NewReportConfigClientWithBaseURI(baseURI, subscriptionID) -} -func NewResourceGroupDimensionsClient(subscriptionID string) ResourceGroupDimensionsClient { - return original.NewResourceGroupDimensionsClient(subscriptionID) +func NewQueryClient(subscriptionID string) QueryClient { + return original.NewQueryClient(subscriptionID) } -func NewResourceGroupDimensionsClientWithBaseURI(baseURI string, subscriptionID string) ResourceGroupDimensionsClient { - return original.NewResourceGroupDimensionsClientWithBaseURI(baseURI, subscriptionID) -} -func NewSubscriptionDimensionsClient(subscriptionID string) SubscriptionDimensionsClient { - return original.NewSubscriptionDimensionsClient(subscriptionID) -} -func NewSubscriptionDimensionsClientWithBaseURI(baseURI string, subscriptionID string) SubscriptionDimensionsClient { - return original.NewSubscriptionDimensionsClientWithBaseURI(baseURI, subscriptionID) +func NewQueryClientWithBaseURI(baseURI string, subscriptionID string) QueryClient { + return original.NewQueryClientWithBaseURI(baseURI, subscriptionID) } func NewWithBaseURI(baseURI string, subscriptionID string) BaseClient { return original.NewWithBaseURI(baseURI, subscriptionID) } +func PossibleExecutionStatusValues() []ExecutionStatus { + return original.PossibleExecutionStatusValues() +} +func PossibleExecutionTypeValues() []ExecutionType { + return original.PossibleExecutionTypeValues() +} func PossibleFormatTypeValues() []FormatType { return original.PossibleFormatTypeValues() } func PossibleGranularityTypeValues() []GranularityType { return original.PossibleGranularityTypeValues() } +func PossibleQueryColumnTypeValues() []QueryColumnType { + return original.PossibleQueryColumnTypeValues() +} func PossibleRecurrenceTypeValues() []RecurrenceType { return original.PossibleRecurrenceTypeValues() } -func PossibleReportConfigColumnTypeValues() []ReportConfigColumnType { - return original.PossibleReportConfigColumnTypeValues() +func PossibleSortDirectionValues() []SortDirection { + return original.PossibleSortDirectionValues() } func PossibleStatusTypeValues() []StatusType { return original.PossibleStatusTypeValues() diff --git a/profiles/preview/preview/costmanagement/mgmt/costmanagement/models.go b/profiles/preview/preview/costmanagement/mgmt/costmanagement/models.go index 748a91034e28..5f42153222d8 100644 --- a/profiles/preview/preview/costmanagement/mgmt/costmanagement/models.go +++ b/profiles/preview/preview/costmanagement/mgmt/costmanagement/models.go @@ -80,11 +80,13 @@ const ( type ExecutionStatus = original.ExecutionStatus const ( - Completed ExecutionStatus = original.Completed - Failed ExecutionStatus = original.Failed - InProgress ExecutionStatus = original.InProgress - Queud ExecutionStatus = original.Queud - Timeout ExecutionStatus = original.Timeout + Completed ExecutionStatus = original.Completed + DataNotAvailable ExecutionStatus = original.DataNotAvailable + Failed ExecutionStatus = original.Failed + InProgress ExecutionStatus = original.InProgress + NewDataNotAvailable ExecutionStatus = original.NewDataNotAvailable + Queued ExecutionStatus = original.Queued + Timeout ExecutionStatus = original.Timeout ) type ExecutionType = original.ExecutionType @@ -103,7 +105,8 @@ const ( type GranularityType = original.GranularityType const ( - Daily GranularityType = original.Daily + Daily GranularityType = original.Daily + Hourly GranularityType = original.Hourly ) type RecurrenceType = original.RecurrenceType diff --git a/services/costmanagement/mgmt/2019-01-01/costmanagement/client.go b/services/costmanagement/mgmt/2019-01-01/costmanagement/client.go new file mode 100644 index 000000000000..2bf25df0d98e --- /dev/null +++ b/services/costmanagement/mgmt/2019-01-01/costmanagement/client.go @@ -0,0 +1,51 @@ +// Package costmanagement implements the Azure ARM Costmanagement service API version 2019-01-01. +// +// +package costmanagement + +// Copyright (c) Microsoft and contributors. 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. + +import ( + "github.com/Azure/go-autorest/autorest" +) + +const ( + // DefaultBaseURI is the default URI used for the service Costmanagement + DefaultBaseURI = "https://management.azure.com" +) + +// BaseClient is the base client for Costmanagement. +type BaseClient struct { + autorest.Client + BaseURI string + SubscriptionID string +} + +// New creates an instance of the BaseClient client. +func New(subscriptionID string) BaseClient { + return NewWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewWithBaseURI creates an instance of the BaseClient client. +func NewWithBaseURI(baseURI string, subscriptionID string) BaseClient { + return BaseClient{ + Client: autorest.NewClientWithUserAgent(UserAgent()), + BaseURI: baseURI, + SubscriptionID: subscriptionID, + } +} diff --git a/services/costmanagement/mgmt/2019-01-01/costmanagement/costmanagementapi/interfaces.go b/services/costmanagement/mgmt/2019-01-01/costmanagement/costmanagementapi/interfaces.go new file mode 100644 index 000000000000..cebfc869d44d --- /dev/null +++ b/services/costmanagement/mgmt/2019-01-01/costmanagement/costmanagementapi/interfaces.go @@ -0,0 +1,57 @@ +package costmanagementapi + +// Copyright (c) Microsoft and contributors. 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. + +import ( + "context" + "github.com/Azure/azure-sdk-for-go/services/costmanagement/mgmt/2019-01-01/costmanagement" + "github.com/Azure/go-autorest/autorest" +) + +// DimensionsClientAPI contains the set of methods on the DimensionsClient type. +type DimensionsClientAPI interface { + ListBySubscription(ctx context.Context, scope string, filter string, expand string, skiptoken string, top *int32) (result costmanagement.DimensionsListResult, err error) +} + +var _ DimensionsClientAPI = (*costmanagement.DimensionsClient)(nil) + +// QueryClientAPI contains the set of methods on the QueryClient type. +type QueryClientAPI interface { + UsageByScope(ctx context.Context, scope string, parameters costmanagement.QueryDefinition) (result costmanagement.QueryResult, err error) +} + +var _ QueryClientAPI = (*costmanagement.QueryClient)(nil) + +// ExportsClientAPI contains the set of methods on the ExportsClient type. +type ExportsClientAPI interface { + CreateOrUpdate(ctx context.Context, scope string, exportName string, parameters costmanagement.Export) (result costmanagement.Export, err error) + Delete(ctx context.Context, scope string, exportName string) (result autorest.Response, err error) + Execute(ctx context.Context, scope string, exportName string) (result autorest.Response, err error) + Get(ctx context.Context, scope string, exportName string) (result costmanagement.Export, err error) + GetExecutionHistory(ctx context.Context, scope string, exportName string) (result costmanagement.ExportExecutionListResult, err error) + List(ctx context.Context, scope string) (result costmanagement.ExportListResult, err error) +} + +var _ ExportsClientAPI = (*costmanagement.ExportsClient)(nil) + +// OperationsClientAPI contains the set of methods on the OperationsClient type. +type OperationsClientAPI interface { + List(ctx context.Context) (result costmanagement.OperationListResultPage, err error) +} + +var _ OperationsClientAPI = (*costmanagement.OperationsClient)(nil) diff --git a/services/costmanagement/mgmt/2019-01-01/costmanagement/dimensions.go b/services/costmanagement/mgmt/2019-01-01/costmanagement/dimensions.go new file mode 100644 index 000000000000..8fc3f5a4cd38 --- /dev/null +++ b/services/costmanagement/mgmt/2019-01-01/costmanagement/dimensions.go @@ -0,0 +1,152 @@ +package costmanagement + +// Copyright (c) Microsoft and contributors. 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. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// DimensionsClient is the client for the Dimensions methods of the Costmanagement service. +type DimensionsClient struct { + BaseClient +} + +// NewDimensionsClient creates an instance of the DimensionsClient client. +func NewDimensionsClient(subscriptionID string) DimensionsClient { + return NewDimensionsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewDimensionsClientWithBaseURI creates an instance of the DimensionsClient client. +func NewDimensionsClientWithBaseURI(baseURI string, subscriptionID string) DimensionsClient { + return DimensionsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// ListBySubscription lists the dimensions by the defined scope. +// Parameters: +// scope - the scope associated with dimension operations. This includes '/subscriptions/{subscriptionId}/' for +// subscription scope, '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup +// scope, '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope, +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' for Department +// scope, +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' +// for EnrollmentAccount scope and '/providers/Microsoft.Management/managementGroups/{managementGroupId}' for +// Management Group scope.. +// filter - may be used to filter dimensions by properties/category, properties/usageStart, +// properties/usageEnd. Supported operators are 'eq','lt', 'gt', 'le', 'ge'. +// expand - may be used to expand the properties/data within a dimension category. By default, data is not +// included when listing dimensions. +// skiptoken - 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. +// top - may be used to limit the number of results to the most recent N dimension data. +func (client DimensionsClient) ListBySubscription(ctx context.Context, scope string, filter string, expand string, skiptoken string, top *int32) (result DimensionsListResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/DimensionsClient.ListBySubscription") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: top, + Constraints: []validation.Constraint{{Target: "top", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "top", Name: validation.InclusiveMaximum, Rule: int64(1000), Chain: nil}, + {Target: "top", Name: validation.InclusiveMinimum, Rule: 1, Chain: nil}, + }}}}}); err != nil { + return result, validation.NewError("costmanagement.DimensionsClient", "ListBySubscription", err.Error()) + } + + req, err := client.ListBySubscriptionPreparer(ctx, scope, filter, expand, skiptoken, top) + if err != nil { + err = autorest.NewErrorWithError(err, "costmanagement.DimensionsClient", "ListBySubscription", nil, "Failure preparing request") + return + } + + resp, err := client.ListBySubscriptionSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "costmanagement.DimensionsClient", "ListBySubscription", resp, "Failure sending request") + return + } + + result, err = client.ListBySubscriptionResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "costmanagement.DimensionsClient", "ListBySubscription", resp, "Failure responding to request") + } + + return +} + +// ListBySubscriptionPreparer prepares the ListBySubscription request. +func (client DimensionsClient) ListBySubscriptionPreparer(ctx context.Context, scope string, filter string, expand string, skiptoken string, top *int32) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "scope": scope, + } + + const APIVersion = "2019-01-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + if len(filter) > 0 { + queryParameters["$filter"] = autorest.Encode("query", filter) + } + if len(expand) > 0 { + queryParameters["$expand"] = autorest.Encode("query", expand) + } + if len(skiptoken) > 0 { + queryParameters["$skiptoken"] = autorest.Encode("query", skiptoken) + } + if top != nil { + queryParameters["$top"] = autorest.Encode("query", *top) + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/{scope}/providers/Microsoft.CostManagement/dimensions", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListBySubscriptionSender sends the ListBySubscription request. The method will close the +// http.Response Body if it receives an error. +func (client DimensionsClient) ListBySubscriptionSender(req *http.Request) (*http.Response, error) { + return autorest.SendWithSender(client, req, + autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// ListBySubscriptionResponder handles the response to the ListBySubscription request. The method always +// closes the http.Response Body. +func (client DimensionsClient) ListBySubscriptionResponder(resp *http.Response) (result DimensionsListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/services/costmanagement/mgmt/2019-01-01/costmanagement/exports.go b/services/costmanagement/mgmt/2019-01-01/costmanagement/exports.go new file mode 100644 index 000000000000..83016d7c9aa2 --- /dev/null +++ b/services/costmanagement/mgmt/2019-01-01/costmanagement/exports.go @@ -0,0 +1,557 @@ +package costmanagement + +// Copyright (c) Microsoft and contributors. 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. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// ExportsClient is the client for the Exports methods of the Costmanagement service. +type ExportsClient struct { + BaseClient +} + +// NewExportsClient creates an instance of the ExportsClient client. +func NewExportsClient(subscriptionID string) ExportsClient { + return NewExportsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewExportsClientWithBaseURI creates an instance of the ExportsClient client. +func NewExportsClientWithBaseURI(baseURI string, subscriptionID string) ExportsClient { + return ExportsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// CreateOrUpdate the operation to create or update a export. Update operation requires latest eTag to be set in the +// request. You may obtain the latest eTag by performing a get operation. Create operation does not require eTag. +// Parameters: +// scope - the scope associated with query and export operations. This includes +// '/subscriptions/{subscriptionId}/' for subscription scope, +// '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope, +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope and +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' for Department +// scope, +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' +// for EnrollmentAccount scope and '/providers/Microsoft.Management/managementGroups/{managementGroupId} for +// Management Group scope.. +// exportName - export Name. +// parameters - parameters supplied to the CreateOrUpdate Export operation. +func (client ExportsClient) CreateOrUpdate(ctx context.Context, scope string, exportName string, parameters Export) (result Export, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExportsClient.CreateOrUpdate") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.ExportProperties", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.ExportProperties.Schedule", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.ExportProperties.Schedule.RecurrencePeriod", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.ExportProperties.Schedule.RecurrencePeriod.From", Name: validation.Null, Rule: true, Chain: nil}}}, + }}, + }}}}}); err != nil { + return result, validation.NewError("costmanagement.ExportsClient", "CreateOrUpdate", err.Error()) + } + + req, err := client.CreateOrUpdatePreparer(ctx, scope, exportName, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "costmanagement.ExportsClient", "CreateOrUpdate", nil, "Failure preparing request") + return + } + + resp, err := client.CreateOrUpdateSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "costmanagement.ExportsClient", "CreateOrUpdate", resp, "Failure sending request") + return + } + + result, err = client.CreateOrUpdateResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "costmanagement.ExportsClient", "CreateOrUpdate", resp, "Failure responding to request") + } + + return +} + +// CreateOrUpdatePreparer prepares the CreateOrUpdate request. +func (client ExportsClient) CreateOrUpdatePreparer(ctx context.Context, scope string, exportName string, parameters Export) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "exportName": autorest.Encode("path", exportName), + "scope": scope, + } + + const APIVersion = "2019-01-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPut(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/{scope}/providers/Microsoft.CostManagement/exports/{exportName}", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the +// http.Response Body if it receives an error. +func (client ExportsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) { + return autorest.SendWithSender(client, req, + autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always +// closes the http.Response Body. +func (client ExportsClient) CreateOrUpdateResponder(resp *http.Response) (result Export, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// Delete the operation to delete a export. +// Parameters: +// scope - the scope associated with query and export operations. This includes +// '/subscriptions/{subscriptionId}/' for subscription scope, +// '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope, +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope and +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' for Department +// scope, +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' +// for EnrollmentAccount scope and '/providers/Microsoft.Management/managementGroups/{managementGroupId} for +// Management Group scope.. +// exportName - export Name. +func (client ExportsClient) Delete(ctx context.Context, scope string, exportName string) (result autorest.Response, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExportsClient.Delete") + defer func() { + sc := -1 + if result.Response != nil { + sc = result.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.DeletePreparer(ctx, scope, exportName) + if err != nil { + err = autorest.NewErrorWithError(err, "costmanagement.ExportsClient", "Delete", nil, "Failure preparing request") + return + } + + resp, err := client.DeleteSender(req) + if err != nil { + result.Response = resp + err = autorest.NewErrorWithError(err, "costmanagement.ExportsClient", "Delete", resp, "Failure sending request") + return + } + + result, err = client.DeleteResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "costmanagement.ExportsClient", "Delete", resp, "Failure responding to request") + } + + return +} + +// DeletePreparer prepares the Delete request. +func (client ExportsClient) DeletePreparer(ctx context.Context, scope string, exportName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "exportName": autorest.Encode("path", exportName), + "scope": scope, + } + + const APIVersion = "2019-01-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsDelete(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/{scope}/providers/Microsoft.CostManagement/exports/{exportName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// DeleteSender sends the Delete request. The method will close the +// http.Response Body if it receives an error. +func (client ExportsClient) DeleteSender(req *http.Request) (*http.Response, error) { + return autorest.SendWithSender(client, req, + autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// DeleteResponder handles the response to the Delete request. The method always +// closes the http.Response Body. +func (client ExportsClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByClosing()) + result.Response = resp + return +} + +// Execute the operation to execute a export. +// Parameters: +// scope - the scope associated with query and export operations. This includes +// '/subscriptions/{subscriptionId}/' for subscription scope, +// '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope, +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope and +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' for Department +// scope, +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' +// for EnrollmentAccount scope and '/providers/Microsoft.Management/managementGroups/{managementGroupId} for +// Management Group scope.. +// exportName - export Name. +func (client ExportsClient) Execute(ctx context.Context, scope string, exportName string) (result autorest.Response, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExportsClient.Execute") + defer func() { + sc := -1 + if result.Response != nil { + sc = result.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ExecutePreparer(ctx, scope, exportName) + if err != nil { + err = autorest.NewErrorWithError(err, "costmanagement.ExportsClient", "Execute", nil, "Failure preparing request") + return + } + + resp, err := client.ExecuteSender(req) + if err != nil { + result.Response = resp + err = autorest.NewErrorWithError(err, "costmanagement.ExportsClient", "Execute", resp, "Failure sending request") + return + } + + result, err = client.ExecuteResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "costmanagement.ExportsClient", "Execute", resp, "Failure responding to request") + } + + return +} + +// ExecutePreparer prepares the Execute request. +func (client ExportsClient) ExecutePreparer(ctx context.Context, scope string, exportName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "exportName": autorest.Encode("path", exportName), + "scope": scope, + } + + const APIVersion = "2019-01-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/{scope}/providers/Microsoft.CostManagement/exports/{exportName}/run", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ExecuteSender sends the Execute request. The method will close the +// http.Response Body if it receives an error. +func (client ExportsClient) ExecuteSender(req *http.Request) (*http.Response, error) { + return autorest.SendWithSender(client, req, + autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// ExecuteResponder handles the response to the Execute request. The method always +// closes the http.Response Body. +func (client ExportsClient) ExecuteResponder(resp *http.Response) (result autorest.Response, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByClosing()) + result.Response = resp + return +} + +// Get gets the export for the defined scope by export name. +// Parameters: +// scope - the scope associated with query and export operations. This includes +// '/subscriptions/{subscriptionId}/' for subscription scope, +// '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope, +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope and +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' for Department +// scope, +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' +// for EnrollmentAccount scope and '/providers/Microsoft.Management/managementGroups/{managementGroupId} for +// Management Group scope.. +// exportName - export Name. +func (client ExportsClient) Get(ctx context.Context, scope string, exportName string) (result Export, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExportsClient.Get") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetPreparer(ctx, scope, exportName) + if err != nil { + err = autorest.NewErrorWithError(err, "costmanagement.ExportsClient", "Get", nil, "Failure preparing request") + return + } + + resp, err := client.GetSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "costmanagement.ExportsClient", "Get", resp, "Failure sending request") + return + } + + result, err = client.GetResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "costmanagement.ExportsClient", "Get", resp, "Failure responding to request") + } + + return +} + +// GetPreparer prepares the Get request. +func (client ExportsClient) GetPreparer(ctx context.Context, scope string, exportName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "exportName": autorest.Encode("path", exportName), + "scope": scope, + } + + const APIVersion = "2019-01-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/{scope}/providers/Microsoft.CostManagement/exports/{exportName}", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetSender sends the Get request. The method will close the +// http.Response Body if it receives an error. +func (client ExportsClient) GetSender(req *http.Request) (*http.Response, error) { + return autorest.SendWithSender(client, req, + autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// GetResponder handles the response to the Get request. The method always +// closes the http.Response Body. +func (client ExportsClient) GetResponder(resp *http.Response) (result Export, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// GetExecutionHistory gets the execution history of a export for the defined scope by export name. +// Parameters: +// scope - the scope associated with query and export operations. This includes +// '/subscriptions/{subscriptionId}/' for subscription scope, +// '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope, +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope and +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' for Department +// scope, +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' +// for EnrollmentAccount scope and '/providers/Microsoft.Management/managementGroups/{managementGroupId} for +// Management Group scope.. +// exportName - export Name. +func (client ExportsClient) GetExecutionHistory(ctx context.Context, scope string, exportName string) (result ExportExecutionListResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExportsClient.GetExecutionHistory") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.GetExecutionHistoryPreparer(ctx, scope, exportName) + if err != nil { + err = autorest.NewErrorWithError(err, "costmanagement.ExportsClient", "GetExecutionHistory", nil, "Failure preparing request") + return + } + + resp, err := client.GetExecutionHistorySender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "costmanagement.ExportsClient", "GetExecutionHistory", resp, "Failure sending request") + return + } + + result, err = client.GetExecutionHistoryResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "costmanagement.ExportsClient", "GetExecutionHistory", resp, "Failure responding to request") + } + + return +} + +// GetExecutionHistoryPreparer prepares the GetExecutionHistory request. +func (client ExportsClient) GetExecutionHistoryPreparer(ctx context.Context, scope string, exportName string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "exportName": autorest.Encode("path", exportName), + "scope": scope, + } + + const APIVersion = "2019-01-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/{scope}/providers/Microsoft.CostManagement/exports/{exportName}/runHistory", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// GetExecutionHistorySender sends the GetExecutionHistory request. The method will close the +// http.Response Body if it receives an error. +func (client ExportsClient) GetExecutionHistorySender(req *http.Request) (*http.Response, error) { + return autorest.SendWithSender(client, req, + autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// GetExecutionHistoryResponder handles the response to the GetExecutionHistory request. The method always +// closes the http.Response Body. +func (client ExportsClient) GetExecutionHistoryResponder(resp *http.Response) (result ExportExecutionListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// List lists all exports at the given scope. +// Parameters: +// scope - the scope associated with query and export operations. This includes +// '/subscriptions/{subscriptionId}/' for subscription scope, +// '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope, +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope and +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' for Department +// scope, +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' +// for EnrollmentAccount scope and '/providers/Microsoft.Management/managementGroups/{managementGroupId} for +// Management Group scope.. +func (client ExportsClient) List(ctx context.Context, scope string) (result ExportListResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/ExportsClient.List") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + req, err := client.ListPreparer(ctx, scope) + if err != nil { + err = autorest.NewErrorWithError(err, "costmanagement.ExportsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "costmanagement.ExportsClient", "List", resp, "Failure sending request") + return + } + + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "costmanagement.ExportsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client ExportsClient) ListPreparer(ctx context.Context, scope string) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "scope": scope, + } + + const APIVersion = "2019-01-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/{scope}/providers/Microsoft.CostManagement/exports", pathParameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client ExportsClient) ListSender(req *http.Request) (*http.Response, error) { + return autorest.SendWithSender(client, req, + autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client ExportsClient) ListResponder(resp *http.Response) (result ExportListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/services/costmanagement/mgmt/2019-01-01/costmanagement/models.go b/services/costmanagement/mgmt/2019-01-01/costmanagement/models.go new file mode 100644 index 000000000000..435333b5e57b --- /dev/null +++ b/services/costmanagement/mgmt/2019-01-01/costmanagement/models.go @@ -0,0 +1,1020 @@ +package costmanagement + +// Copyright (c) Microsoft and contributors. 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. + +import ( + "context" + "encoding/json" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/date" + "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/costmanagement/mgmt/2019-01-01/costmanagement" + +// ExecutionStatus enumerates the values for execution status. +type ExecutionStatus string + +const ( + // Completed ... + Completed ExecutionStatus = "Completed" + // DataNotAvailable ... + DataNotAvailable ExecutionStatus = "DataNotAvailable" + // Failed ... + Failed ExecutionStatus = "Failed" + // InProgress ... + InProgress ExecutionStatus = "InProgress" + // NewDataNotAvailable ... + NewDataNotAvailable ExecutionStatus = "NewDataNotAvailable" + // Queued ... + Queued ExecutionStatus = "Queued" + // Timeout ... + Timeout ExecutionStatus = "Timeout" +) + +// PossibleExecutionStatusValues returns an array of possible values for the ExecutionStatus const type. +func PossibleExecutionStatusValues() []ExecutionStatus { + return []ExecutionStatus{Completed, DataNotAvailable, Failed, InProgress, NewDataNotAvailable, Queued, Timeout} +} + +// ExecutionType enumerates the values for execution type. +type ExecutionType string + +const ( + // OnDemand ... + OnDemand ExecutionType = "OnDemand" + // Scheduled ... + Scheduled ExecutionType = "Scheduled" +) + +// PossibleExecutionTypeValues returns an array of possible values for the ExecutionType const type. +func PossibleExecutionTypeValues() []ExecutionType { + return []ExecutionType{OnDemand, Scheduled} +} + +// FormatType enumerates the values for format type. +type FormatType string + +const ( + // Csv ... + Csv FormatType = "Csv" +) + +// PossibleFormatTypeValues returns an array of possible values for the FormatType const type. +func PossibleFormatTypeValues() []FormatType { + return []FormatType{Csv} +} + +// GranularityType enumerates the values for granularity type. +type GranularityType string + +const ( + // Daily ... + Daily GranularityType = "Daily" + // Hourly ... + Hourly GranularityType = "Hourly" +) + +// PossibleGranularityTypeValues returns an array of possible values for the GranularityType const type. +func PossibleGranularityTypeValues() []GranularityType { + return []GranularityType{Daily, Hourly} +} + +// QueryColumnType enumerates the values for query column type. +type QueryColumnType string + +const ( + // QueryColumnTypeDimension ... + QueryColumnTypeDimension QueryColumnType = "Dimension" + // QueryColumnTypeTag ... + QueryColumnTypeTag QueryColumnType = "Tag" +) + +// PossibleQueryColumnTypeValues returns an array of possible values for the QueryColumnType const type. +func PossibleQueryColumnTypeValues() []QueryColumnType { + return []QueryColumnType{QueryColumnTypeDimension, QueryColumnTypeTag} +} + +// RecurrenceType enumerates the values for recurrence type. +type RecurrenceType string + +const ( + // RecurrenceTypeAnnually ... + RecurrenceTypeAnnually RecurrenceType = "Annually" + // RecurrenceTypeDaily ... + RecurrenceTypeDaily RecurrenceType = "Daily" + // RecurrenceTypeMonthly ... + RecurrenceTypeMonthly RecurrenceType = "Monthly" + // RecurrenceTypeWeekly ... + RecurrenceTypeWeekly RecurrenceType = "Weekly" +) + +// PossibleRecurrenceTypeValues returns an array of possible values for the RecurrenceType const type. +func PossibleRecurrenceTypeValues() []RecurrenceType { + return []RecurrenceType{RecurrenceTypeAnnually, RecurrenceTypeDaily, RecurrenceTypeMonthly, RecurrenceTypeWeekly} +} + +// SortDirection enumerates the values for sort direction. +type SortDirection string + +const ( + // Ascending ... + Ascending SortDirection = "Ascending" + // Descending ... + Descending SortDirection = "Descending" +) + +// PossibleSortDirectionValues returns an array of possible values for the SortDirection const type. +func PossibleSortDirectionValues() []SortDirection { + return []SortDirection{Ascending, Descending} +} + +// StatusType enumerates the values for status type. +type StatusType string + +const ( + // Active ... + Active StatusType = "Active" + // Inactive ... + Inactive StatusType = "Inactive" +) + +// PossibleStatusTypeValues returns an array of possible values for the StatusType const type. +func PossibleStatusTypeValues() []StatusType { + return []StatusType{Active, Inactive} +} + +// TimeframeType enumerates the values for timeframe type. +type TimeframeType string + +const ( + // Custom ... + Custom TimeframeType = "Custom" + // MonthToDate ... + MonthToDate TimeframeType = "MonthToDate" + // TheLastMonth ... + TheLastMonth TimeframeType = "TheLastMonth" + // TheLastWeek ... + TheLastWeek TimeframeType = "TheLastWeek" + // TheLastYear ... + TheLastYear TimeframeType = "TheLastYear" + // WeekToDate ... + WeekToDate TimeframeType = "WeekToDate" + // YearToDate ... + YearToDate TimeframeType = "YearToDate" +) + +// PossibleTimeframeTypeValues returns an array of possible values for the TimeframeType const type. +func PossibleTimeframeTypeValues() []TimeframeType { + return []TimeframeType{Custom, MonthToDate, TheLastMonth, TheLastWeek, TheLastYear, WeekToDate, YearToDate} +} + +// CommonExportProperties the common properties of the export. +type CommonExportProperties struct { + // Format - The format of the export being delivered. Possible values include: 'Csv' + Format FormatType `json:"format,omitempty"` + // DeliveryInfo - Has delivery information for the export. + DeliveryInfo *ExportDeliveryInfo `json:"deliveryInfo,omitempty"` + // Definition - Has definition for the export. + Definition *QueryDefinition `json:"definition,omitempty"` +} + +// Dimension ... +type Dimension struct { + *DimensionProperties `json:"properties,omitempty"` + // ID - Resource Id. + ID *string `json:"id,omitempty"` + // Name - Resource name. + Name *string `json:"name,omitempty"` + // Type - Resource type. + Type *string `json:"type,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for Dimension. +func (d Dimension) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if d.DimensionProperties != nil { + objectMap["properties"] = d.DimensionProperties + } + if d.ID != nil { + objectMap["id"] = d.ID + } + if d.Name != nil { + objectMap["name"] = d.Name + } + if d.Type != nil { + objectMap["type"] = d.Type + } + if d.Tags != nil { + objectMap["tags"] = d.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for Dimension struct. +func (d *Dimension) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var dimensionProperties DimensionProperties + err = json.Unmarshal(*v, &dimensionProperties) + if err != nil { + return err + } + d.DimensionProperties = &dimensionProperties + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + d.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + d.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + d.Type = &typeVar + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + d.Tags = tags + } + } + } + + return nil +} + +// DimensionProperties ... +type DimensionProperties struct { + Description *string `json:"description,omitempty"` + FilterEnabled *bool `json:"filterEnabled,omitempty"` + GroupingEnabled *bool `json:"groupingEnabled,omitempty"` + Data *[]string `json:"data,omitempty"` + Total *int32 `json:"total,omitempty"` + Category *string `json:"category,omitempty"` + UsageStart *date.Time `json:"usageStart,omitempty"` + UsageEnd *date.Time `json:"usageEnd,omitempty"` + NextLink *string `json:"nextLink,omitempty"` +} + +// DimensionsListResult result of listing dimensions. It contains a list of available dimensions. +type DimensionsListResult struct { + autorest.Response `json:"-"` + // Value - The list of dimensions. + Value *[]Dimension `json:"value,omitempty"` +} + +// ErrorDetails the details of the error. +type ErrorDetails struct { + // Code - Error code. + Code *string `json:"code,omitempty"` + // Message - Error message indicating why the operation failed. + Message *string `json:"message,omitempty"` +} + +// 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 { + // Error - The details of the error. + Error *ErrorDetails `json:"error,omitempty"` +} + +// Export a export resource. +type Export struct { + autorest.Response `json:"-"` + *ExportProperties `json:"properties,omitempty"` + // ID - Resource Id. + ID *string `json:"id,omitempty"` + // Name - Resource name. + Name *string `json:"name,omitempty"` + // Type - Resource type. + Type *string `json:"type,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for Export. +func (e Export) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if e.ExportProperties != nil { + objectMap["properties"] = e.ExportProperties + } + if e.ID != nil { + objectMap["id"] = e.ID + } + if e.Name != nil { + objectMap["name"] = e.Name + } + if e.Type != nil { + objectMap["type"] = e.Type + } + if e.Tags != nil { + objectMap["tags"] = e.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for Export struct. +func (e *Export) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var exportProperties ExportProperties + err = json.Unmarshal(*v, &exportProperties) + if err != nil { + return err + } + e.ExportProperties = &exportProperties + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + e.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + e.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + e.Type = &typeVar + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + e.Tags = tags + } + } + } + + return nil +} + +// ExportDeliveryDestination the destination information for the delivery of the export. +type ExportDeliveryDestination struct { + // ResourceID - The resource id of the storage account where exports will be delivered. + ResourceID *string `json:"resourceId,omitempty"` + // Container - The name of the container where exports will be uploaded. + Container *string `json:"container,omitempty"` + // RootFolderPath - The name of the directory where exports will be uploaded. + RootFolderPath *string `json:"rootFolderPath,omitempty"` +} + +// ExportDeliveryInfo the delivery information associated with a export. +type ExportDeliveryInfo struct { + // Destination - Has destination for the export being delivered. + Destination *ExportDeliveryDestination `json:"destination,omitempty"` +} + +// ExportExecution a export execution. +type ExportExecution struct { + *ExportExecutionProperties `json:"properties,omitempty"` + // ID - Resource Id. + ID *string `json:"id,omitempty"` + // Name - Resource name. + Name *string `json:"name,omitempty"` + // Type - Resource type. + Type *string `json:"type,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for ExportExecution. +func (ee ExportExecution) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if ee.ExportExecutionProperties != nil { + objectMap["properties"] = ee.ExportExecutionProperties + } + if ee.ID != nil { + objectMap["id"] = ee.ID + } + if ee.Name != nil { + objectMap["name"] = ee.Name + } + if ee.Type != nil { + objectMap["type"] = ee.Type + } + if ee.Tags != nil { + objectMap["tags"] = ee.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for ExportExecution struct. +func (ee *ExportExecution) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var exportExecutionProperties ExportExecutionProperties + err = json.Unmarshal(*v, &exportExecutionProperties) + if err != nil { + return err + } + ee.ExportExecutionProperties = &exportExecutionProperties + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + ee.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + ee.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + ee.Type = &typeVar + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + ee.Tags = tags + } + } + } + + return nil +} + +// ExportExecutionListResult result of listing exports execution history of a export by name +type ExportExecutionListResult struct { + autorest.Response `json:"-"` + // Value - The list of export executions. + Value *[]ExportExecution `json:"value,omitempty"` +} + +// ExportExecutionProperties the properties of the export execution. +type ExportExecutionProperties struct { + // ExecutionType - The type of the export execution. Possible values include: 'OnDemand', 'Scheduled' + ExecutionType ExecutionType `json:"executionType,omitempty"` + // Status - The status of the export execution. Possible values include: 'Queued', 'InProgress', 'Completed', 'Failed', 'Timeout', 'NewDataNotAvailable', 'DataNotAvailable' + Status ExecutionStatus `json:"status,omitempty"` + // SubmittedBy - The identifier for the entity that executed the export. For OnDemand executions, it is the email id. For Scheduled executions, it is the constant value - System. + SubmittedBy *string `json:"submittedBy,omitempty"` + // SubmittedTime - The time when export was queued to be executed. + SubmittedTime *date.Time `json:"submittedTime,omitempty"` + // ProcessingStartTime - The time when export was picked up to be executed. + ProcessingStartTime *date.Time `json:"processingStartTime,omitempty"` + // ProcessingEndTime - The time when export execution finished. + ProcessingEndTime *date.Time `json:"processingEndTime,omitempty"` + // FileName - The name of the file export got written to. + FileName *string `json:"fileName,omitempty"` + RunSettings *CommonExportProperties `json:"runSettings,omitempty"` +} + +// ExportListResult result of listing exports. It contains a list of available exports in the scope +// provided. +type ExportListResult struct { + autorest.Response `json:"-"` + // Value - The list of exports. + Value *[]Export `json:"value,omitempty"` +} + +// ExportProperties the properties of the export. +type ExportProperties struct { + // Schedule - Has schedule information for the export. + Schedule *ExportSchedule `json:"schedule,omitempty"` + // Format - The format of the export being delivered. Possible values include: 'Csv' + Format FormatType `json:"format,omitempty"` + // DeliveryInfo - Has delivery information for the export. + DeliveryInfo *ExportDeliveryInfo `json:"deliveryInfo,omitempty"` + // Definition - Has definition for the export. + Definition *QueryDefinition `json:"definition,omitempty"` +} + +// ExportRecurrencePeriod the start and end date for recurrence schedule. +type ExportRecurrencePeriod struct { + // From - The start date of recurrence. + From *date.Time `json:"from,omitempty"` + // To - The end date of recurrence. + To *date.Time `json:"to,omitempty"` +} + +// ExportSchedule the schedule associated with a export. +type ExportSchedule struct { + // Status - The status of the schedule. Whether active or not. If inactive, the export's scheduled execution is paused. Possible values include: 'Active', 'Inactive' + Status StatusType `json:"status,omitempty"` + // Recurrence - The schedule recurrence. Possible values include: 'RecurrenceTypeDaily', 'RecurrenceTypeWeekly', 'RecurrenceTypeMonthly', 'RecurrenceTypeAnnually' + Recurrence RecurrenceType `json:"recurrence,omitempty"` + // RecurrencePeriod - Has start and end date of the recurrence. The start date must be in future. If present, the end date must be greater than start date. + RecurrencePeriod *ExportRecurrencePeriod `json:"recurrencePeriod,omitempty"` +} + +// Operation a Cost management REST API operation. +type Operation struct { + // Name - Operation name: {provider}/{resource}/{operation}. + Name *string `json:"name,omitempty"` + // Display - The object that represents the operation. + Display *OperationDisplay `json:"display,omitempty"` +} + +// OperationDisplay the object that represents the operation. +type OperationDisplay struct { + // Provider - Service provider: Microsoft.CostManagement. + Provider *string `json:"provider,omitempty"` + // Resource - Resource on which the operation is performed: Dimensions, Query. + Resource *string `json:"resource,omitempty"` + // Operation - Operation type: Read, write, delete, etc. + Operation *string `json:"operation,omitempty"` +} + +// OperationListResult result of listing cost management operations. It contains a list of operations and a +// URL link to get the next set of results. +type OperationListResult struct { + autorest.Response `json:"-"` + // Value - List of cost management operations supported by the Microsoft.CostManagement resource provider. + Value *[]Operation `json:"value,omitempty"` + // NextLink - URL to get the next set of operation list results if there are any. + NextLink *string `json:"nextLink,omitempty"` +} + +// OperationListResultIterator provides access to a complete listing of Operation values. +type OperationListResultIterator struct { + i int + page OperationListResultPage +} + +// 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 *OperationListResultIterator) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/OperationListResultIterator.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 *OperationListResultIterator) Next() error { + return iter.NextWithContext(context.Background()) +} + +// NotDone returns true if the enumeration should be started or is not yet complete. +func (iter OperationListResultIterator) 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 OperationListResultIterator) Response() OperationListResult { + 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 OperationListResultIterator) Value() Operation { + if !iter.page.NotDone() { + return Operation{} + } + return iter.page.Values()[iter.i] +} + +// Creates a new instance of the OperationListResultIterator type. +func NewOperationListResultIterator(page OperationListResultPage) OperationListResultIterator { + return OperationListResultIterator{page: page} +} + +// IsEmpty returns true if the ListResult contains no values. +func (olr OperationListResult) IsEmpty() bool { + return olr.Value == nil || len(*olr.Value) == 0 +} + +// operationListResultPreparer prepares a request to retrieve the next set of results. +// It returns nil if no more results exist. +func (olr OperationListResult) operationListResultPreparer(ctx context.Context) (*http.Request, error) { + if olr.NextLink == nil || len(to.String(olr.NextLink)) < 1 { + return nil, nil + } + return autorest.Prepare((&http.Request{}).WithContext(ctx), + autorest.AsJSON(), + autorest.AsGet(), + autorest.WithBaseURL(to.String(olr.NextLink))) +} + +// OperationListResultPage contains a page of Operation values. +type OperationListResultPage struct { + fn func(context.Context, OperationListResult) (OperationListResult, error) + olr OperationListResult +} + +// 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 *OperationListResultPage) NextWithContext(ctx context.Context) (err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/OperationListResultPage.NextWithContext") + defer func() { + sc := -1 + if page.Response().Response.Response != nil { + sc = page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + next, err := page.fn(ctx, page.olr) + if err != nil { + return err + } + page.olr = next + 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 *OperationListResultPage) Next() error { + return page.NextWithContext(context.Background()) +} + +// NotDone returns true if the page enumeration should be started or is not yet complete. +func (page OperationListResultPage) NotDone() bool { + return !page.olr.IsEmpty() +} + +// Response returns the raw server response from the last page request. +func (page OperationListResultPage) Response() OperationListResult { + return page.olr +} + +// Values returns the slice of values for the current page or nil if there are no values. +func (page OperationListResultPage) Values() []Operation { + if page.olr.IsEmpty() { + return nil + } + return *page.olr.Value +} + +// Creates a new instance of the OperationListResultPage type. +func NewOperationListResultPage(getNextPage func(context.Context, OperationListResult) (OperationListResult, error)) OperationListResultPage { + return OperationListResultPage{fn: getNextPage} +} + +// Query ... +type Query struct { + *QueryProperties `json:"properties,omitempty"` + // ID - Resource Id. + ID *string `json:"id,omitempty"` + // Name - Resource name. + Name *string `json:"name,omitempty"` + // Type - Resource type. + Type *string `json:"type,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for Query. +func (q Query) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if q.QueryProperties != nil { + objectMap["properties"] = q.QueryProperties + } + if q.ID != nil { + objectMap["id"] = q.ID + } + if q.Name != nil { + objectMap["name"] = q.Name + } + if q.Type != nil { + objectMap["type"] = q.Type + } + if q.Tags != nil { + objectMap["tags"] = q.Tags + } + return json.Marshal(objectMap) +} + +// UnmarshalJSON is the custom unmarshaler for Query struct. +func (q *Query) UnmarshalJSON(body []byte) error { + var m map[string]*json.RawMessage + err := json.Unmarshal(body, &m) + if err != nil { + return err + } + for k, v := range m { + switch k { + case "properties": + if v != nil { + var queryProperties QueryProperties + err = json.Unmarshal(*v, &queryProperties) + if err != nil { + return err + } + q.QueryProperties = &queryProperties + } + case "id": + if v != nil { + var ID string + err = json.Unmarshal(*v, &ID) + if err != nil { + return err + } + q.ID = &ID + } + case "name": + if v != nil { + var name string + err = json.Unmarshal(*v, &name) + if err != nil { + return err + } + q.Name = &name + } + case "type": + if v != nil { + var typeVar string + err = json.Unmarshal(*v, &typeVar) + if err != nil { + return err + } + q.Type = &typeVar + } + case "tags": + if v != nil { + var tags map[string]*string + err = json.Unmarshal(*v, &tags) + if err != nil { + return err + } + q.Tags = tags + } + } + } + + return nil +} + +// QueryAggregation the aggregation expression to be used in the query. +type QueryAggregation struct { + // Name - The name of the column to aggregate. + Name *string `json:"name,omitempty"` + // Function - The name of the aggregation function to use. + Function *string `json:"function,omitempty"` +} + +// QueryColumn ... +type QueryColumn struct { + Name *string `json:"name,omitempty"` + Type *string `json:"type,omitempty"` +} + +// QueryComparisonExpression the comparison expression to be used in the query. +type QueryComparisonExpression struct { + // Name - The name of the column to use in comparison. + Name *string `json:"name,omitempty"` + // Operator - The operator to use for comparison. + Operator *string `json:"operator,omitempty"` + // Values - Array of values to use for comparison + Values *[]string `json:"values,omitempty"` +} + +// QueryDataset the definition of data present in the query. +type QueryDataset struct { + // Granularity - The granularity of rows in the query. Possible values include: 'Daily', 'Hourly' + Granularity GranularityType `json:"granularity,omitempty"` + // Configuration - Has configuration information for the data in the export. The configuration will be ignored if aggregation and grouping are provided. + Configuration *QueryDatasetConfiguration `json:"configuration,omitempty"` + // Aggregation - Dictionary of aggregation expression to use in the query. The key of each item in the dictionary is the alias for the aggregated column. Query can have up to 2 aggregation clauses. + Aggregation map[string]*QueryAggregation `json:"aggregation"` + // Grouping - Array of group by expression to use in the query. Query can have up to 2 group by clauses. + Grouping *[]QueryGrouping `json:"grouping,omitempty"` + // Sorting - Array of sorting by columns in query. + Sorting *[]QuerySortingConfiguration `json:"sorting,omitempty"` + // Filter - Has filter expression to use in the query. + Filter *QueryFilter `json:"filter,omitempty"` +} + +// MarshalJSON is the custom marshaler for QueryDataset. +func (qd QueryDataset) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if qd.Granularity != "" { + objectMap["granularity"] = qd.Granularity + } + if qd.Configuration != nil { + objectMap["configuration"] = qd.Configuration + } + if qd.Aggregation != nil { + objectMap["aggregation"] = qd.Aggregation + } + if qd.Grouping != nil { + objectMap["grouping"] = qd.Grouping + } + if qd.Sorting != nil { + objectMap["sorting"] = qd.Sorting + } + if qd.Filter != nil { + objectMap["filter"] = qd.Filter + } + return json.Marshal(objectMap) +} + +// QueryDatasetConfiguration the configuration of dataset in the query. +type QueryDatasetConfiguration struct { + // Columns - Array of column names to be included in the query. Any valid query column name is allowed. If not provided, then query includes all columns. + Columns *[]string `json:"columns,omitempty"` +} + +// QueryDefinition the definition of a query. +type QueryDefinition struct { + // Type - The type of the query. + Type *string `json:"type,omitempty"` + // Timeframe - The time frame for pulling data for the query. If custom, then a specific time period must be provided. Possible values include: 'WeekToDate', 'MonthToDate', 'YearToDate', 'TheLastWeek', 'TheLastMonth', 'TheLastYear', 'Custom' + Timeframe TimeframeType `json:"timeframe,omitempty"` + // TimePeriod - Has time period for pulling data for the query. + TimePeriod *QueryTimePeriod `json:"timePeriod,omitempty"` + // Dataset - Has definition for data in this query. + Dataset *QueryDataset `json:"dataset,omitempty"` +} + +// QueryFilter the filter expression to be used in the export. +type QueryFilter struct { + // And - The logical "AND" expression. Must have at least 2 items. + And *[]QueryFilter `json:"and,omitempty"` + // Or - The logical "OR" expression. Must have at least 2 items. + Or *[]QueryFilter `json:"or,omitempty"` + // Not - The logical "NOT" expression. + Not *QueryFilter `json:"not,omitempty"` + // Dimension - Has comparison expression for a dimension + Dimension *QueryComparisonExpression `json:"dimension,omitempty"` + // Tag - Has comparison expression for a tag + Tag *QueryComparisonExpression `json:"tag,omitempty"` +} + +// QueryGrouping the group by expression to be used in the query. +type QueryGrouping struct { + // Type - Has type of the column to group. Possible values include: 'QueryColumnTypeTag', 'QueryColumnTypeDimension' + Type QueryColumnType `json:"type,omitempty"` + // Name - The name of the column to group. + Name *string `json:"name,omitempty"` +} + +// QueryProperties ... +type QueryProperties struct { + NextLink *string `json:"nextLink,omitempty"` + // Columns - Array of columns + Columns *[]QueryColumn `json:"columns,omitempty"` + Rows *[][]interface{} `json:"rows,omitempty"` +} + +// QueryResult result of query. It contains all columns listed under groupings and aggregation. +type QueryResult struct { + autorest.Response `json:"-"` + // Value - The list of usage data. + Value *[]Query `json:"value,omitempty"` +} + +// QuerySortingConfiguration the configuration for sorting in the query. +type QuerySortingConfiguration struct { + // QuerySortingDirection - The sorting direction. Possible values include: 'Ascending', 'Descending' + QuerySortingDirection SortDirection `json:"querySortingDirection,omitempty"` + // Name - The name of the column to use in sorting. + Name *string `json:"name,omitempty"` +} + +// QueryTimePeriod the start and end date for pulling data for the query. +type QueryTimePeriod struct { + // From - The start date to pull data from. + From *date.Time `json:"from,omitempty"` + // To - The end date to pull data to. + To *date.Time `json:"to,omitempty"` +} + +// Resource the Resource model definition. +type Resource struct { + // ID - Resource Id. + ID *string `json:"id,omitempty"` + // Name - Resource name. + Name *string `json:"name,omitempty"` + // Type - Resource type. + Type *string `json:"type,omitempty"` + // Tags - Resource tags. + Tags map[string]*string `json:"tags"` +} + +// MarshalJSON is the custom marshaler for Resource. +func (r Resource) MarshalJSON() ([]byte, error) { + objectMap := make(map[string]interface{}) + if r.ID != nil { + objectMap["id"] = r.ID + } + if r.Name != nil { + objectMap["name"] = r.Name + } + if r.Type != nil { + objectMap["type"] = r.Type + } + if r.Tags != nil { + objectMap["tags"] = r.Tags + } + return json.Marshal(objectMap) +} diff --git a/services/costmanagement/mgmt/2019-01-01/costmanagement/operations.go b/services/costmanagement/mgmt/2019-01-01/costmanagement/operations.go new file mode 100644 index 000000000000..ec3fd02672dc --- /dev/null +++ b/services/costmanagement/mgmt/2019-01-01/costmanagement/operations.go @@ -0,0 +1,147 @@ +package costmanagement + +// Copyright (c) Microsoft and contributors. 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. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// OperationsClient is the client for the Operations methods of the Costmanagement service. +type OperationsClient struct { + BaseClient +} + +// NewOperationsClient creates an instance of the OperationsClient client. +func NewOperationsClient(subscriptionID string) OperationsClient { + return NewOperationsClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewOperationsClientWithBaseURI creates an instance of the OperationsClient client. +func NewOperationsClientWithBaseURI(baseURI string, subscriptionID string) OperationsClient { + return OperationsClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// List lists all of the available cost management REST API operations. +func (client OperationsClient) List(ctx context.Context) (result OperationListResultPage, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/OperationsClient.List") + defer func() { + sc := -1 + if result.olr.Response.Response != nil { + sc = result.olr.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.fn = client.listNextResults + req, err := client.ListPreparer(ctx) + if err != nil { + err = autorest.NewErrorWithError(err, "costmanagement.OperationsClient", "List", nil, "Failure preparing request") + return + } + + resp, err := client.ListSender(req) + if err != nil { + result.olr.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "costmanagement.OperationsClient", "List", resp, "Failure sending request") + return + } + + result.olr, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "costmanagement.OperationsClient", "List", resp, "Failure responding to request") + } + + return +} + +// ListPreparer prepares the List request. +func (client OperationsClient) ListPreparer(ctx context.Context) (*http.Request, error) { + const APIVersion = "2019-01-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsGet(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPath("/providers/Microsoft.CostManagement/operations"), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// ListSender sends the List request. The method will close the +// http.Response Body if it receives an error. +func (client OperationsClient) ListSender(req *http.Request) (*http.Response, error) { + return autorest.SendWithSender(client, req, + autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// ListResponder handles the response to the List request. The method always +// closes the http.Response Body. +func (client OperationsClient) ListResponder(resp *http.Response) (result OperationListResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} + +// listNextResults retrieves the next set of results, if any. +func (client OperationsClient) listNextResults(ctx context.Context, lastResults OperationListResult) (result OperationListResult, err error) { + req, err := lastResults.operationListResultPreparer(ctx) + if err != nil { + return result, autorest.NewErrorWithError(err, "costmanagement.OperationsClient", "listNextResults", nil, "Failure preparing next results request") + } + if req == nil { + return + } + resp, err := client.ListSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + return result, autorest.NewErrorWithError(err, "costmanagement.OperationsClient", "listNextResults", resp, "Failure sending next results request") + } + result, err = client.ListResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "costmanagement.OperationsClient", "listNextResults", resp, "Failure responding to next results request") + } + return +} + +// ListComplete enumerates all values, automatically crossing page boundaries as required. +func (client OperationsClient) ListComplete(ctx context.Context) (result OperationListResultIterator, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/OperationsClient.List") + defer func() { + sc := -1 + if result.Response().Response.Response != nil { + sc = result.page.Response().Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + result.page, err = client.List(ctx) + return +} diff --git a/services/costmanagement/mgmt/2019-01-01/costmanagement/query.go b/services/costmanagement/mgmt/2019-01-01/costmanagement/query.go new file mode 100644 index 000000000000..23672f0806a4 --- /dev/null +++ b/services/costmanagement/mgmt/2019-01-01/costmanagement/query.go @@ -0,0 +1,160 @@ +package costmanagement + +// Copyright (c) Microsoft and contributors. 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. + +import ( + "context" + "github.com/Azure/go-autorest/autorest" + "github.com/Azure/go-autorest/autorest/azure" + "github.com/Azure/go-autorest/autorest/validation" + "github.com/Azure/go-autorest/tracing" + "net/http" +) + +// QueryClient is the client for the Query methods of the Costmanagement service. +type QueryClient struct { + BaseClient +} + +// NewQueryClient creates an instance of the QueryClient client. +func NewQueryClient(subscriptionID string) QueryClient { + return NewQueryClientWithBaseURI(DefaultBaseURI, subscriptionID) +} + +// NewQueryClientWithBaseURI creates an instance of the QueryClient client. +func NewQueryClientWithBaseURI(baseURI string, subscriptionID string) QueryClient { + return QueryClient{NewWithBaseURI(baseURI, subscriptionID)} +} + +// UsageByScope query the usage data for scope defined. +// Parameters: +// scope - the scope associated with query and export operations. This includes +// '/subscriptions/{subscriptionId}/' for subscription scope, +// '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}' for resourceGroup scope, +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}' for Billing Account scope and +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/departments/{departmentId}' for Department +// scope, +// '/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/enrollmentAccounts/{enrollmentAccountId}' +// for EnrollmentAccount scope and '/providers/Microsoft.Management/managementGroups/{managementGroupId} for +// Management Group scope.. +// parameters - parameters supplied to the CreateOrUpdate Query Config operation. +func (client QueryClient) UsageByScope(ctx context.Context, scope string, parameters QueryDefinition) (result QueryResult, err error) { + if tracing.IsEnabled() { + ctx = tracing.StartSpan(ctx, fqdn+"/QueryClient.UsageByScope") + defer func() { + sc := -1 + if result.Response.Response != nil { + sc = result.Response.Response.StatusCode + } + tracing.EndSpan(ctx, sc, err) + }() + } + if err := validation.Validate([]validation.Validation{ + {TargetValue: parameters, + Constraints: []validation.Constraint{{Target: "parameters.Type", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "parameters.TimePeriod", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.TimePeriod.From", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "parameters.TimePeriod.To", Name: validation.Null, Rule: true, Chain: nil}, + }}, + {Target: "parameters.Dataset", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.Dataset.Grouping", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.Dataset.Grouping", Name: validation.MaxItems, Rule: 2, Chain: nil}}}, + {Target: "parameters.Dataset.Filter", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.Dataset.Filter.And", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.Dataset.Filter.And", Name: validation.MinItems, Rule: 2, Chain: nil}}}, + {Target: "parameters.Dataset.Filter.Or", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.Dataset.Filter.Or", Name: validation.MinItems, Rule: 2, Chain: nil}}}, + {Target: "parameters.Dataset.Filter.Not", Name: validation.Null, Rule: false, Chain: nil}, + {Target: "parameters.Dataset.Filter.Dimension", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.Dataset.Filter.Dimension.Name", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "parameters.Dataset.Filter.Dimension.Operator", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "parameters.Dataset.Filter.Dimension.Values", Name: validation.Null, Rule: true, + Chain: []validation.Constraint{{Target: "parameters.Dataset.Filter.Dimension.Values", Name: validation.MinItems, Rule: 1, Chain: nil}}}, + }}, + {Target: "parameters.Dataset.Filter.Tag", Name: validation.Null, Rule: false, + Chain: []validation.Constraint{{Target: "parameters.Dataset.Filter.Tag.Name", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "parameters.Dataset.Filter.Tag.Operator", Name: validation.Null, Rule: true, Chain: nil}, + {Target: "parameters.Dataset.Filter.Tag.Values", Name: validation.Null, Rule: true, + Chain: []validation.Constraint{{Target: "parameters.Dataset.Filter.Tag.Values", Name: validation.MinItems, Rule: 1, Chain: nil}}}, + }}, + }}, + }}}}}); err != nil { + return result, validation.NewError("costmanagement.QueryClient", "UsageByScope", err.Error()) + } + + req, err := client.UsageByScopePreparer(ctx, scope, parameters) + if err != nil { + err = autorest.NewErrorWithError(err, "costmanagement.QueryClient", "UsageByScope", nil, "Failure preparing request") + return + } + + resp, err := client.UsageByScopeSender(req) + if err != nil { + result.Response = autorest.Response{Response: resp} + err = autorest.NewErrorWithError(err, "costmanagement.QueryClient", "UsageByScope", resp, "Failure sending request") + return + } + + result, err = client.UsageByScopeResponder(resp) + if err != nil { + err = autorest.NewErrorWithError(err, "costmanagement.QueryClient", "UsageByScope", resp, "Failure responding to request") + } + + return +} + +// UsageByScopePreparer prepares the UsageByScope request. +func (client QueryClient) UsageByScopePreparer(ctx context.Context, scope string, parameters QueryDefinition) (*http.Request, error) { + pathParameters := map[string]interface{}{ + "scope": scope, + } + + const APIVersion = "2019-01-01" + queryParameters := map[string]interface{}{ + "api-version": APIVersion, + } + + preparer := autorest.CreatePreparer( + autorest.AsContentType("application/json; charset=utf-8"), + autorest.AsPost(), + autorest.WithBaseURL(client.BaseURI), + autorest.WithPathParameters("/{scope}/providers/Microsoft.CostManagement/query", pathParameters), + autorest.WithJSON(parameters), + autorest.WithQueryParameters(queryParameters)) + return preparer.Prepare((&http.Request{}).WithContext(ctx)) +} + +// UsageByScopeSender sends the UsageByScope request. The method will close the +// http.Response Body if it receives an error. +func (client QueryClient) UsageByScopeSender(req *http.Request) (*http.Response, error) { + return autorest.SendWithSender(client, req, + autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...)) +} + +// UsageByScopeResponder handles the response to the UsageByScope request. The method always +// closes the http.Response Body. +func (client QueryClient) UsageByScopeResponder(resp *http.Response) (result QueryResult, err error) { + err = autorest.Respond( + resp, + client.ByInspecting(), + azure.WithErrorUnlessStatusCode(http.StatusOK), + autorest.ByUnmarshallingJSON(&result), + autorest.ByClosing()) + result.Response = autorest.Response{Response: resp} + return +} diff --git a/services/costmanagement/mgmt/2019-01-01/costmanagement/version.go b/services/costmanagement/mgmt/2019-01-01/costmanagement/version.go new file mode 100644 index 000000000000..1c74205bf342 --- /dev/null +++ b/services/costmanagement/mgmt/2019-01-01/costmanagement/version.go @@ -0,0 +1,30 @@ +package costmanagement + +import "github.com/Azure/azure-sdk-for-go/version" + +// Copyright (c) Microsoft and contributors. 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. + +// UserAgent returns the UserAgent string to use when sending http.Requests. +func UserAgent() string { + return "Azure-SDK-For-Go/" + version.Number + " costmanagement/2019-01-01" +} + +// Version returns the semantic version (see http://semver.org) of the client. +func Version() string { + return version.Number +} diff --git a/services/preview/costmanagement/mgmt/2018-08-01-preview/costmanagement/models.go b/services/preview/costmanagement/mgmt/2018-08-01-preview/costmanagement/models.go index a709e73fd014..813a64e9efc9 100644 --- a/services/preview/costmanagement/mgmt/2018-08-01-preview/costmanagement/models.go +++ b/services/preview/costmanagement/mgmt/2018-08-01-preview/costmanagement/models.go @@ -138,19 +138,23 @@ type ExecutionStatus string const ( // Completed ... Completed ExecutionStatus = "Completed" + // DataNotAvailable ... + DataNotAvailable ExecutionStatus = "DataNotAvailable" // Failed ... Failed ExecutionStatus = "Failed" // InProgress ... InProgress ExecutionStatus = "InProgress" - // Queud ... - Queud ExecutionStatus = "Queud" + // NewDataNotAvailable ... + NewDataNotAvailable ExecutionStatus = "NewDataNotAvailable" + // Queued ... + Queued ExecutionStatus = "Queued" // Timeout ... Timeout ExecutionStatus = "Timeout" ) // PossibleExecutionStatusValues returns an array of possible values for the ExecutionStatus const type. func PossibleExecutionStatusValues() []ExecutionStatus { - return []ExecutionStatus{Completed, Failed, InProgress, Queud, Timeout} + return []ExecutionStatus{Completed, DataNotAvailable, Failed, InProgress, NewDataNotAvailable, Queued, Timeout} } // ExecutionType enumerates the values for execution type. @@ -187,11 +191,13 @@ type GranularityType string const ( // Daily ... Daily GranularityType = "Daily" + // Hourly ... + Hourly GranularityType = "Hourly" ) // PossibleGranularityTypeValues returns an array of possible values for the GranularityType const type. func PossibleGranularityTypeValues() []GranularityType { - return []GranularityType{Daily} + return []GranularityType{Daily, Hourly} } // RecurrenceType enumerates the values for recurrence type. @@ -1289,7 +1295,7 @@ type ReportComparisonExpression struct { // ReportDataset the definition of data present in the report. type ReportDataset struct { - // Granularity - The granularity of rows in the report. Possible values include: 'Daily' + // Granularity - The granularity of rows in the report. Possible values include: 'Daily', 'Hourly' Granularity GranularityType `json:"granularity,omitempty"` // Configuration - Has configuration information for the data in the report. The configuration will be ignored if aggregation and grouping are provided. Configuration *ReportDatasetConfiguration `json:"configuration,omitempty"` @@ -1461,7 +1467,7 @@ type ReportExecutionListResult struct { type ReportExecutionProperties struct { // ExecutionType - The type of the report execution. Possible values include: 'OnDemand', 'Scheduled' ExecutionType ExecutionType `json:"executionType,omitempty"` - // Status - The status of the report execution. Possible values include: 'Queud', 'InProgress', 'Completed', 'Failed', 'Timeout' + // Status - The status of the report execution. Possible values include: 'Queued', 'InProgress', 'Completed', 'Failed', 'Timeout', 'NewDataNotAvailable', 'DataNotAvailable' Status ExecutionStatus `json:"status,omitempty"` // SubmittedBy - The identifier for the entity that executed the report. For OnDemand executions, it is the email id. For Scheduled executions, it is the constant value - System. SubmittedBy *string `json:"submittedBy,omitempty"`