diff --git a/sdk/consumption/mgmt-v2017_11_30/pom.xml b/sdk/consumption/mgmt-v2017_11_30/pom.xml
new file mode 100644
index 000000000000..65fc4becfb3a
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/pom.xml
@@ -0,0 +1,135 @@
+
+
+ 4.0.0
+ com.microsoft.azure.consumption.v2017_11_30
+
+ com.microsoft.azure
+ azure-arm-parent
+ 1.1.0
+ ../../../pom.management.xml
+
+ azure-mgmt-consumption
+ 1.0.0-beta
+ jar
+ Microsoft Azure SDK for Consumption Management
+ This package contains Microsoft Consumption Management SDK.
+ https://github.com/Azure/azure-sdk-for-java
+
+
+ The MIT License (MIT)
+ http://opensource.org/licenses/MIT
+ repo
+
+
+
+ scm:git:https://github.com/Azure/azure-sdk-for-java
+ scm:git:git@github.com:Azure/azure-sdk-for-java.git
+ HEAD
+
+
+ UTF-8
+
+
+
+
+ microsoft
+ Microsoft
+
+
+
+
+ com.microsoft.azure
+ azure-client-runtime
+
+
+ com.microsoft.azure
+ azure-arm-client-runtime
+
+
+ junit
+ junit
+ test
+
+
+ com.microsoft.azure
+ azure-client-authentication
+ test
+
+
+ com.microsoft.azure
+ azure-mgmt-resources
+ test
+
+
+ com.microsoft.azure
+ azure-arm-client-runtime
+ test-jar
+ test
+
+ 1.6.5
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+
+ true
+ true
+
+
+
+
+
+ org.codehaus.mojo
+ build-helper-maven-plugin
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.1
+
+ 1.7
+ 1.7
+
+
+ com.microsoft.azure.management.apigeneration.LangDefinitionProcessor
+
+
+ true
+ true
+
+ true
+ true
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 2.8
+
+ *.implementation.*;*.utils.*;com.microsoft.schemas._2003._10.serialization;*.blob.core.search
+
+
+ /**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ */
+ ]]>
+
+
+
+
+
+
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/Datagrain.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/Datagrain.java
new file mode 100644
index 000000000000..7277266367d4
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/Datagrain.java
@@ -0,0 +1,41 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for Datagrain.
+ */
+public final class Datagrain extends ExpandableStringEnum {
+ /** Static value daily for Datagrain. */
+ public static final Datagrain DAILY_GRAIN = fromString("daily");
+
+ /** Static value monthly for Datagrain. */
+ public static final Datagrain MONTHLY_GRAIN = fromString("monthly");
+
+ /**
+ * Creates or finds a Datagrain from its string representation.
+ * @param name a name to look for
+ * @return the corresponding Datagrain
+ */
+ @JsonCreator
+ public static Datagrain fromString(String name) {
+ return fromString(name, Datagrain.class);
+ }
+
+ /**
+ * @return known Datagrain values
+ */
+ public static Collection values() {
+ return values(Datagrain.class);
+ }
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/ErrorDetails.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/ErrorDetails.java
new file mode 100644
index 000000000000..061d3707777f
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/ErrorDetails.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The details of the error.
+ */
+public class ErrorDetails {
+ /**
+ * Error code.
+ */
+ @JsonProperty(value = "code", access = JsonProperty.Access.WRITE_ONLY)
+ private String code;
+
+ /**
+ * Error message indicating why the operation failed.
+ */
+ @JsonProperty(value = "message", access = JsonProperty.Access.WRITE_ONLY)
+ private String message;
+
+ /**
+ * Get error code.
+ *
+ * @return the code value
+ */
+ public String code() {
+ return this.code;
+ }
+
+ /**
+ * Get error message indicating why the operation failed.
+ *
+ * @return the message value
+ */
+ public String message() {
+ return this.message;
+ }
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/ErrorResponse.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/ErrorResponse.java
new file mode 100644
index 000000000000..4b60d6c4b56a
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/ErrorResponse.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Error response indicates that the service is not able to process the
+ * incoming request. The reason is provided in the error message.
+ */
+public class ErrorResponse {
+ /**
+ * The details of the error.
+ */
+ @JsonProperty(value = "error")
+ private ErrorDetails error;
+
+ /**
+ * Get the details of the error.
+ *
+ * @return the error value
+ */
+ public ErrorDetails error() {
+ return this.error;
+ }
+
+ /**
+ * Set the details of the error.
+ *
+ * @param error the error value to set
+ * @return the ErrorResponse object itself.
+ */
+ public ErrorResponse withError(ErrorDetails error) {
+ this.error = error;
+ return this;
+ }
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/ErrorResponseException.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/ErrorResponseException.java
new file mode 100644
index 000000000000..6810c79da797
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/ErrorResponseException.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30;
+
+import com.microsoft.rest.RestException;
+import okhttp3.ResponseBody;
+import retrofit2.Response;
+
+/**
+ * Exception thrown for an invalid response with ErrorResponse information.
+ */
+public class ErrorResponseException extends RestException {
+ /**
+ * Initializes a new instance of the ErrorResponseException class.
+ *
+ * @param message the exception message or the response content if a message is not available
+ * @param response the HTTP response
+ */
+ public ErrorResponseException(final String message, final Response response) {
+ super(message, response);
+ }
+
+ /**
+ * Initializes a new instance of the ErrorResponseException class.
+ *
+ * @param message the exception message or the response content if a message is not available
+ * @param response the HTTP response
+ * @param body the deserialized response body
+ */
+ public ErrorResponseException(final String message, final Response response, final ErrorResponse body) {
+ super(message, response, body);
+ }
+
+ @Override
+ public ErrorResponse body() {
+ return (ErrorResponse) super.body();
+ }
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/MeterDetails.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/MeterDetails.java
new file mode 100644
index 000000000000..8b0e9a5c9f89
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/MeterDetails.java
@@ -0,0 +1,126 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30;
+
+import java.math.BigDecimal;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The properties of the meter detail.
+ */
+public class MeterDetails {
+ /**
+ * The name of the meter, within the given meter category.
+ */
+ @JsonProperty(value = "meterName", access = JsonProperty.Access.WRITE_ONLY)
+ private String meterName;
+
+ /**
+ * The category of the meter, for example, 'Cloud services', 'Networking',
+ * etc..
+ */
+ @JsonProperty(value = "meterCategory", access = JsonProperty.Access.WRITE_ONLY)
+ private String meterCategory;
+
+ /**
+ * The subcategory of the meter, for example, 'A6 Cloud services',
+ * 'ExpressRoute (IXP)', etc..
+ */
+ @JsonProperty(value = "meterSubCategory", access = JsonProperty.Access.WRITE_ONLY)
+ private String meterSubCategory;
+
+ /**
+ * The unit in which the meter consumption is charged, for example,
+ * 'Hours', 'GB', etc.
+ */
+ @JsonProperty(value = "unit", access = JsonProperty.Access.WRITE_ONLY)
+ private String unit;
+
+ /**
+ * The location in which the Azure service is available.
+ */
+ @JsonProperty(value = "meterLocation", access = JsonProperty.Access.WRITE_ONLY)
+ private String meterLocation;
+
+ /**
+ * The total included quantity associated with the offer.
+ */
+ @JsonProperty(value = "totalIncludedQuantity", access = JsonProperty.Access.WRITE_ONLY)
+ private BigDecimal totalIncludedQuantity;
+
+ /**
+ * The pretax listing price.
+ */
+ @JsonProperty(value = "pretaxStandardRate", access = JsonProperty.Access.WRITE_ONLY)
+ private BigDecimal pretaxStandardRate;
+
+ /**
+ * Get the name of the meter, within the given meter category.
+ *
+ * @return the meterName value
+ */
+ public String meterName() {
+ return this.meterName;
+ }
+
+ /**
+ * Get the category of the meter, for example, 'Cloud services', 'Networking', etc..
+ *
+ * @return the meterCategory value
+ */
+ public String meterCategory() {
+ return this.meterCategory;
+ }
+
+ /**
+ * Get the subcategory of the meter, for example, 'A6 Cloud services', 'ExpressRoute (IXP)', etc..
+ *
+ * @return the meterSubCategory value
+ */
+ public String meterSubCategory() {
+ return this.meterSubCategory;
+ }
+
+ /**
+ * Get the unit in which the meter consumption is charged, for example, 'Hours', 'GB', etc.
+ *
+ * @return the unit value
+ */
+ public String unit() {
+ return this.unit;
+ }
+
+ /**
+ * Get the location in which the Azure service is available.
+ *
+ * @return the meterLocation value
+ */
+ public String meterLocation() {
+ return this.meterLocation;
+ }
+
+ /**
+ * Get the total included quantity associated with the offer.
+ *
+ * @return the totalIncludedQuantity value
+ */
+ public BigDecimal totalIncludedQuantity() {
+ return this.totalIncludedQuantity;
+ }
+
+ /**
+ * Get the pretax listing price.
+ *
+ * @return the pretaxStandardRate value
+ */
+ public BigDecimal pretaxStandardRate() {
+ return this.pretaxStandardRate;
+ }
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/Operation.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/Operation.java
new file mode 100644
index 000000000000..31404c2f9027
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/Operation.java
@@ -0,0 +1,30 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.consumption.v2017_11_30.implementation.ConsumptionManager;
+import com.microsoft.azure.management.consumption.v2017_11_30.implementation.OperationInner;
+
+/**
+ * Type representing Operation.
+ */
+public interface Operation extends HasInner, HasManager {
+ /**
+ * @return the display value.
+ */
+ OperationDisplay display();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/OperationDisplay.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/OperationDisplay.java
new file mode 100644
index 000000000000..f447cecef2f6
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/OperationDisplay.java
@@ -0,0 +1,62 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The object that represents the operation.
+ */
+public class OperationDisplay {
+ /**
+ * Service provider: Microsoft.Consumption.
+ */
+ @JsonProperty(value = "provider", access = JsonProperty.Access.WRITE_ONLY)
+ private String provider;
+
+ /**
+ * Resource on which the operation is performed: UsageDetail, etc.
+ */
+ @JsonProperty(value = "resource", access = JsonProperty.Access.WRITE_ONLY)
+ private String resource;
+
+ /**
+ * Operation type: Read, write, delete, etc.
+ */
+ @JsonProperty(value = "operation", access = JsonProperty.Access.WRITE_ONLY)
+ private String operation;
+
+ /**
+ * Get service provider: Microsoft.Consumption.
+ *
+ * @return the provider value
+ */
+ public String provider() {
+ return this.provider;
+ }
+
+ /**
+ * Get resource on which the operation is performed: UsageDetail, etc.
+ *
+ * @return the resource value
+ */
+ public String resource() {
+ return this.resource;
+ }
+
+ /**
+ * Get operation type: Read, write, delete, etc.
+ *
+ * @return the operation value
+ */
+ public String operation() {
+ return this.operation;
+ }
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/Operations.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/Operations.java
new file mode 100644
index 000000000000..46db4bd82ac9
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/Operations.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30;
+
+import rx.Observable;
+import com.microsoft.azure.management.consumption.v2017_11_30.implementation.OperationsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Operations.
+ */
+public interface Operations extends HasInner {
+ /**
+ * Lists all of the available consumption REST API operations.
+ *
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync();
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/ReservationDetails.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/ReservationDetails.java
new file mode 100644
index 000000000000..425aa1b30228
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/ReservationDetails.java
@@ -0,0 +1,83 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.consumption.v2017_11_30.implementation.ConsumptionManager;
+import com.microsoft.azure.management.consumption.v2017_11_30.implementation.ReservationDetailsInner;
+import java.math.BigDecimal;
+import java.util.Map;
+import org.joda.time.DateTime;
+
+/**
+ * Type representing ReservationDetails.
+ */
+public interface ReservationDetails extends HasInner, HasManager {
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the instanceId value.
+ */
+ String instanceId();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the reservationId value.
+ */
+ String reservationId();
+
+ /**
+ * @return the reservationOrderId value.
+ */
+ String reservationOrderId();
+
+ /**
+ * @return the reservedHours value.
+ */
+ BigDecimal reservedHours();
+
+ /**
+ * @return the skuName value.
+ */
+ String skuName();
+
+ /**
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the totalReservedQuantity value.
+ */
+ BigDecimal totalReservedQuantity();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the usageDate value.
+ */
+ DateTime usageDate();
+
+ /**
+ * @return the usedHours value.
+ */
+ BigDecimal usedHours();
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/ReservationSummaries.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/ReservationSummaries.java
new file mode 100644
index 000000000000..0da465497b92
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/ReservationSummaries.java
@@ -0,0 +1,88 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.consumption.v2017_11_30.implementation.ConsumptionManager;
+import com.microsoft.azure.management.consumption.v2017_11_30.implementation.ReservationSummariesInner;
+import java.math.BigDecimal;
+import java.util.Map;
+import org.joda.time.DateTime;
+
+/**
+ * Type representing ReservationSummaries.
+ */
+public interface ReservationSummaries extends HasInner, HasManager {
+ /**
+ * @return the avgUtilizationPercentage value.
+ */
+ BigDecimal avgUtilizationPercentage();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the maxUtilizationPercentage value.
+ */
+ BigDecimal maxUtilizationPercentage();
+
+ /**
+ * @return the minUtilizationPercentage value.
+ */
+ BigDecimal minUtilizationPercentage();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the reservationId value.
+ */
+ String reservationId();
+
+ /**
+ * @return the reservationOrderId value.
+ */
+ String reservationOrderId();
+
+ /**
+ * @return the reservedHours value.
+ */
+ BigDecimal reservedHours();
+
+ /**
+ * @return the skuName value.
+ */
+ String skuName();
+
+ /**
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the usageDate value.
+ */
+ DateTime usageDate();
+
+ /**
+ * @return the usedHours value.
+ */
+ BigDecimal usedHours();
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/ReservationsDetails.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/ReservationsDetails.java
new file mode 100644
index 000000000000..610547625e4f
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/ReservationsDetails.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30;
+
+import rx.Observable;
+import com.microsoft.azure.management.consumption.v2017_11_30.implementation.ReservationsDetailsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing ReservationsDetails.
+ */
+public interface ReservationsDetails extends HasInner {
+ /**
+ * Lists the reservations details for provided date range.
+ *
+ * @param scope The scope of the reservation details. The scope can be 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}' or 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}/reservations/{ReservationId}'
+ * @param filter Filter reservation details by date range. The properties/UsageDate for start date and end date. The filter supports 'le' and 'ge'
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(String scope, String filter);
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/ReservationsSummaries.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/ReservationsSummaries.java
new file mode 100644
index 000000000000..093913eb70bc
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/ReservationsSummaries.java
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30;
+
+import rx.Observable;
+import com.microsoft.azure.management.consumption.v2017_11_30.implementation.ReservationsSummariesInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing ReservationsSummaries.
+ */
+public interface ReservationsSummaries extends HasInner {
+ /**
+ * Lists the reservations summaries for daily or monthly grain.
+ *
+ * @param scope The scope of the reservation summaries. The scope can be 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}' or 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}/reservations/{ReservationId}'
+ * @param grain Can be daily or monthly. Possible values include: 'DailyGrain', 'MonthlyGrain'
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(String scope, Datagrain grain);
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/UsageDetail.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/UsageDetail.java
new file mode 100644
index 000000000000..65d426de1175
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/UsageDetail.java
@@ -0,0 +1,153 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.consumption.v2017_11_30.implementation.ConsumptionManager;
+import com.microsoft.azure.management.consumption.v2017_11_30.implementation.UsageDetailInner;
+import java.math.BigDecimal;
+import java.util.Map;
+import org.joda.time.DateTime;
+
+/**
+ * Type representing UsageDetail.
+ */
+public interface UsageDetail extends HasInner, HasManager {
+ /**
+ * @return the accountName value.
+ */
+ String accountName();
+
+ /**
+ * @return the additionalProperties value.
+ */
+ String additionalProperties();
+
+ /**
+ * @return the billableQuantity value.
+ */
+ BigDecimal billableQuantity();
+
+ /**
+ * @return the billingPeriodId value.
+ */
+ String billingPeriodId();
+
+ /**
+ * @return the consumedService value.
+ */
+ String consumedService();
+
+ /**
+ * @return the costCenter value.
+ */
+ String costCenter();
+
+ /**
+ * @return the currency value.
+ */
+ String currency();
+
+ /**
+ * @return the departmentName value.
+ */
+ String departmentName();
+
+ /**
+ * @return the id value.
+ */
+ String id();
+
+ /**
+ * @return the instanceId value.
+ */
+ String instanceId();
+
+ /**
+ * @return the instanceLocation value.
+ */
+ String instanceLocation();
+
+ /**
+ * @return the instanceName value.
+ */
+ String instanceName();
+
+ /**
+ * @return the invoiceId value.
+ */
+ String invoiceId();
+
+ /**
+ * @return the isEstimated value.
+ */
+ Boolean isEstimated();
+
+ /**
+ * @return the meterDetails value.
+ */
+ MeterDetails meterDetails();
+
+ /**
+ * @return the meterId value.
+ */
+ String meterId();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the pretaxCost value.
+ */
+ BigDecimal pretaxCost();
+
+ /**
+ * @return the product value.
+ */
+ String product();
+
+ /**
+ * @return the subscriptionGuid value.
+ */
+ String subscriptionGuid();
+
+ /**
+ * @return the subscriptionName value.
+ */
+ String subscriptionName();
+
+ /**
+ * @return the tags value.
+ */
+ Map tags();
+
+ /**
+ * @return the type value.
+ */
+ String type();
+
+ /**
+ * @return the usageEnd value.
+ */
+ DateTime usageEnd();
+
+ /**
+ * @return the usageQuantity value.
+ */
+ BigDecimal usageQuantity();
+
+ /**
+ * @return the usageStart value.
+ */
+ DateTime usageStart();
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/UsageDetails.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/UsageDetails.java
new file mode 100644
index 000000000000..09edc5e655c5
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/UsageDetails.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30;
+
+import rx.Observable;
+import com.microsoft.azure.management.consumption.v2017_11_30.implementation.UsageDetailsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing UsageDetails.
+ */
+public interface UsageDetails extends HasInner {
+ /**
+ * Lists the usage details for a scope by billing period. Usage details are available via this API only for May 1, 2014 or later.
+ *
+ * @param scope The scope of the usage details. The scope can be '/subscriptions/{subscriptionId}' for a subscription, or '/subscriptions/{subscriptionId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}' for a billing period.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(final String scope);
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ConsumptionManagementClientImpl.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ConsumptionManagementClientImpl.java
new file mode 100644
index 000000000000..e90cbf30307e
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ConsumptionManagementClientImpl.java
@@ -0,0 +1,238 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30.implementation;
+
+import com.microsoft.azure.AzureClient;
+import com.microsoft.azure.AzureServiceClient;
+import com.microsoft.rest.credentials.ServiceClientCredentials;
+import com.microsoft.rest.RestClient;
+
+/**
+ * Initializes a new instance of the ConsumptionManagementClientImpl class.
+ */
+public class ConsumptionManagementClientImpl extends AzureServiceClient {
+ /** the {@link AzureClient} used for long running operations. */
+ private AzureClient azureClient;
+
+ /**
+ * Gets the {@link AzureClient} used for long running operations.
+ * @return the azure client;
+ */
+ public AzureClient getAzureClient() {
+ return this.azureClient;
+ }
+
+ /** Version of the API to be used with the client request. The current version is 2017-11-30. */
+ private String apiVersion;
+
+ /**
+ * Gets Version of the API to be used with the client request. The current version is 2017-11-30.
+ *
+ * @return the apiVersion value.
+ */
+ public String apiVersion() {
+ return this.apiVersion;
+ }
+
+ /** Azure Subscription ID. */
+ private String subscriptionId;
+
+ /**
+ * Gets Azure Subscription ID.
+ *
+ * @return the subscriptionId value.
+ */
+ public String subscriptionId() {
+ return this.subscriptionId;
+ }
+
+ /**
+ * Sets Azure Subscription ID.
+ *
+ * @param subscriptionId the subscriptionId value.
+ * @return the service client itself
+ */
+ public ConsumptionManagementClientImpl withSubscriptionId(String subscriptionId) {
+ this.subscriptionId = subscriptionId;
+ return this;
+ }
+
+ /** The preferred language for the response. */
+ private String acceptLanguage;
+
+ /**
+ * Gets The preferred language for the response.
+ *
+ * @return the acceptLanguage value.
+ */
+ public String acceptLanguage() {
+ return this.acceptLanguage;
+ }
+
+ /**
+ * Sets The preferred language for the response.
+ *
+ * @param acceptLanguage the acceptLanguage value.
+ * @return the service client itself
+ */
+ public ConsumptionManagementClientImpl withAcceptLanguage(String acceptLanguage) {
+ this.acceptLanguage = acceptLanguage;
+ return this;
+ }
+
+ /** The retry timeout in seconds for Long Running Operations. Default value is 30. */
+ private int longRunningOperationRetryTimeout;
+
+ /**
+ * Gets The retry timeout in seconds for Long Running Operations. Default value is 30.
+ *
+ * @return the longRunningOperationRetryTimeout value.
+ */
+ public int longRunningOperationRetryTimeout() {
+ return this.longRunningOperationRetryTimeout;
+ }
+
+ /**
+ * Sets The retry timeout in seconds for Long Running Operations. Default value is 30.
+ *
+ * @param longRunningOperationRetryTimeout the longRunningOperationRetryTimeout value.
+ * @return the service client itself
+ */
+ public ConsumptionManagementClientImpl withLongRunningOperationRetryTimeout(int longRunningOperationRetryTimeout) {
+ this.longRunningOperationRetryTimeout = longRunningOperationRetryTimeout;
+ return this;
+ }
+
+ /** Whether a unique x-ms-client-request-id should be generated. When set to true a unique x-ms-client-request-id value is generated and included in each request. Default is true. */
+ private boolean generateClientRequestId;
+
+ /**
+ * Gets Whether a unique x-ms-client-request-id should be generated. When set to true a unique x-ms-client-request-id value is generated and included in each request. Default is true.
+ *
+ * @return the generateClientRequestId value.
+ */
+ public boolean generateClientRequestId() {
+ return this.generateClientRequestId;
+ }
+
+ /**
+ * Sets Whether a unique x-ms-client-request-id should be generated. When set to true a unique x-ms-client-request-id value is generated and included in each request. Default is true.
+ *
+ * @param generateClientRequestId the generateClientRequestId value.
+ * @return the service client itself
+ */
+ public ConsumptionManagementClientImpl withGenerateClientRequestId(boolean generateClientRequestId) {
+ this.generateClientRequestId = generateClientRequestId;
+ return this;
+ }
+
+ /**
+ * The UsageDetailsInner object to access its operations.
+ */
+ private UsageDetailsInner usageDetails;
+
+ /**
+ * Gets the UsageDetailsInner object to access its operations.
+ * @return the UsageDetailsInner object.
+ */
+ public UsageDetailsInner usageDetails() {
+ return this.usageDetails;
+ }
+
+ /**
+ * The ReservationsSummariesInner object to access its operations.
+ */
+ private ReservationsSummariesInner reservationsSummaries;
+
+ /**
+ * Gets the ReservationsSummariesInner object to access its operations.
+ * @return the ReservationsSummariesInner object.
+ */
+ public ReservationsSummariesInner reservationsSummaries() {
+ return this.reservationsSummaries;
+ }
+
+ /**
+ * The ReservationsDetailsInner object to access its operations.
+ */
+ private ReservationsDetailsInner reservationsDetails;
+
+ /**
+ * Gets the ReservationsDetailsInner object to access its operations.
+ * @return the ReservationsDetailsInner object.
+ */
+ public ReservationsDetailsInner reservationsDetails() {
+ return this.reservationsDetails;
+ }
+
+ /**
+ * The OperationsInner object to access its operations.
+ */
+ private OperationsInner operations;
+
+ /**
+ * Gets the OperationsInner object to access its operations.
+ * @return the OperationsInner object.
+ */
+ public OperationsInner operations() {
+ return this.operations;
+ }
+
+ /**
+ * Initializes an instance of ConsumptionManagementClient client.
+ *
+ * @param credentials the management credentials for Azure
+ */
+ public ConsumptionManagementClientImpl(ServiceClientCredentials credentials) {
+ this("https://management.azure.com", credentials);
+ }
+
+ /**
+ * Initializes an instance of ConsumptionManagementClient client.
+ *
+ * @param baseUrl the base URL of the host
+ * @param credentials the management credentials for Azure
+ */
+ public ConsumptionManagementClientImpl(String baseUrl, ServiceClientCredentials credentials) {
+ super(baseUrl, credentials);
+ initialize();
+ }
+
+ /**
+ * Initializes an instance of ConsumptionManagementClient client.
+ *
+ * @param restClient the REST client to connect to Azure.
+ */
+ public ConsumptionManagementClientImpl(RestClient restClient) {
+ super(restClient);
+ initialize();
+ }
+
+ protected void initialize() {
+ this.apiVersion = "2017-11-30";
+ this.acceptLanguage = "en-US";
+ this.longRunningOperationRetryTimeout = 30;
+ this.generateClientRequestId = true;
+ this.usageDetails = new UsageDetailsInner(restClient().retrofit(), this);
+ this.reservationsSummaries = new ReservationsSummariesInner(restClient().retrofit(), this);
+ this.reservationsDetails = new ReservationsDetailsInner(restClient().retrofit(), this);
+ this.operations = new OperationsInner(restClient().retrofit(), this);
+ this.azureClient = new AzureClient(this);
+ }
+
+ /**
+ * Gets the User-Agent header for the client.
+ *
+ * @return the user agent string.
+ */
+ @Override
+ public String userAgent() {
+ return String.format("%s (%s, %s, auto-generated)", super.userAgent(), "ConsumptionManagementClient", "2017-11-30");
+ }
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ConsumptionManager.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ConsumptionManager.java
new file mode 100644
index 000000000000..cb9bab5b437c
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ConsumptionManager.java
@@ -0,0 +1,135 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30.implementation;
+
+import com.microsoft.azure.AzureEnvironment;
+import com.microsoft.azure.AzureResponseBuilder;
+import com.microsoft.azure.credentials.AzureTokenCredentials;
+import com.microsoft.azure.management.apigeneration.Beta;
+import com.microsoft.azure.management.apigeneration.Beta.SinceVersion;
+import com.microsoft.azure.arm.resources.AzureConfigurable;
+import com.microsoft.azure.serializer.AzureJacksonAdapter;
+import com.microsoft.rest.RestClient;
+import com.microsoft.azure.management.consumption.v2017_11_30.UsageDetails;
+import com.microsoft.azure.management.consumption.v2017_11_30.ReservationsSummaries;
+import com.microsoft.azure.management.consumption.v2017_11_30.ReservationsDetails;
+import com.microsoft.azure.management.consumption.v2017_11_30.Operations;
+import com.microsoft.azure.arm.resources.implementation.AzureConfigurableCoreImpl;
+import com.microsoft.azure.arm.resources.implementation.ManagerCore;
+
+/**
+ * Entry point to Azure Consumption resource management.
+ */
+public final class ConsumptionManager extends ManagerCore {
+ private UsageDetails usageDetails;
+ private ReservationsSummaries reservationsSummaries;
+ private ReservationsDetails reservationsDetails;
+ private Operations operations;
+ /**
+ * Get a Configurable instance that can be used to create ConsumptionManager with optional configuration.
+ *
+ * @return the instance allowing configurations
+ */
+ public static Configurable configure() {
+ return new ConsumptionManager.ConfigurableImpl();
+ }
+ /**
+ * Creates an instance of ConsumptionManager that exposes Consumption resource management API entry points.
+ *
+ * @param credentials the credentials to use
+ * @param subscriptionId the subscription UUID
+ * @return the ConsumptionManager
+ */
+ public static ConsumptionManager authenticate(AzureTokenCredentials credentials, String subscriptionId) {
+ return new ConsumptionManager(new RestClient.Builder()
+ .withBaseUrl(credentials.environment(), AzureEnvironment.Endpoint.RESOURCE_MANAGER)
+ .withCredentials(credentials)
+ .withSerializerAdapter(new AzureJacksonAdapter())
+ .withResponseBuilderFactory(new AzureResponseBuilder.Factory())
+ .build(), subscriptionId);
+ }
+ /**
+ * Creates an instance of ConsumptionManager that exposes Consumption resource management API entry points.
+ *
+ * @param restClient the RestClient to be used for API calls.
+ * @param subscriptionId the subscription UUID
+ * @return the ConsumptionManager
+ */
+ public static ConsumptionManager authenticate(RestClient restClient, String subscriptionId) {
+ return new ConsumptionManager(restClient, subscriptionId);
+ }
+ /**
+ * The interface allowing configurations to be set.
+ */
+ public interface Configurable extends AzureConfigurable {
+ /**
+ * Creates an instance of ConsumptionManager that exposes Consumption management API entry points.
+ *
+ * @param credentials the credentials to use
+ * @param subscriptionId the subscription UUID
+ * @return the interface exposing Consumption management API entry points that work across subscriptions
+ */
+ ConsumptionManager authenticate(AzureTokenCredentials credentials, String subscriptionId);
+ }
+
+ /**
+ * @return Entry point to manage UsageDetails.
+ */
+ public UsageDetails usageDetails() {
+ if (this.usageDetails == null) {
+ this.usageDetails = new UsageDetailsImpl(this);
+ }
+ return this.usageDetails;
+ }
+
+ /**
+ * @return Entry point to manage ReservationsSummaries.
+ */
+ public ReservationsSummaries reservationsSummaries() {
+ if (this.reservationsSummaries == null) {
+ this.reservationsSummaries = new ReservationsSummariesImpl(this);
+ }
+ return this.reservationsSummaries;
+ }
+
+ /**
+ * @return Entry point to manage ReservationsDetails.
+ */
+ public ReservationsDetails reservationsDetails() {
+ if (this.reservationsDetails == null) {
+ this.reservationsDetails = new ReservationsDetailsImpl(this);
+ }
+ return this.reservationsDetails;
+ }
+
+ /**
+ * @return Entry point to manage Operations.
+ */
+ public Operations operations() {
+ if (this.operations == null) {
+ this.operations = new OperationsImpl(this);
+ }
+ return this.operations;
+ }
+
+ /**
+ * The implementation for Configurable interface.
+ */
+ private static final class ConfigurableImpl extends AzureConfigurableCoreImpl implements Configurable {
+ public ConsumptionManager authenticate(AzureTokenCredentials credentials, String subscriptionId) {
+ return ConsumptionManager.authenticate(buildRestClient(credentials), subscriptionId);
+ }
+ }
+ private ConsumptionManager(RestClient restClient, String subscriptionId) {
+ super(
+ restClient,
+ subscriptionId,
+ new ConsumptionManagementClientImpl(restClient).withSubscriptionId(subscriptionId));
+ }
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/IdParsingUtils.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/IdParsingUtils.java
new file mode 100644
index 000000000000..ef9c049995c8
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/IdParsingUtils.java
@@ -0,0 +1,57 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30.implementation;
+import java.util.Arrays;
+import java.util.Iterator;
+
+class IdParsingUtils {
+ public static String getValueFromIdByName(String id, String name) {
+ if (id == null) {
+ return null;
+ }
+ Iterable iterable = Arrays.asList(id.split("/"));
+ Iterator itr = iterable.iterator();
+ while (itr.hasNext()) {
+ String part = itr.next();
+ if (part != null && part.trim() != "") {
+ if (part.equalsIgnoreCase(name)) {
+ if (itr.hasNext()) {
+ return itr.next();
+ } else {
+ return null;
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ public static String getValueFromIdByPosition(String id, int pos) {
+ if (id == null) {
+ return null;
+ }
+ Iterable iterable = Arrays.asList(id.split("/"));
+ Iterator itr = iterable.iterator();
+ int index = 0;
+ while (itr.hasNext()) {
+ String part = itr.next();
+ if (part != null && part.trim() != "") {
+ if (index == pos) {
+ if (itr.hasNext()) {
+ return itr.next();
+ } else {
+ return null;
+ }
+ }
+ }
+ index++;
+ }
+ return null;
+ }
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/OperationImpl.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/OperationImpl.java
new file mode 100644
index 000000000000..755a860e0eb5
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/OperationImpl.java
@@ -0,0 +1,37 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30.implementation;
+
+import com.microsoft.azure.management.consumption.v2017_11_30.Operation;
+import com.microsoft.azure.arm.model.implementation.WrapperImpl;
+import com.microsoft.azure.management.consumption.v2017_11_30.OperationDisplay;
+
+class OperationImpl extends WrapperImpl implements Operation {
+ private final ConsumptionManager manager;
+ OperationImpl(OperationInner inner, ConsumptionManager manager) {
+ super(inner);
+ this.manager = manager;
+ }
+
+ @Override
+ public ConsumptionManager manager() {
+ return this.manager;
+ }
+
+ @Override
+ public OperationDisplay display() {
+ return this.inner().display();
+ }
+
+ @Override
+ public String name() {
+ return this.inner().name();
+ }
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/OperationInner.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/OperationInner.java
new file mode 100644
index 000000000000..7760cef54fa7
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/OperationInner.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30.implementation;
+
+import com.microsoft.azure.management.consumption.v2017_11_30.OperationDisplay;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * A Consumption REST API operation.
+ */
+public class OperationInner {
+ /**
+ * Operation name: {provider}/{resource}/{operation}.
+ */
+ @JsonProperty(value = "name", access = JsonProperty.Access.WRITE_ONLY)
+ private String name;
+
+ /**
+ * The object that represents the operation.
+ */
+ @JsonProperty(value = "display")
+ private OperationDisplay display;
+
+ /**
+ * Get operation name: {provider}/{resource}/{operation}.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Get the object that represents the operation.
+ *
+ * @return the display value
+ */
+ public OperationDisplay display() {
+ return this.display;
+ }
+
+ /**
+ * Set the object that represents the operation.
+ *
+ * @param display the display value to set
+ * @return the OperationInner object itself.
+ */
+ public OperationInner withDisplay(OperationDisplay display) {
+ this.display = display;
+ return this;
+ }
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/OperationsImpl.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/OperationsImpl.java
new file mode 100644
index 000000000000..b2b9f88769ea
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/OperationsImpl.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * abc
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30.implementation;
+
+import com.microsoft.azure.arm.model.implementation.WrapperImpl;
+import com.microsoft.azure.management.consumption.v2017_11_30.Operations;
+import rx.functions.Func1;
+import rx.Observable;
+import com.microsoft.azure.Page;
+import com.microsoft.azure.management.consumption.v2017_11_30.Operation;
+
+class OperationsImpl extends WrapperImpl implements Operations {
+ private final ConsumptionManager manager;
+
+ OperationsImpl(ConsumptionManager manager) {
+ super(manager.inner().operations());
+ this.manager = manager;
+ }
+
+ public ConsumptionManager manager() {
+ return this.manager;
+ }
+
+ @Override
+ public Observable listAsync() {
+ OperationsInner client = this.inner();
+ return client.listAsync()
+ .flatMapIterable(new Func1, Iterable>() {
+ @Override
+ public Iterable call(Page page) {
+ return page.items();
+ }
+ })
+ .map(new Func1() {
+ @Override
+ public Operation call(OperationInner inner) {
+ return new OperationImpl(inner, manager());
+ }
+ });
+ }
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/OperationsInner.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/OperationsInner.java
new file mode 100644
index 000000000000..c120301d5044
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/OperationsInner.java
@@ -0,0 +1,283 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30.implementation;
+
+import retrofit2.Retrofit;
+import com.google.common.reflect.TypeToken;
+import com.microsoft.azure.AzureServiceFuture;
+import com.microsoft.azure.ListOperationCallback;
+import com.microsoft.azure.management.consumption.v2017_11_30.ErrorResponseException;
+import com.microsoft.azure.Page;
+import com.microsoft.azure.PagedList;
+import com.microsoft.rest.ServiceFuture;
+import com.microsoft.rest.ServiceResponse;
+import java.io.IOException;
+import java.util.List;
+import okhttp3.ResponseBody;
+import retrofit2.http.GET;
+import retrofit2.http.Header;
+import retrofit2.http.Headers;
+import retrofit2.http.Query;
+import retrofit2.http.Url;
+import retrofit2.Response;
+import rx.functions.Func1;
+import rx.Observable;
+
+/**
+ * An instance of this class provides access to all the operations defined
+ * in Operations.
+ */
+public class OperationsInner {
+ /** The Retrofit service to perform REST calls. */
+ private OperationsService service;
+ /** The service client containing this operation class. */
+ private ConsumptionManagementClientImpl client;
+
+ /**
+ * Initializes an instance of OperationsInner.
+ *
+ * @param retrofit the Retrofit instance built from a Retrofit Builder.
+ * @param client the instance of the service client containing this operation class.
+ */
+ public OperationsInner(Retrofit retrofit, ConsumptionManagementClientImpl client) {
+ this.service = retrofit.create(OperationsService.class);
+ this.client = client;
+ }
+
+ /**
+ * The interface defining all the services for Operations to be
+ * used by Retrofit to perform actually REST calls.
+ */
+ interface OperationsService {
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.consumption.v2017_11_30.Operations list" })
+ @GET("providers/Microsoft.Consumption/operations")
+ Observable> list(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.consumption.v2017_11_30.Operations listNext" })
+ @GET
+ Observable> listNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ }
+
+ /**
+ * Lists all of the available consumption REST API operations.
+ *
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @throws ErrorResponseException thrown if the request is rejected by server
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
+ * @return the PagedList<OperationInner> object if successful.
+ */
+ public PagedList list() {
+ ServiceResponse> response = listSinglePageAsync().toBlocking().single();
+ return new PagedList(response.body()) {
+ @Override
+ public Page nextPage(String nextPageLink) {
+ return listNextSinglePageAsync(nextPageLink).toBlocking().single().body();
+ }
+ };
+ }
+
+ /**
+ * Lists all of the available consumption REST API operations.
+ *
+ * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the {@link ServiceFuture} object
+ */
+ public ServiceFuture> listAsync(final ListOperationCallback serviceCallback) {
+ return AzureServiceFuture.fromPageResponse(
+ listSinglePageAsync(),
+ new Func1>>>() {
+ @Override
+ public Observable>> call(String nextPageLink) {
+ return listNextSinglePageAsync(nextPageLink);
+ }
+ },
+ serviceCallback);
+ }
+
+ /**
+ * Lists all of the available consumption REST API operations.
+ *
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the PagedList<OperationInner> object
+ */
+ public Observable> listAsync() {
+ return listWithServiceResponseAsync()
+ .map(new Func1>, Page>() {
+ @Override
+ public Page call(ServiceResponse> response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * Lists all of the available consumption REST API operations.
+ *
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the PagedList<OperationInner> object
+ */
+ public Observable>> listWithServiceResponseAsync() {
+ return listSinglePageAsync()
+ .concatMap(new Func1>, Observable>>>() {
+ @Override
+ public Observable>> call(ServiceResponse> page) {
+ String nextPageLink = page.body().nextPageLink();
+ if (nextPageLink == null) {
+ return Observable.just(page);
+ }
+ return Observable.just(page).concatWith(listNextWithServiceResponseAsync(nextPageLink));
+ }
+ });
+ }
+
+ /**
+ * Lists all of the available consumption REST API operations.
+ *
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the PagedList<OperationInner> object wrapped in {@link ServiceResponse} if successful.
+ */
+ public Observable>> listSinglePageAsync() {
+ if (this.client.apiVersion() == null) {
+ throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null.");
+ }
+ return service.list(this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent())
+ .flatMap(new Func1, Observable>>>() {
+ @Override
+ public Observable>> call(Response response) {
+ try {
+ ServiceResponse> result = listDelegate(response);
+ return Observable.just(new ServiceResponse>(result.body(), result.response()));
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ private ServiceResponse> listDelegate(Response response) throws ErrorResponseException, IOException, IllegalArgumentException {
+ return this.client.restClient().responseBuilderFactory()., ErrorResponseException>newInstance(this.client.serializerAdapter())
+ .register(200, new TypeToken>() { }.getType())
+ .registerError(ErrorResponseException.class)
+ .build(response);
+ }
+
+ /**
+ * Lists all of the available consumption REST API operations.
+ *
+ * @param nextPageLink The NextLink from the previous successful call to List operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @throws ErrorResponseException thrown if the request is rejected by server
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
+ * @return the PagedList<OperationInner> object if successful.
+ */
+ public PagedList listNext(final String nextPageLink) {
+ ServiceResponse> response = listNextSinglePageAsync(nextPageLink).toBlocking().single();
+ return new PagedList(response.body()) {
+ @Override
+ public Page nextPage(String nextPageLink) {
+ return listNextSinglePageAsync(nextPageLink).toBlocking().single().body();
+ }
+ };
+ }
+
+ /**
+ * Lists all of the available consumption REST API operations.
+ *
+ * @param nextPageLink The NextLink from the previous successful call to List operation.
+ * @param serviceFuture the ServiceFuture object tracking the Retrofit calls
+ * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the {@link ServiceFuture} object
+ */
+ public ServiceFuture> listNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) {
+ return AzureServiceFuture.fromPageResponse(
+ listNextSinglePageAsync(nextPageLink),
+ new Func1>>>() {
+ @Override
+ public Observable>> call(String nextPageLink) {
+ return listNextSinglePageAsync(nextPageLink);
+ }
+ },
+ serviceCallback);
+ }
+
+ /**
+ * Lists all of the available consumption REST API operations.
+ *
+ * @param nextPageLink The NextLink from the previous successful call to List operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the PagedList<OperationInner> object
+ */
+ public Observable> listNextAsync(final String nextPageLink) {
+ return listNextWithServiceResponseAsync(nextPageLink)
+ .map(new Func1>, Page>() {
+ @Override
+ public Page call(ServiceResponse> response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * Lists all of the available consumption REST API operations.
+ *
+ * @param nextPageLink The NextLink from the previous successful call to List operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the PagedList<OperationInner> object
+ */
+ public Observable>> listNextWithServiceResponseAsync(final String nextPageLink) {
+ return listNextSinglePageAsync(nextPageLink)
+ .concatMap(new Func1>, Observable>>>() {
+ @Override
+ public Observable>> call(ServiceResponse> page) {
+ String nextPageLink = page.body().nextPageLink();
+ if (nextPageLink == null) {
+ return Observable.just(page);
+ }
+ return Observable.just(page).concatWith(listNextWithServiceResponseAsync(nextPageLink));
+ }
+ });
+ }
+
+ /**
+ * Lists all of the available consumption REST API operations.
+ *
+ ServiceResponse> * @param nextPageLink The NextLink from the previous successful call to List operation.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the PagedList<OperationInner> object wrapped in {@link ServiceResponse} if successful.
+ */
+ public Observable>> listNextSinglePageAsync(final String nextPageLink) {
+ if (nextPageLink == null) {
+ throw new IllegalArgumentException("Parameter nextPageLink is required and cannot be null.");
+ }
+ String nextUrl = String.format("%s", nextPageLink);
+ return service.listNext(nextUrl, this.client.acceptLanguage(), this.client.userAgent())
+ .flatMap(new Func1, Observable>>>() {
+ @Override
+ public Observable>> call(Response response) {
+ try {
+ ServiceResponse> result = listNextDelegate(response);
+ return Observable.just(new ServiceResponse>(result.body(), result.response()));
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ private ServiceResponse> listNextDelegate(Response response) throws ErrorResponseException, IOException, IllegalArgumentException {
+ return this.client.restClient().responseBuilderFactory()., ErrorResponseException>newInstance(this.client.serializerAdapter())
+ .register(200, new TypeToken>() { }.getType())
+ .registerError(ErrorResponseException.class)
+ .build(response);
+ }
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/PageImpl.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/PageImpl.java
new file mode 100644
index 000000000000..40913b6f3c7f
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/PageImpl.java
@@ -0,0 +1,75 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30.implementation;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.azure.Page;
+import java.util.List;
+
+/**
+ * An instance of this class defines a page of Azure resources and a link to
+ * get the next page of resources, if any.
+ *
+ * @param type of Azure resource
+ */
+public class PageImpl implements Page {
+ /**
+ * The link to the next page.
+ */
+ @JsonProperty("nextLink")
+ private String nextPageLink;
+
+ /**
+ * The list of items.
+ */
+ @JsonProperty("value")
+ private List items;
+
+ /**
+ * Gets the link to the next page.
+ *
+ * @return the link to the next page.
+ */
+ @Override
+ public String nextPageLink() {
+ return this.nextPageLink;
+ }
+
+ /**
+ * Gets the list of items.
+ *
+ * @return the list of items in {@link List}.
+ */
+ @Override
+ public List items() {
+ return items;
+ }
+
+ /**
+ * Sets the link to the next page.
+ *
+ * @param nextPageLink the link to the next page.
+ * @return this Page object itself.
+ */
+ public PageImpl setNextPageLink(String nextPageLink) {
+ this.nextPageLink = nextPageLink;
+ return this;
+ }
+
+ /**
+ * Sets the list of items.
+ *
+ * @param items the list of items in {@link List}.
+ * @return this Page object itself.
+ */
+ public PageImpl setItems(List items) {
+ this.items = items;
+ return this;
+ }
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/PageImpl1.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/PageImpl1.java
new file mode 100644
index 000000000000..b27ebf71e8f5
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/PageImpl1.java
@@ -0,0 +1,75 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30.implementation;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.azure.Page;
+import java.util.List;
+
+/**
+ * An instance of this class defines a page of Azure resources and a link to
+ * get the next page of resources, if any.
+ *
+ * @param type of Azure resource
+ */
+public class PageImpl1 implements Page {
+ /**
+ * The link to the next page.
+ */
+ @JsonProperty("")
+ private String nextPageLink;
+
+ /**
+ * The list of items.
+ */
+ @JsonProperty("value")
+ private List items;
+
+ /**
+ * Gets the link to the next page.
+ *
+ * @return the link to the next page.
+ */
+ @Override
+ public String nextPageLink() {
+ return this.nextPageLink;
+ }
+
+ /**
+ * Gets the list of items.
+ *
+ * @return the list of items in {@link List}.
+ */
+ @Override
+ public List items() {
+ return items;
+ }
+
+ /**
+ * Sets the link to the next page.
+ *
+ * @param nextPageLink the link to the next page.
+ * @return this Page object itself.
+ */
+ public PageImpl1 setNextPageLink(String nextPageLink) {
+ this.nextPageLink = nextPageLink;
+ return this;
+ }
+
+ /**
+ * Sets the list of items.
+ *
+ * @param items the list of items in {@link List}.
+ * @return this Page object itself.
+ */
+ public PageImpl1 setItems(List items) {
+ this.items = items;
+ return this;
+ }
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationDetailsImpl.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationDetailsImpl.java
new file mode 100644
index 000000000000..fad75759ed04
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationDetailsImpl.java
@@ -0,0 +1,89 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30.implementation;
+
+import com.microsoft.azure.management.consumption.v2017_11_30.ReservationDetails;
+import com.microsoft.azure.arm.model.implementation.WrapperImpl;
+import java.math.BigDecimal;
+import java.util.Map;
+import org.joda.time.DateTime;
+
+class ReservationDetailsImpl extends WrapperImpl implements ReservationDetails {
+ private final ConsumptionManager manager;
+ ReservationDetailsImpl(ReservationDetailsInner inner, ConsumptionManager manager) {
+ super(inner);
+ this.manager = manager;
+ }
+
+ @Override
+ public ConsumptionManager manager() {
+ return this.manager;
+ }
+
+ @Override
+ public String id() {
+ return this.inner().id();
+ }
+
+ @Override
+ public String instanceId() {
+ return this.inner().instanceId();
+ }
+
+ @Override
+ public String name() {
+ return this.inner().name();
+ }
+
+ @Override
+ public String reservationId() {
+ return this.inner().reservationId();
+ }
+
+ @Override
+ public String reservationOrderId() {
+ return this.inner().reservationOrderId();
+ }
+
+ @Override
+ public BigDecimal reservedHours() {
+ return this.inner().reservedHours();
+ }
+
+ @Override
+ public String skuName() {
+ return this.inner().skuName();
+ }
+
+ @Override
+ public Map tags() {
+ return this.inner().tags();
+ }
+
+ @Override
+ public BigDecimal totalReservedQuantity() {
+ return this.inner().totalReservedQuantity();
+ }
+
+ @Override
+ public String type() {
+ return this.inner().type();
+ }
+
+ @Override
+ public DateTime usageDate() {
+ return this.inner().usageDate();
+ }
+
+ @Override
+ public BigDecimal usedHours() {
+ return this.inner().usedHours();
+ }
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationDetailsInner.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationDetailsInner.java
new file mode 100644
index 000000000000..90318875534c
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationDetailsInner.java
@@ -0,0 +1,169 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30.implementation;
+
+import java.math.BigDecimal;
+import org.joda.time.DateTime;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.ProxyResource;
+
+/**
+ * reservation details resource.
+ */
+@JsonFlatten
+public class ReservationDetailsInner extends ProxyResource {
+ /**
+ * The reservation order ID is the identifier for a reservation purchase.
+ * Each reservation order ID represents a single purchase transaction. A
+ * reservation order contains reservations. The reservation order specifies
+ * the VM size and region for the reservations.
+ */
+ @JsonProperty(value = "properties.reservationOrderId", access = JsonProperty.Access.WRITE_ONLY)
+ private String reservationOrderId;
+
+ /**
+ * The reservation ID is the identifier of a reservation within a
+ * reservation order. Each reservation is the grouping for applying the
+ * benefit scope and also specifies the number of instances to which the
+ * reservation benefit can be applied to.
+ */
+ @JsonProperty(value = "properties.reservationId", access = JsonProperty.Access.WRITE_ONLY)
+ private String reservationId;
+
+ /**
+ * This is the ARM Sku name. It can be used to join with the serviceType
+ * field in additional info in usage records.
+ */
+ @JsonProperty(value = "properties.skuName", access = JsonProperty.Access.WRITE_ONLY)
+ private String skuName;
+
+ /**
+ * This is the total hours reserved for the day. E.g. if reservation for 1
+ * instance was made on 1 PM, this will be 11 hours for that day and 24
+ * hours from subsequent days.
+ */
+ @JsonProperty(value = "properties.reservedHours", access = JsonProperty.Access.WRITE_ONLY)
+ private BigDecimal reservedHours;
+
+ /**
+ * The date on which consumption occurred.
+ */
+ @JsonProperty(value = "properties.usageDate", access = JsonProperty.Access.WRITE_ONLY)
+ private DateTime usageDate;
+
+ /**
+ * This is the total hours used by the instance.
+ */
+ @JsonProperty(value = "properties.usedHours", access = JsonProperty.Access.WRITE_ONLY)
+ private BigDecimal usedHours;
+
+ /**
+ * This identifier is the name of the resource or the fully qualified
+ * Resource ID.
+ */
+ @JsonProperty(value = "properties.instanceId", access = JsonProperty.Access.WRITE_ONLY)
+ private String instanceId;
+
+ /**
+ * This is the total count of instances that are reserved for the
+ * reservationId.
+ */
+ @JsonProperty(value = "properties.totalReservedQuantity", access = JsonProperty.Access.WRITE_ONLY)
+ private BigDecimal totalReservedQuantity;
+
+ /**
+ * Resource tags.
+ */
+ @JsonProperty(value = "tags", access = JsonProperty.Access.WRITE_ONLY)
+ private Map tags;
+
+ /**
+ * Get the reservation order ID is the identifier for a reservation purchase. Each reservation order ID represents a single purchase transaction. A reservation order contains reservations. The reservation order specifies the VM size and region for the reservations.
+ *
+ * @return the reservationOrderId value
+ */
+ public String reservationOrderId() {
+ return this.reservationOrderId;
+ }
+
+ /**
+ * Get the reservation ID is the identifier of a reservation within a reservation order. Each reservation is the grouping for applying the benefit scope and also specifies the number of instances to which the reservation benefit can be applied to.
+ *
+ * @return the reservationId value
+ */
+ public String reservationId() {
+ return this.reservationId;
+ }
+
+ /**
+ * Get this is the ARM Sku name. It can be used to join with the serviceType field in additional info in usage records.
+ *
+ * @return the skuName value
+ */
+ public String skuName() {
+ return this.skuName;
+ }
+
+ /**
+ * Get this is the total hours reserved for the day. E.g. if reservation for 1 instance was made on 1 PM, this will be 11 hours for that day and 24 hours from subsequent days.
+ *
+ * @return the reservedHours value
+ */
+ public BigDecimal reservedHours() {
+ return this.reservedHours;
+ }
+
+ /**
+ * Get the date on which consumption occurred.
+ *
+ * @return the usageDate value
+ */
+ public DateTime usageDate() {
+ return this.usageDate;
+ }
+
+ /**
+ * Get this is the total hours used by the instance.
+ *
+ * @return the usedHours value
+ */
+ public BigDecimal usedHours() {
+ return this.usedHours;
+ }
+
+ /**
+ * Get this identifier is the name of the resource or the fully qualified Resource ID.
+ *
+ * @return the instanceId value
+ */
+ public String instanceId() {
+ return this.instanceId;
+ }
+
+ /**
+ * Get this is the total count of instances that are reserved for the reservationId.
+ *
+ * @return the totalReservedQuantity value
+ */
+ public BigDecimal totalReservedQuantity() {
+ return this.totalReservedQuantity;
+ }
+
+ /**
+ * Get resource tags.
+ *
+ * @return the tags value
+ */
+ public Map tags() {
+ return this.tags;
+ }
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationSummariesImpl.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationSummariesImpl.java
new file mode 100644
index 000000000000..f0213c683ccb
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationSummariesImpl.java
@@ -0,0 +1,94 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30.implementation;
+
+import com.microsoft.azure.management.consumption.v2017_11_30.ReservationSummaries;
+import com.microsoft.azure.arm.model.implementation.WrapperImpl;
+import java.math.BigDecimal;
+import java.util.Map;
+import org.joda.time.DateTime;
+
+class ReservationSummariesImpl extends WrapperImpl implements ReservationSummaries {
+ private final ConsumptionManager manager;
+ ReservationSummariesImpl(ReservationSummariesInner inner, ConsumptionManager manager) {
+ super(inner);
+ this.manager = manager;
+ }
+
+ @Override
+ public ConsumptionManager manager() {
+ return this.manager;
+ }
+
+ @Override
+ public BigDecimal avgUtilizationPercentage() {
+ return this.inner().avgUtilizationPercentage();
+ }
+
+ @Override
+ public String id() {
+ return this.inner().id();
+ }
+
+ @Override
+ public BigDecimal maxUtilizationPercentage() {
+ return this.inner().maxUtilizationPercentage();
+ }
+
+ @Override
+ public BigDecimal minUtilizationPercentage() {
+ return this.inner().minUtilizationPercentage();
+ }
+
+ @Override
+ public String name() {
+ return this.inner().name();
+ }
+
+ @Override
+ public String reservationId() {
+ return this.inner().reservationId();
+ }
+
+ @Override
+ public String reservationOrderId() {
+ return this.inner().reservationOrderId();
+ }
+
+ @Override
+ public BigDecimal reservedHours() {
+ return this.inner().reservedHours();
+ }
+
+ @Override
+ public String skuName() {
+ return this.inner().skuName();
+ }
+
+ @Override
+ public Map tags() {
+ return this.inner().tags();
+ }
+
+ @Override
+ public String type() {
+ return this.inner().type();
+ }
+
+ @Override
+ public DateTime usageDate() {
+ return this.inner().usageDate();
+ }
+
+ @Override
+ public BigDecimal usedHours() {
+ return this.inner().usedHours();
+ }
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationSummariesInner.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationSummariesInner.java
new file mode 100644
index 000000000000..b576830387c2
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationSummariesInner.java
@@ -0,0 +1,188 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30.implementation;
+
+import java.math.BigDecimal;
+import org.joda.time.DateTime;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.ProxyResource;
+
+/**
+ * reservation summaries resource.
+ */
+@JsonFlatten
+public class ReservationSummariesInner extends ProxyResource {
+ /**
+ * The reservation order ID is the identifier for a reservation purchase.
+ * Each reservation order ID represents a single purchase transaction. A
+ * reservation order contains reservations. The reservation order specifies
+ * the VM size and region for the reservations.
+ */
+ @JsonProperty(value = "properties.reservationOrderId", access = JsonProperty.Access.WRITE_ONLY)
+ private String reservationOrderId;
+
+ /**
+ * The reservation ID is the identifier of a reservation within a
+ * reservation order. Each reservation is the grouping for applying the
+ * benefit scope and also specifies the number of instances to which the
+ * reservation benefit can be applied to.
+ */
+ @JsonProperty(value = "properties.reservationId", access = JsonProperty.Access.WRITE_ONLY)
+ private String reservationId;
+
+ /**
+ * This is the ARM Sku name. It can be used to join with the serviceType
+ * field in additional info in usage records.
+ */
+ @JsonProperty(value = "properties.skuName", access = JsonProperty.Access.WRITE_ONLY)
+ private String skuName;
+
+ /**
+ * This is the total hours reserved. E.g. if reservation for 1 instance was
+ * made on 1 PM, this will be 11 hours for that day and 24 hours from
+ * subsequent days.
+ */
+ @JsonProperty(value = "properties.reservedHours", access = JsonProperty.Access.WRITE_ONLY)
+ private BigDecimal reservedHours;
+
+ /**
+ * Data corresponding to the utilization record. If the grain of data is
+ * monthly, it will be first day of month.
+ */
+ @JsonProperty(value = "properties.usageDate", access = JsonProperty.Access.WRITE_ONLY)
+ private DateTime usageDate;
+
+ /**
+ * Total used hours by the reservation.
+ */
+ @JsonProperty(value = "properties.usedHours", access = JsonProperty.Access.WRITE_ONLY)
+ private BigDecimal usedHours;
+
+ /**
+ * This is the minimum hourly utilization in the usage time (day or month).
+ * E.g. if usage record corresponds to 12/10/2017 and on that for hour 4
+ * and 5, utilization was 10%, this field will return 10% for that day.
+ */
+ @JsonProperty(value = "properties.minUtilizationPercentage", access = JsonProperty.Access.WRITE_ONLY)
+ private BigDecimal minUtilizationPercentage;
+
+ /**
+ * This is average utilization for the entire time range. (day or month
+ * depending on the grain).
+ */
+ @JsonProperty(value = "properties.avgUtilizationPercentage", access = JsonProperty.Access.WRITE_ONLY)
+ private BigDecimal avgUtilizationPercentage;
+
+ /**
+ * This is the maximum hourly utilization in the usage time (day or month).
+ * E.g. if usage record corresponds to 12/10/2017 and on that for hour 4
+ * and 5, utilization was 100%, this field will return 100% for that day.
+ */
+ @JsonProperty(value = "properties.maxUtilizationPercentage", access = JsonProperty.Access.WRITE_ONLY)
+ private BigDecimal maxUtilizationPercentage;
+
+ /**
+ * Resource tags.
+ */
+ @JsonProperty(value = "tags", access = JsonProperty.Access.WRITE_ONLY)
+ private Map tags;
+
+ /**
+ * Get the reservation order ID is the identifier for a reservation purchase. Each reservation order ID represents a single purchase transaction. A reservation order contains reservations. The reservation order specifies the VM size and region for the reservations.
+ *
+ * @return the reservationOrderId value
+ */
+ public String reservationOrderId() {
+ return this.reservationOrderId;
+ }
+
+ /**
+ * Get the reservation ID is the identifier of a reservation within a reservation order. Each reservation is the grouping for applying the benefit scope and also specifies the number of instances to which the reservation benefit can be applied to.
+ *
+ * @return the reservationId value
+ */
+ public String reservationId() {
+ return this.reservationId;
+ }
+
+ /**
+ * Get this is the ARM Sku name. It can be used to join with the serviceType field in additional info in usage records.
+ *
+ * @return the skuName value
+ */
+ public String skuName() {
+ return this.skuName;
+ }
+
+ /**
+ * Get this is the total hours reserved. E.g. if reservation for 1 instance was made on 1 PM, this will be 11 hours for that day and 24 hours from subsequent days.
+ *
+ * @return the reservedHours value
+ */
+ public BigDecimal reservedHours() {
+ return this.reservedHours;
+ }
+
+ /**
+ * Get data corresponding to the utilization record. If the grain of data is monthly, it will be first day of month.
+ *
+ * @return the usageDate value
+ */
+ public DateTime usageDate() {
+ return this.usageDate;
+ }
+
+ /**
+ * Get total used hours by the reservation.
+ *
+ * @return the usedHours value
+ */
+ public BigDecimal usedHours() {
+ return this.usedHours;
+ }
+
+ /**
+ * Get this is the minimum hourly utilization in the usage time (day or month). E.g. if usage record corresponds to 12/10/2017 and on that for hour 4 and 5, utilization was 10%, this field will return 10% for that day.
+ *
+ * @return the minUtilizationPercentage value
+ */
+ public BigDecimal minUtilizationPercentage() {
+ return this.minUtilizationPercentage;
+ }
+
+ /**
+ * Get this is average utilization for the entire time range. (day or month depending on the grain).
+ *
+ * @return the avgUtilizationPercentage value
+ */
+ public BigDecimal avgUtilizationPercentage() {
+ return this.avgUtilizationPercentage;
+ }
+
+ /**
+ * Get this is the maximum hourly utilization in the usage time (day or month). E.g. if usage record corresponds to 12/10/2017 and on that for hour 4 and 5, utilization was 100%, this field will return 100% for that day.
+ *
+ * @return the maxUtilizationPercentage value
+ */
+ public BigDecimal maxUtilizationPercentage() {
+ return this.maxUtilizationPercentage;
+ }
+
+ /**
+ * Get resource tags.
+ *
+ * @return the tags value
+ */
+ public Map tags() {
+ return this.tags;
+ }
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationsDetailsImpl.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationsDetailsImpl.java
new file mode 100644
index 000000000000..fc17d3e6c75c
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationsDetailsImpl.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * abc
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30.implementation;
+
+import com.microsoft.azure.arm.model.implementation.WrapperImpl;
+import com.microsoft.azure.management.consumption.v2017_11_30.ReservationsDetails;
+import rx.functions.Func1;
+import rx.Observable;
+import java.util.List;
+import com.microsoft.azure.management.consumption.v2017_11_30.ReservationDetails;
+
+class ReservationsDetailsImpl extends WrapperImpl implements ReservationsDetails {
+ private final ConsumptionManager manager;
+
+ ReservationsDetailsImpl(ConsumptionManager manager) {
+ super(manager.inner().reservationsDetails());
+ this.manager = manager;
+ }
+
+ public ConsumptionManager manager() {
+ return this.manager;
+ }
+
+ @Override
+ public Observable listAsync(String scope, String filter) {
+ ReservationsDetailsInner client = this.inner();
+ return client.listAsync(scope, filter)
+ .flatMap(new Func1, Observable>() {
+ @Override
+ public Observable call(List innerList) {
+ return Observable.from(innerList);
+ }
+ })
+ .map(new Func1() {
+ @Override
+ public ReservationDetails call(ReservationDetailsInner inner) {
+ return new ReservationDetailsImpl(inner, manager());
+ }
+ });
+ }
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationsDetailsInner.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationsDetailsInner.java
new file mode 100644
index 000000000000..9387cdeed173
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationsDetailsInner.java
@@ -0,0 +1,149 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30.implementation;
+
+import retrofit2.Retrofit;
+import com.google.common.reflect.TypeToken;
+import com.microsoft.azure.management.consumption.v2017_11_30.ErrorResponseException;
+import com.microsoft.rest.ServiceCallback;
+import com.microsoft.rest.ServiceFuture;
+import com.microsoft.rest.ServiceResponse;
+import java.io.IOException;
+import java.util.List;
+import okhttp3.ResponseBody;
+import retrofit2.http.GET;
+import retrofit2.http.Header;
+import retrofit2.http.Headers;
+import retrofit2.http.Path;
+import retrofit2.http.Query;
+import retrofit2.Response;
+import rx.functions.Func1;
+import rx.Observable;
+
+/**
+ * An instance of this class provides access to all the operations defined
+ * in ReservationsDetails.
+ */
+public class ReservationsDetailsInner {
+ /** The Retrofit service to perform REST calls. */
+ private ReservationsDetailsService service;
+ /** The service client containing this operation class. */
+ private ConsumptionManagementClientImpl client;
+
+ /**
+ * Initializes an instance of ReservationsDetailsInner.
+ *
+ * @param retrofit the Retrofit instance built from a Retrofit Builder.
+ * @param client the instance of the service client containing this operation class.
+ */
+ public ReservationsDetailsInner(Retrofit retrofit, ConsumptionManagementClientImpl client) {
+ this.service = retrofit.create(ReservationsDetailsService.class);
+ this.client = client;
+ }
+
+ /**
+ * The interface defining all the services for ReservationsDetails to be
+ * used by Retrofit to perform actually REST calls.
+ */
+ interface ReservationsDetailsService {
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.consumption.v2017_11_30.ReservationsDetails list" })
+ @GET("{scope}/providers/Microsoft.Consumption/reservationDetails")
+ Observable> list(@Path(value = "scope", encoded = true) String scope, @Query("$filter") String filter, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ }
+
+ /**
+ * Lists the reservations details for provided date range.
+ *
+ * @param scope The scope of the reservation details. The scope can be 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}' or 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}/reservations/{ReservationId}'
+ * @param filter Filter reservation details by date range. The properties/UsageDate for start date and end date. The filter supports 'le' and 'ge'
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @throws ErrorResponseException thrown if the request is rejected by server
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
+ * @return the List<ReservationDetailsInner> object if successful.
+ */
+ public List list(String scope, String filter) {
+ return listWithServiceResponseAsync(scope, filter).toBlocking().single().body();
+ }
+
+ /**
+ * Lists the reservations details for provided date range.
+ *
+ * @param scope The scope of the reservation details. The scope can be 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}' or 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}/reservations/{ReservationId}'
+ * @param filter Filter reservation details by date range. The properties/UsageDate for start date and end date. The filter supports 'le' and 'ge'
+ * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the {@link ServiceFuture} object
+ */
+ public ServiceFuture> listAsync(String scope, String filter, final ServiceCallback> serviceCallback) {
+ return ServiceFuture.fromResponse(listWithServiceResponseAsync(scope, filter), serviceCallback);
+ }
+
+ /**
+ * Lists the reservations details for provided date range.
+ *
+ * @param scope The scope of the reservation details. The scope can be 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}' or 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}/reservations/{ReservationId}'
+ * @param filter Filter reservation details by date range. The properties/UsageDate for start date and end date. The filter supports 'le' and 'ge'
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the List<ReservationDetailsInner> object
+ */
+ public Observable> listAsync(String scope, String filter) {
+ return listWithServiceResponseAsync(scope, filter).map(new Func1>, List>() {
+ @Override
+ public List call(ServiceResponse> response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * Lists the reservations details for provided date range.
+ *
+ * @param scope The scope of the reservation details. The scope can be 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}' or 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}/reservations/{ReservationId}'
+ * @param filter Filter reservation details by date range. The properties/UsageDate for start date and end date. The filter supports 'le' and 'ge'
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the List<ReservationDetailsInner> object
+ */
+ public Observable>> listWithServiceResponseAsync(String scope, String filter) {
+ if (scope == null) {
+ throw new IllegalArgumentException("Parameter scope is required and cannot be null.");
+ }
+ if (filter == null) {
+ throw new IllegalArgumentException("Parameter filter is required and cannot be null.");
+ }
+ if (this.client.apiVersion() == null) {
+ throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null.");
+ }
+ return service.list(scope, filter, this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent())
+ .flatMap(new Func1, Observable>>>() {
+ @Override
+ public Observable>> call(Response response) {
+ try {
+ ServiceResponse> result = listDelegate(response);
+ List items = null;
+ if (result.body() != null) {
+ items = result.body().items();
+ }
+ ServiceResponse> clientResponse = new ServiceResponse>(items, result.response());
+ return Observable.just(clientResponse);
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ private ServiceResponse> listDelegate(Response response) throws ErrorResponseException, IOException, IllegalArgumentException {
+ return this.client.restClient().responseBuilderFactory()., ErrorResponseException>newInstance(this.client.serializerAdapter())
+ .register(200, new TypeToken>() { }.getType())
+ .registerError(ErrorResponseException.class)
+ .build(response);
+ }
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationsSummariesImpl.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationsSummariesImpl.java
new file mode 100644
index 000000000000..1499ddf7b318
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationsSummariesImpl.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * abc
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30.implementation;
+
+import com.microsoft.azure.arm.model.implementation.WrapperImpl;
+import com.microsoft.azure.management.consumption.v2017_11_30.ReservationsSummaries;
+import rx.functions.Func1;
+import rx.Observable;
+import java.util.List;
+import com.microsoft.azure.management.consumption.v2017_11_30.ReservationSummaries;
+import com.microsoft.azure.management.consumption.v2017_11_30.Datagrain;
+
+class ReservationsSummariesImpl extends WrapperImpl implements ReservationsSummaries {
+ private final ConsumptionManager manager;
+
+ ReservationsSummariesImpl(ConsumptionManager manager) {
+ super(manager.inner().reservationsSummaries());
+ this.manager = manager;
+ }
+
+ public ConsumptionManager manager() {
+ return this.manager;
+ }
+
+ @Override
+ public Observable listAsync(String scope, Datagrain grain) {
+ ReservationsSummariesInner client = this.inner();
+ return client.listAsync(scope, grain)
+ .flatMap(new Func1, Observable>() {
+ @Override
+ public Observable call(List innerList) {
+ return Observable.from(innerList);
+ }
+ })
+ .map(new Func1() {
+ @Override
+ public ReservationSummaries call(ReservationSummariesInner inner) {
+ return new ReservationSummariesImpl(inner, manager());
+ }
+ });
+ }
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationsSummariesInner.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationsSummariesInner.java
new file mode 100644
index 000000000000..3deccb8ffe5a
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/ReservationsSummariesInner.java
@@ -0,0 +1,236 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30.implementation;
+
+import retrofit2.Retrofit;
+import com.google.common.reflect.TypeToken;
+import com.microsoft.azure.management.consumption.v2017_11_30.Datagrain;
+import com.microsoft.azure.management.consumption.v2017_11_30.ErrorResponseException;
+import com.microsoft.rest.ServiceCallback;
+import com.microsoft.rest.ServiceFuture;
+import com.microsoft.rest.ServiceResponse;
+import java.io.IOException;
+import java.util.List;
+import okhttp3.ResponseBody;
+import retrofit2.http.GET;
+import retrofit2.http.Header;
+import retrofit2.http.Headers;
+import retrofit2.http.Path;
+import retrofit2.http.Query;
+import retrofit2.Response;
+import rx.functions.Func1;
+import rx.Observable;
+
+/**
+ * An instance of this class provides access to all the operations defined
+ * in ReservationsSummaries.
+ */
+public class ReservationsSummariesInner {
+ /** The Retrofit service to perform REST calls. */
+ private ReservationsSummariesService service;
+ /** The service client containing this operation class. */
+ private ConsumptionManagementClientImpl client;
+
+ /**
+ * Initializes an instance of ReservationsSummariesInner.
+ *
+ * @param retrofit the Retrofit instance built from a Retrofit Builder.
+ * @param client the instance of the service client containing this operation class.
+ */
+ public ReservationsSummariesInner(Retrofit retrofit, ConsumptionManagementClientImpl client) {
+ this.service = retrofit.create(ReservationsSummariesService.class);
+ this.client = client;
+ }
+
+ /**
+ * The interface defining all the services for ReservationsSummaries to be
+ * used by Retrofit to perform actually REST calls.
+ */
+ interface ReservationsSummariesService {
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.consumption.v2017_11_30.ReservationsSummaries list" })
+ @GET("{scope}/providers/Microsoft.Consumption/reservationSummaries")
+ Observable> list(@Path(value = "scope", encoded = true) String scope, @Query("grain") Datagrain grain, @Query("$filter") String filter, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ }
+
+ /**
+ * Lists the reservations summaries for daily or monthly grain.
+ *
+ * @param scope The scope of the reservation summaries. The scope can be 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}' or 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}/reservations/{ReservationId}'
+ * @param grain Can be daily or monthly. Possible values include: 'DailyGrain', 'MonthlyGrain'
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @throws ErrorResponseException thrown if the request is rejected by server
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
+ * @return the List<ReservationSummariesInner> object if successful.
+ */
+ public List list(String scope, Datagrain grain) {
+ return listWithServiceResponseAsync(scope, grain).toBlocking().single().body();
+ }
+
+ /**
+ * Lists the reservations summaries for daily or monthly grain.
+ *
+ * @param scope The scope of the reservation summaries. The scope can be 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}' or 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}/reservations/{ReservationId}'
+ * @param grain Can be daily or monthly. Possible values include: 'DailyGrain', 'MonthlyGrain'
+ * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the {@link ServiceFuture} object
+ */
+ public ServiceFuture> listAsync(String scope, Datagrain grain, final ServiceCallback> serviceCallback) {
+ return ServiceFuture.fromResponse(listWithServiceResponseAsync(scope, grain), serviceCallback);
+ }
+
+ /**
+ * Lists the reservations summaries for daily or monthly grain.
+ *
+ * @param scope The scope of the reservation summaries. The scope can be 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}' or 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}/reservations/{ReservationId}'
+ * @param grain Can be daily or monthly. Possible values include: 'DailyGrain', 'MonthlyGrain'
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the List<ReservationSummariesInner> object
+ */
+ public Observable> listAsync(String scope, Datagrain grain) {
+ return listWithServiceResponseAsync(scope, grain).map(new Func1>, List>() {
+ @Override
+ public List call(ServiceResponse> response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * Lists the reservations summaries for daily or monthly grain.
+ *
+ * @param scope The scope of the reservation summaries. The scope can be 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}' or 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}/reservations/{ReservationId}'
+ * @param grain Can be daily or monthly. Possible values include: 'DailyGrain', 'MonthlyGrain'
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the List<ReservationSummariesInner> object
+ */
+ public Observable>> listWithServiceResponseAsync(String scope, Datagrain grain) {
+ if (scope == null) {
+ throw new IllegalArgumentException("Parameter scope is required and cannot be null.");
+ }
+ if (grain == null) {
+ throw new IllegalArgumentException("Parameter grain is required and cannot be null.");
+ }
+ if (this.client.apiVersion() == null) {
+ throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null.");
+ }
+ final String filter = null;
+ return service.list(scope, grain, filter, this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent())
+ .flatMap(new Func1, Observable>>>() {
+ @Override
+ public Observable>> call(Response response) {
+ try {
+ ServiceResponse> result = listDelegate(response);
+ List items = null;
+ if (result.body() != null) {
+ items = result.body().items();
+ }
+ ServiceResponse> clientResponse = new ServiceResponse>(items, result.response());
+ return Observable.just(clientResponse);
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ /**
+ * Lists the reservations summaries for daily or monthly grain.
+ *
+ * @param scope The scope of the reservation summaries. The scope can be 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}' or 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}/reservations/{ReservationId}'
+ * @param grain Can be daily or monthly. Possible values include: 'DailyGrain', 'MonthlyGrain'
+ * @param filter Required only for daily grain. The properties/UsageDate for start date and end date. The filter supports 'le' and 'ge'
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @throws ErrorResponseException thrown if the request is rejected by server
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
+ * @return the List<ReservationSummariesInner> object if successful.
+ */
+ public List list(String scope, Datagrain grain, String filter) {
+ return listWithServiceResponseAsync(scope, grain, filter).toBlocking().single().body();
+ }
+
+ /**
+ * Lists the reservations summaries for daily or monthly grain.
+ *
+ * @param scope The scope of the reservation summaries. The scope can be 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}' or 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}/reservations/{ReservationId}'
+ * @param grain Can be daily or monthly. Possible values include: 'DailyGrain', 'MonthlyGrain'
+ * @param filter Required only for daily grain. The properties/UsageDate for start date and end date. The filter supports 'le' and 'ge'
+ * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the {@link ServiceFuture} object
+ */
+ public ServiceFuture> listAsync(String scope, Datagrain grain, String filter, final ServiceCallback> serviceCallback) {
+ return ServiceFuture.fromResponse(listWithServiceResponseAsync(scope, grain, filter), serviceCallback);
+ }
+
+ /**
+ * Lists the reservations summaries for daily or monthly grain.
+ *
+ * @param scope The scope of the reservation summaries. The scope can be 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}' or 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}/reservations/{ReservationId}'
+ * @param grain Can be daily or monthly. Possible values include: 'DailyGrain', 'MonthlyGrain'
+ * @param filter Required only for daily grain. The properties/UsageDate for start date and end date. The filter supports 'le' and 'ge'
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the List<ReservationSummariesInner> object
+ */
+ public Observable> listAsync(String scope, Datagrain grain, String filter) {
+ return listWithServiceResponseAsync(scope, grain, filter).map(new Func1>, List>() {
+ @Override
+ public List call(ServiceResponse> response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * Lists the reservations summaries for daily or monthly grain.
+ *
+ * @param scope The scope of the reservation summaries. The scope can be 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}' or 'providers/Microsoft.Capacity/reservationorders/{ReservationOrderId}/reservations/{ReservationId}'
+ * @param grain Can be daily or monthly. Possible values include: 'DailyGrain', 'MonthlyGrain'
+ * @param filter Required only for daily grain. The properties/UsageDate for start date and end date. The filter supports 'le' and 'ge'
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the List<ReservationSummariesInner> object
+ */
+ public Observable>> listWithServiceResponseAsync(String scope, Datagrain grain, String filter) {
+ if (scope == null) {
+ throw new IllegalArgumentException("Parameter scope is required and cannot be null.");
+ }
+ if (grain == null) {
+ throw new IllegalArgumentException("Parameter grain is required and cannot be null.");
+ }
+ if (this.client.apiVersion() == null) {
+ throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null.");
+ }
+ return service.list(scope, grain, filter, this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent())
+ .flatMap(new Func1, Observable>>>() {
+ @Override
+ public Observable>> call(Response response) {
+ try {
+ ServiceResponse> result = listDelegate(response);
+ List items = null;
+ if (result.body() != null) {
+ items = result.body().items();
+ }
+ ServiceResponse> clientResponse = new ServiceResponse>(items, result.response());
+ return Observable.just(clientResponse);
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ private ServiceResponse> listDelegate(Response response) throws ErrorResponseException, IOException, IllegalArgumentException {
+ return this.client.restClient().responseBuilderFactory()., ErrorResponseException>newInstance(this.client.serializerAdapter())
+ .register(200, new TypeToken>() { }.getType())
+ .registerError(ErrorResponseException.class)
+ .build(response);
+ }
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/UsageDetailImpl.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/UsageDetailImpl.java
new file mode 100644
index 000000000000..04fa0e278504
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/UsageDetailImpl.java
@@ -0,0 +1,160 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30.implementation;
+
+import com.microsoft.azure.management.consumption.v2017_11_30.UsageDetail;
+import com.microsoft.azure.arm.model.implementation.WrapperImpl;
+import java.math.BigDecimal;
+import com.microsoft.azure.management.consumption.v2017_11_30.MeterDetails;
+import java.util.Map;
+import org.joda.time.DateTime;
+
+class UsageDetailImpl extends WrapperImpl implements UsageDetail {
+ private final ConsumptionManager manager;
+ UsageDetailImpl(UsageDetailInner inner, ConsumptionManager manager) {
+ super(inner);
+ this.manager = manager;
+ }
+
+ @Override
+ public ConsumptionManager manager() {
+ return this.manager;
+ }
+
+ @Override
+ public String accountName() {
+ return this.inner().accountName();
+ }
+
+ @Override
+ public String additionalProperties() {
+ return this.inner().additionalProperties();
+ }
+
+ @Override
+ public BigDecimal billableQuantity() {
+ return this.inner().billableQuantity();
+ }
+
+ @Override
+ public String billingPeriodId() {
+ return this.inner().billingPeriodId();
+ }
+
+ @Override
+ public String consumedService() {
+ return this.inner().consumedService();
+ }
+
+ @Override
+ public String costCenter() {
+ return this.inner().costCenter();
+ }
+
+ @Override
+ public String currency() {
+ return this.inner().currency();
+ }
+
+ @Override
+ public String departmentName() {
+ return this.inner().departmentName();
+ }
+
+ @Override
+ public String id() {
+ return this.inner().id();
+ }
+
+ @Override
+ public String instanceId() {
+ return this.inner().instanceId();
+ }
+
+ @Override
+ public String instanceLocation() {
+ return this.inner().instanceLocation();
+ }
+
+ @Override
+ public String instanceName() {
+ return this.inner().instanceName();
+ }
+
+ @Override
+ public String invoiceId() {
+ return this.inner().invoiceId();
+ }
+
+ @Override
+ public Boolean isEstimated() {
+ return this.inner().isEstimated();
+ }
+
+ @Override
+ public MeterDetails meterDetails() {
+ return this.inner().meterDetails();
+ }
+
+ @Override
+ public String meterId() {
+ return this.inner().meterId();
+ }
+
+ @Override
+ public String name() {
+ return this.inner().name();
+ }
+
+ @Override
+ public BigDecimal pretaxCost() {
+ return this.inner().pretaxCost();
+ }
+
+ @Override
+ public String product() {
+ return this.inner().product();
+ }
+
+ @Override
+ public String subscriptionGuid() {
+ return this.inner().subscriptionGuid();
+ }
+
+ @Override
+ public String subscriptionName() {
+ return this.inner().subscriptionName();
+ }
+
+ @Override
+ public Map tags() {
+ return this.inner().tags();
+ }
+
+ @Override
+ public String type() {
+ return this.inner().type();
+ }
+
+ @Override
+ public DateTime usageEnd() {
+ return this.inner().usageEnd();
+ }
+
+ @Override
+ public BigDecimal usageQuantity() {
+ return this.inner().usageQuantity();
+ }
+
+ @Override
+ public DateTime usageStart() {
+ return this.inner().usageStart();
+ }
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/UsageDetailInner.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/UsageDetailInner.java
new file mode 100644
index 000000000000..c349c1d93c44
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/UsageDetailInner.java
@@ -0,0 +1,372 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30.implementation;
+
+import org.joda.time.DateTime;
+import java.math.BigDecimal;
+import com.microsoft.azure.management.consumption.v2017_11_30.MeterDetails;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.ProxyResource;
+
+/**
+ * An usage detail resource.
+ */
+@JsonFlatten
+public class UsageDetailInner extends ProxyResource {
+ /**
+ * The id of the billing period resource that the usage belongs to.
+ */
+ @JsonProperty(value = "properties.billingPeriodId", access = JsonProperty.Access.WRITE_ONLY)
+ private String billingPeriodId;
+
+ /**
+ * The id of the invoice resource that the usage belongs to.
+ */
+ @JsonProperty(value = "properties.invoiceId", access = JsonProperty.Access.WRITE_ONLY)
+ private String invoiceId;
+
+ /**
+ * The start of the date time range covered by the usage detail.
+ */
+ @JsonProperty(value = "properties.usageStart", access = JsonProperty.Access.WRITE_ONLY)
+ private DateTime usageStart;
+
+ /**
+ * The end of the date time range covered by the usage detail.
+ */
+ @JsonProperty(value = "properties.usageEnd", access = JsonProperty.Access.WRITE_ONLY)
+ private DateTime usageEnd;
+
+ /**
+ * The name of the resource instance that the usage is about.
+ */
+ @JsonProperty(value = "properties.instanceName", access = JsonProperty.Access.WRITE_ONLY)
+ private String instanceName;
+
+ /**
+ * The uri of the resource instance that the usage is about.
+ */
+ @JsonProperty(value = "properties.instanceId", access = JsonProperty.Access.WRITE_ONLY)
+ private String instanceId;
+
+ /**
+ * The location of the resource instance that the usage is about.
+ */
+ @JsonProperty(value = "properties.instanceLocation", access = JsonProperty.Access.WRITE_ONLY)
+ private String instanceLocation;
+
+ /**
+ * The ISO currency in which the meter is charged, for example, USD.
+ */
+ @JsonProperty(value = "properties.currency", access = JsonProperty.Access.WRITE_ONLY)
+ private String currency;
+
+ /**
+ * The quantity of usage.
+ */
+ @JsonProperty(value = "properties.usageQuantity", access = JsonProperty.Access.WRITE_ONLY)
+ private BigDecimal usageQuantity;
+
+ /**
+ * The billable usage quantity.
+ */
+ @JsonProperty(value = "properties.billableQuantity", access = JsonProperty.Access.WRITE_ONLY)
+ private BigDecimal billableQuantity;
+
+ /**
+ * The amount of cost before tax.
+ */
+ @JsonProperty(value = "properties.pretaxCost", access = JsonProperty.Access.WRITE_ONLY)
+ private BigDecimal pretaxCost;
+
+ /**
+ * The estimated usage is subject to change.
+ */
+ @JsonProperty(value = "properties.isEstimated", access = JsonProperty.Access.WRITE_ONLY)
+ private Boolean isEstimated;
+
+ /**
+ * The meter id.
+ */
+ @JsonProperty(value = "properties.meterId", access = JsonProperty.Access.WRITE_ONLY)
+ private String meterId;
+
+ /**
+ * The details about the meter. By default this is not populated, unless
+ * it's specified in $expand.
+ */
+ @JsonProperty(value = "properties.meterDetails", access = JsonProperty.Access.WRITE_ONLY)
+ private MeterDetails meterDetails;
+
+ /**
+ * Subscription guid.
+ */
+ @JsonProperty(value = "properties.subscriptionGuid", access = JsonProperty.Access.WRITE_ONLY)
+ private String subscriptionGuid;
+
+ /**
+ * Subscription name.
+ */
+ @JsonProperty(value = "properties.subscriptionName", access = JsonProperty.Access.WRITE_ONLY)
+ private String subscriptionName;
+
+ /**
+ * Account name.
+ */
+ @JsonProperty(value = "properties.accountName", access = JsonProperty.Access.WRITE_ONLY)
+ private String accountName;
+
+ /**
+ * Department name.
+ */
+ @JsonProperty(value = "properties.departmentName", access = JsonProperty.Access.WRITE_ONLY)
+ private String departmentName;
+
+ /**
+ * Product name.
+ */
+ @JsonProperty(value = "properties.product", access = JsonProperty.Access.WRITE_ONLY)
+ private String product;
+
+ /**
+ * Consumed service name.
+ */
+ @JsonProperty(value = "properties.consumedService", access = JsonProperty.Access.WRITE_ONLY)
+ private String consumedService;
+
+ /**
+ * The cost center of this department if it is a department and a
+ * costcenter exists.
+ */
+ @JsonProperty(value = "properties.costCenter", access = JsonProperty.Access.WRITE_ONLY)
+ private String costCenter;
+
+ /**
+ * Additional details of this usage item. By default this is not populated,
+ * unless it's specified in $expand.
+ */
+ @JsonProperty(value = "properties.additionalProperties", access = JsonProperty.Access.WRITE_ONLY)
+ private String additionalProperties;
+
+ /**
+ * Resource tags.
+ */
+ @JsonProperty(value = "tags", access = JsonProperty.Access.WRITE_ONLY)
+ private Map tags;
+
+ /**
+ * Get the id of the billing period resource that the usage belongs to.
+ *
+ * @return the billingPeriodId value
+ */
+ public String billingPeriodId() {
+ return this.billingPeriodId;
+ }
+
+ /**
+ * Get the id of the invoice resource that the usage belongs to.
+ *
+ * @return the invoiceId value
+ */
+ public String invoiceId() {
+ return this.invoiceId;
+ }
+
+ /**
+ * Get the start of the date time range covered by the usage detail.
+ *
+ * @return the usageStart value
+ */
+ public DateTime usageStart() {
+ return this.usageStart;
+ }
+
+ /**
+ * Get the end of the date time range covered by the usage detail.
+ *
+ * @return the usageEnd value
+ */
+ public DateTime usageEnd() {
+ return this.usageEnd;
+ }
+
+ /**
+ * Get the name of the resource instance that the usage is about.
+ *
+ * @return the instanceName value
+ */
+ public String instanceName() {
+ return this.instanceName;
+ }
+
+ /**
+ * Get the uri of the resource instance that the usage is about.
+ *
+ * @return the instanceId value
+ */
+ public String instanceId() {
+ return this.instanceId;
+ }
+
+ /**
+ * Get the location of the resource instance that the usage is about.
+ *
+ * @return the instanceLocation value
+ */
+ public String instanceLocation() {
+ return this.instanceLocation;
+ }
+
+ /**
+ * Get the ISO currency in which the meter is charged, for example, USD.
+ *
+ * @return the currency value
+ */
+ public String currency() {
+ return this.currency;
+ }
+
+ /**
+ * Get the quantity of usage.
+ *
+ * @return the usageQuantity value
+ */
+ public BigDecimal usageQuantity() {
+ return this.usageQuantity;
+ }
+
+ /**
+ * Get the billable usage quantity.
+ *
+ * @return the billableQuantity value
+ */
+ public BigDecimal billableQuantity() {
+ return this.billableQuantity;
+ }
+
+ /**
+ * Get the amount of cost before tax.
+ *
+ * @return the pretaxCost value
+ */
+ public BigDecimal pretaxCost() {
+ return this.pretaxCost;
+ }
+
+ /**
+ * Get the estimated usage is subject to change.
+ *
+ * @return the isEstimated value
+ */
+ public Boolean isEstimated() {
+ return this.isEstimated;
+ }
+
+ /**
+ * Get the meter id.
+ *
+ * @return the meterId value
+ */
+ public String meterId() {
+ return this.meterId;
+ }
+
+ /**
+ * Get the details about the meter. By default this is not populated, unless it's specified in $expand.
+ *
+ * @return the meterDetails value
+ */
+ public MeterDetails meterDetails() {
+ return this.meterDetails;
+ }
+
+ /**
+ * Get subscription guid.
+ *
+ * @return the subscriptionGuid value
+ */
+ public String subscriptionGuid() {
+ return this.subscriptionGuid;
+ }
+
+ /**
+ * Get subscription name.
+ *
+ * @return the subscriptionName value
+ */
+ public String subscriptionName() {
+ return this.subscriptionName;
+ }
+
+ /**
+ * Get account name.
+ *
+ * @return the accountName value
+ */
+ public String accountName() {
+ return this.accountName;
+ }
+
+ /**
+ * Get department name.
+ *
+ * @return the departmentName value
+ */
+ public String departmentName() {
+ return this.departmentName;
+ }
+
+ /**
+ * Get product name.
+ *
+ * @return the product value
+ */
+ public String product() {
+ return this.product;
+ }
+
+ /**
+ * Get consumed service name.
+ *
+ * @return the consumedService value
+ */
+ public String consumedService() {
+ return this.consumedService;
+ }
+
+ /**
+ * Get the cost center of this department if it is a department and a costcenter exists.
+ *
+ * @return the costCenter value
+ */
+ public String costCenter() {
+ return this.costCenter;
+ }
+
+ /**
+ * Get additional details of this usage item. By default this is not populated, unless it's specified in $expand.
+ *
+ * @return the additionalProperties value
+ */
+ public String additionalProperties() {
+ return this.additionalProperties;
+ }
+
+ /**
+ * Get resource tags.
+ *
+ * @return the tags value
+ */
+ public Map tags() {
+ return this.tags;
+ }
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/UsageDetailsImpl.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/UsageDetailsImpl.java
new file mode 100644
index 000000000000..a7c984a011d3
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/UsageDetailsImpl.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * abc
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30.implementation;
+
+import com.microsoft.azure.arm.model.implementation.WrapperImpl;
+import com.microsoft.azure.management.consumption.v2017_11_30.UsageDetails;
+import rx.functions.Func1;
+import rx.Observable;
+import com.microsoft.azure.Page;
+import com.microsoft.azure.management.consumption.v2017_11_30.UsageDetail;
+
+class UsageDetailsImpl extends WrapperImpl implements UsageDetails {
+ private final ConsumptionManager manager;
+
+ UsageDetailsImpl(ConsumptionManager manager) {
+ super(manager.inner().usageDetails());
+ this.manager = manager;
+ }
+
+ public ConsumptionManager manager() {
+ return this.manager;
+ }
+
+ @Override
+ public Observable listAsync(final String scope) {
+ UsageDetailsInner client = this.inner();
+ return client.listAsync(scope)
+ .flatMapIterable(new Func1, Iterable>() {
+ @Override
+ public Iterable call(Page page) {
+ return page.items();
+ }
+ })
+ .map(new Func1() {
+ @Override
+ public UsageDetail call(UsageDetailInner inner) {
+ return new UsageDetailImpl(inner, manager());
+ }
+ });
+ }
+
+}
diff --git a/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/UsageDetailsInner.java b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/UsageDetailsInner.java
new file mode 100644
index 000000000000..7cfa1bba436c
--- /dev/null
+++ b/sdk/consumption/mgmt-v2017_11_30/src/main/java/com/microsoft/azure/management/consumption/v2017_11_30/implementation/UsageDetailsInner.java
@@ -0,0 +1,421 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.consumption.v2017_11_30.implementation;
+
+import retrofit2.Retrofit;
+import com.google.common.reflect.TypeToken;
+import com.microsoft.azure.AzureServiceFuture;
+import com.microsoft.azure.ListOperationCallback;
+import com.microsoft.azure.management.consumption.v2017_11_30.ErrorResponseException;
+import com.microsoft.azure.Page;
+import com.microsoft.azure.PagedList;
+import com.microsoft.rest.ServiceFuture;
+import com.microsoft.rest.ServiceResponse;
+import java.io.IOException;
+import java.util.List;
+import okhttp3.ResponseBody;
+import retrofit2.http.GET;
+import retrofit2.http.Header;
+import retrofit2.http.Headers;
+import retrofit2.http.Path;
+import retrofit2.http.Query;
+import retrofit2.http.Url;
+import retrofit2.Response;
+import rx.functions.Func1;
+import rx.Observable;
+
+/**
+ * An instance of this class provides access to all the operations defined
+ * in UsageDetails.
+ */
+public class UsageDetailsInner {
+ /** The Retrofit service to perform REST calls. */
+ private UsageDetailsService service;
+ /** The service client containing this operation class. */
+ private ConsumptionManagementClientImpl client;
+
+ /**
+ * Initializes an instance of UsageDetailsInner.
+ *
+ * @param retrofit the Retrofit instance built from a Retrofit Builder.
+ * @param client the instance of the service client containing this operation class.
+ */
+ public UsageDetailsInner(Retrofit retrofit, ConsumptionManagementClientImpl client) {
+ this.service = retrofit.create(UsageDetailsService.class);
+ this.client = client;
+ }
+
+ /**
+ * The interface defining all the services for UsageDetails to be
+ * used by Retrofit to perform actually REST calls.
+ */
+ interface UsageDetailsService {
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.consumption.v2017_11_30.UsageDetails list" })
+ @GET("{scope}/providers/Microsoft.Consumption/usageDetails")
+ Observable> list(@Path(value = "scope", encoded = true) String scope, @Query("$expand") String expand, @Query("$filter") String filter, @Query("$skiptoken") String skiptoken, @Query("$top") Integer top, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.consumption.v2017_11_30.UsageDetails listNext" })
+ @GET
+ Observable> listNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ }
+
+ /**
+ * Lists the usage details for a scope by billing period. Usage details are available via this API only for May 1, 2014 or later.
+ *
+ * @param scope The scope of the usage details. The scope can be '/subscriptions/{subscriptionId}' for a subscription, or '/subscriptions/{subscriptionId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}' for a billing period.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @throws ErrorResponseException thrown if the request is rejected by server
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
+ * @return the PagedList<UsageDetailInner> object if successful.
+ */
+ public PagedList list(final String scope) {
+ ServiceResponse> response = listSinglePageAsync(scope).toBlocking().single();
+ return new PagedList(response.body()) {
+ @Override
+ public Page nextPage(String nextPageLink) {
+ return listNextSinglePageAsync(nextPageLink).toBlocking().single().body();
+ }
+ };
+ }
+
+ /**
+ * Lists the usage details for a scope by billing period. Usage details are available via this API only for May 1, 2014 or later.
+ *
+ * @param scope The scope of the usage details. The scope can be '/subscriptions/{subscriptionId}' for a subscription, or '/subscriptions/{subscriptionId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}' for a billing period.
+ * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the {@link ServiceFuture} object
+ */
+ public ServiceFuture> listAsync(final String scope, final ListOperationCallback serviceCallback) {
+ return AzureServiceFuture.fromPageResponse(
+ listSinglePageAsync(scope),
+ new Func1>>>() {
+ @Override
+ public Observable>> call(String nextPageLink) {
+ return listNextSinglePageAsync(nextPageLink);
+ }
+ },
+ serviceCallback);
+ }
+
+ /**
+ * Lists the usage details for a scope by billing period. Usage details are available via this API only for May 1, 2014 or later.
+ *
+ * @param scope The scope of the usage details. The scope can be '/subscriptions/{subscriptionId}' for a subscription, or '/subscriptions/{subscriptionId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}' for a billing period.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the PagedList<UsageDetailInner> object
+ */
+ public Observable> listAsync(final String scope) {
+ return listWithServiceResponseAsync(scope)
+ .map(new Func1>, Page>() {
+ @Override
+ public Page call(ServiceResponse> response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * Lists the usage details for a scope by billing period. Usage details are available via this API only for May 1, 2014 or later.
+ *
+ * @param scope The scope of the usage details. The scope can be '/subscriptions/{subscriptionId}' for a subscription, or '/subscriptions/{subscriptionId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}' for a billing period.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the PagedList<UsageDetailInner> object
+ */
+ public Observable>> listWithServiceResponseAsync(final String scope) {
+ return listSinglePageAsync(scope)
+ .concatMap(new Func1>, Observable>>>() {
+ @Override
+ public Observable>> call(ServiceResponse> page) {
+ String nextPageLink = page.body().nextPageLink();
+ if (nextPageLink == null) {
+ return Observable.just(page);
+ }
+ return Observable.just(page).concatWith(listNextWithServiceResponseAsync(nextPageLink));
+ }
+ });
+ }
+
+ /**
+ * Lists the usage details for a scope by billing period. Usage details are available via this API only for May 1, 2014 or later.
+ *
+ * @param scope The scope of the usage details. The scope can be '/subscriptions/{subscriptionId}' for a subscription, or '/subscriptions/{subscriptionId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}' for a billing period.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the PagedList<UsageDetailInner> object wrapped in {@link ServiceResponse} if successful.
+ */
+ public Observable>> listSinglePageAsync(final String scope) {
+ if (scope == null) {
+ throw new IllegalArgumentException("Parameter scope is required and cannot be null.");
+ }
+ if (this.client.apiVersion() == null) {
+ throw new IllegalArgumentException("Parameter this.client.apiVersion() is required and cannot be null.");
+ }
+ final String expand = null;
+ final String filter = null;
+ final String skiptoken = null;
+ final Integer top = null;
+ return service.list(scope, expand, filter, skiptoken, top, this.client.apiVersion(), this.client.acceptLanguage(), this.client.userAgent())
+ .flatMap(new Func1, Observable>>>() {
+ @Override
+ public Observable>> call(Response response) {
+ try {
+ ServiceResponse> result = listDelegate(response);
+ return Observable.just(new ServiceResponse>(result.body(), result.response()));
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ /**
+ * Lists the usage details for a scope by billing period. Usage details are available via this API only for May 1, 2014 or later.
+ *
+ * @param scope The scope of the usage details. The scope can be '/subscriptions/{subscriptionId}' for a subscription, or '/subscriptions/{subscriptionId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}' for a billing period.
+ * @param expand May be used to expand the properties/additionalProperties or properties/meterDetails within a list of usage details. By default, these fields are not included when listing usage details.
+ * @param filter May be used to filter usageDetails by properties/usageEnd (Utc time), properties/usageStart (Utc time), properties/resourceGroup, properties/instanceName or properties/instanceId. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. It does not currently support 'ne', 'or', or 'not'.
+ * @param 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.
+ * @param top May be used to limit the number of results to the most recent N usageDetails.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @throws ErrorResponseException thrown if the request is rejected by server
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
+ * @return the PagedList<UsageDetailInner> object if successful.
+ */
+ public PagedList list(final String scope, final String expand, final String filter, final String skiptoken, final Integer top) {
+ ServiceResponse> response = listSinglePageAsync(scope, expand, filter, skiptoken, top).toBlocking().single();
+ return new PagedList(response.body()) {
+ @Override
+ public Page nextPage(String nextPageLink) {
+ return listNextSinglePageAsync(nextPageLink).toBlocking().single().body();
+ }
+ };
+ }
+
+ /**
+ * Lists the usage details for a scope by billing period. Usage details are available via this API only for May 1, 2014 or later.
+ *
+ * @param scope The scope of the usage details. The scope can be '/subscriptions/{subscriptionId}' for a subscription, or '/subscriptions/{subscriptionId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}' for a billing period.
+ * @param expand May be used to expand the properties/additionalProperties or properties/meterDetails within a list of usage details. By default, these fields are not included when listing usage details.
+ * @param filter May be used to filter usageDetails by properties/usageEnd (Utc time), properties/usageStart (Utc time), properties/resourceGroup, properties/instanceName or properties/instanceId. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. It does not currently support 'ne', 'or', or 'not'.
+ * @param 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.
+ * @param top May be used to limit the number of results to the most recent N usageDetails.
+ * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the {@link ServiceFuture} object
+ */
+ public ServiceFuture> listAsync(final String scope, final String expand, final String filter, final String skiptoken, final Integer top, final ListOperationCallback serviceCallback) {
+ return AzureServiceFuture.fromPageResponse(
+ listSinglePageAsync(scope, expand, filter, skiptoken, top),
+ new Func1>>>() {
+ @Override
+ public Observable>> call(String nextPageLink) {
+ return listNextSinglePageAsync(nextPageLink);
+ }
+ },
+ serviceCallback);
+ }
+
+ /**
+ * Lists the usage details for a scope by billing period. Usage details are available via this API only for May 1, 2014 or later.
+ *
+ * @param scope The scope of the usage details. The scope can be '/subscriptions/{subscriptionId}' for a subscription, or '/subscriptions/{subscriptionId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}' for a billing period.
+ * @param expand May be used to expand the properties/additionalProperties or properties/meterDetails within a list of usage details. By default, these fields are not included when listing usage details.
+ * @param filter May be used to filter usageDetails by properties/usageEnd (Utc time), properties/usageStart (Utc time), properties/resourceGroup, properties/instanceName or properties/instanceId. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. It does not currently support 'ne', 'or', or 'not'.
+ * @param 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.
+ * @param top May be used to limit the number of results to the most recent N usageDetails.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the PagedList<UsageDetailInner> object
+ */
+ public Observable> listAsync(final String scope, final String expand, final String filter, final String skiptoken, final Integer top) {
+ return listWithServiceResponseAsync(scope, expand, filter, skiptoken, top)
+ .map(new Func1>, Page>() {
+ @Override
+ public Page call(ServiceResponse> response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * Lists the usage details for a scope by billing period. Usage details are available via this API only for May 1, 2014 or later.
+ *
+ * @param scope The scope of the usage details. The scope can be '/subscriptions/{subscriptionId}' for a subscription, or '/subscriptions/{subscriptionId}/providers/Microsoft.Billing/billingPeriods/{billingPeriodName}' for a billing period.
+ * @param expand May be used to expand the properties/additionalProperties or properties/meterDetails within a list of usage details. By default, these fields are not included when listing usage details.
+ * @param filter May be used to filter usageDetails by properties/usageEnd (Utc time), properties/usageStart (Utc time), properties/resourceGroup, properties/instanceName or properties/instanceId. The filter supports 'eq', 'lt', 'gt', 'le', 'ge', and 'and'. It does not currently support 'ne', 'or', or 'not'.
+ * @param 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.
+ * @param top May be used to limit the number of results to the most recent N usageDetails.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the PagedList<UsageDetailInner> object
+ */
+ public Observable>> listWithServiceResponseAsync(final String scope, final String expand, final String filter, final String skiptoken, final Integer top) {
+ return listSinglePageAsync(scope, expand, filter, skiptoken, top)
+ .concatMap(new Func1>, Observable>>>() {
+ @Override
+ public Observable>> call(ServiceResponse