diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/pom.xml b/sdk/servicefabric/mgmt-v2017_07_01_preview/pom.xml
new file mode 100644
index 000000000000..f0f222c9ea67
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/pom.xml
@@ -0,0 +1,135 @@
+
+
+ 4.0.0
+ com.microsoft.azure.servicefabric.v2017_07_01_preview
+
+ com.microsoft.azure
+ azure-arm-parent
+ 1.1.0
+ ../../../pom.management.xml
+
+ azure-mgmt-servicefabric
+ 1.0.0-beta
+ jar
+ Microsoft Azure SDK for ServiceFabric Management
+ This package contains Microsoft ServiceFabric 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/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationHealthPolicy.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationHealthPolicy.java
new file mode 100644
index 000000000000..7ec0915ff510
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationHealthPolicy.java
@@ -0,0 +1,138 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Defines a health policy used to evaluate the health of an application or one
+ * of its children entities.
+ */
+public class ApplicationHealthPolicy {
+ /**
+ * Indicates whether warnings are treated with the same severity as errors.
+ */
+ @JsonProperty(value = "ConsiderWarningAsError")
+ private Boolean considerWarningAsError;
+
+ /**
+ * The maximum allowed percentage of unhealthy deployed applications.
+ * Allowed values are Byte values from zero to 100.
+ * The percentage represents the maximum tolerated percentage of deployed
+ * applications that can be unhealthy before the application is considered
+ * in error.
+ * This is calculated by dividing the number of unhealthy deployed
+ * applications over the number of nodes where the application is currently
+ * deployed on in the cluster.
+ * The computation rounds up to tolerate one failure on small numbers of
+ * nodes. Default percentage is zero.
+ */
+ @JsonProperty(value = "MaxPercentUnhealthyDeployedApplications")
+ private Integer maxPercentUnhealthyDeployedApplications;
+
+ /**
+ * The defaultServiceTypeHealthPolicy property.
+ */
+ @JsonProperty(value = "DefaultServiceTypeHealthPolicy")
+ private ServiceTypeHealthPolicy defaultServiceTypeHealthPolicy;
+
+ /**
+ * The serviceTypeHealthPolicyMap property.
+ */
+ @JsonProperty(value = "ServiceTypeHealthPolicyMap")
+ private List serviceTypeHealthPolicyMap;
+
+ /**
+ * Get indicates whether warnings are treated with the same severity as errors.
+ *
+ * @return the considerWarningAsError value
+ */
+ public Boolean considerWarningAsError() {
+ return this.considerWarningAsError;
+ }
+
+ /**
+ * Set indicates whether warnings are treated with the same severity as errors.
+ *
+ * @param considerWarningAsError the considerWarningAsError value to set
+ * @return the ApplicationHealthPolicy object itself.
+ */
+ public ApplicationHealthPolicy withConsiderWarningAsError(Boolean considerWarningAsError) {
+ this.considerWarningAsError = considerWarningAsError;
+ return this;
+ }
+
+ /**
+ * Get the maximum allowed percentage of unhealthy deployed applications. Allowed values are Byte values from zero to 100.
+ The percentage represents the maximum tolerated percentage of deployed applications that can be unhealthy before the application is considered in error.
+ This is calculated by dividing the number of unhealthy deployed applications over the number of nodes where the application is currently deployed on in the cluster.
+ The computation rounds up to tolerate one failure on small numbers of nodes. Default percentage is zero.
+ *
+ * @return the maxPercentUnhealthyDeployedApplications value
+ */
+ public Integer maxPercentUnhealthyDeployedApplications() {
+ return this.maxPercentUnhealthyDeployedApplications;
+ }
+
+ /**
+ * Set the maximum allowed percentage of unhealthy deployed applications. Allowed values are Byte values from zero to 100.
+ The percentage represents the maximum tolerated percentage of deployed applications that can be unhealthy before the application is considered in error.
+ This is calculated by dividing the number of unhealthy deployed applications over the number of nodes where the application is currently deployed on in the cluster.
+ The computation rounds up to tolerate one failure on small numbers of nodes. Default percentage is zero.
+ *
+ * @param maxPercentUnhealthyDeployedApplications the maxPercentUnhealthyDeployedApplications value to set
+ * @return the ApplicationHealthPolicy object itself.
+ */
+ public ApplicationHealthPolicy withMaxPercentUnhealthyDeployedApplications(Integer maxPercentUnhealthyDeployedApplications) {
+ this.maxPercentUnhealthyDeployedApplications = maxPercentUnhealthyDeployedApplications;
+ return this;
+ }
+
+ /**
+ * Get the defaultServiceTypeHealthPolicy value.
+ *
+ * @return the defaultServiceTypeHealthPolicy value
+ */
+ public ServiceTypeHealthPolicy defaultServiceTypeHealthPolicy() {
+ return this.defaultServiceTypeHealthPolicy;
+ }
+
+ /**
+ * Set the defaultServiceTypeHealthPolicy value.
+ *
+ * @param defaultServiceTypeHealthPolicy the defaultServiceTypeHealthPolicy value to set
+ * @return the ApplicationHealthPolicy object itself.
+ */
+ public ApplicationHealthPolicy withDefaultServiceTypeHealthPolicy(ServiceTypeHealthPolicy defaultServiceTypeHealthPolicy) {
+ this.defaultServiceTypeHealthPolicy = defaultServiceTypeHealthPolicy;
+ return this;
+ }
+
+ /**
+ * Get the serviceTypeHealthPolicyMap value.
+ *
+ * @return the serviceTypeHealthPolicyMap value
+ */
+ public List serviceTypeHealthPolicyMap() {
+ return this.serviceTypeHealthPolicyMap;
+ }
+
+ /**
+ * Set the serviceTypeHealthPolicyMap value.
+ *
+ * @param serviceTypeHealthPolicyMap the serviceTypeHealthPolicyMap value to set
+ * @return the ApplicationHealthPolicy object itself.
+ */
+ public ApplicationHealthPolicy withServiceTypeHealthPolicyMap(List serviceTypeHealthPolicyMap) {
+ this.serviceTypeHealthPolicyMap = serviceTypeHealthPolicyMap;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationMetricDescription.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationMetricDescription.java
new file mode 100644
index 000000000000..ac6ede039935
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationMetricDescription.java
@@ -0,0 +1,168 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Describes capacity information for a custom resource balancing metric. This
+ * can be used to limit the total consumption of this metric by the services of
+ * this application.
+ */
+public class ApplicationMetricDescription {
+ /**
+ * The name of the metric.
+ */
+ @JsonProperty(value = "Name")
+ private String name;
+
+ /**
+ * The maximum node capacity for Service Fabric application.
+ * This is the maximum Load for an instance of this application on a single
+ * node. Even if the capacity of node is greater than this value, Service
+ * Fabric will limit the total load of services within the application on
+ * each node to this value.
+ * If set to zero, capacity for this metric is unlimited on each node.
+ * When creating a new application with application capacity defined, the
+ * product of MaximumNodes and this value must always be smaller than or
+ * equal to TotalApplicationCapacity.
+ * When updating existing application with application capacity, the
+ * product of MaximumNodes and this value must always be smaller than or
+ * equal to TotalApplicationCapacity.
+ */
+ @JsonProperty(value = "MaximumCapacity")
+ private Long maximumCapacity;
+
+ /**
+ * The node reservation capacity for Service Fabric application.
+ * This is the amount of load which is reserved on nodes which have
+ * instances of this application.
+ * If MinimumNodes is specified, then the product of these values will be
+ * the capacity reserved in the cluster for the application.
+ * If set to zero, no capacity is reserved for this metric.
+ * When setting application capacity or when updating application capacity;
+ * this value must be smaller than or equal to MaximumCapacity for each
+ * metric.
+ */
+ @JsonProperty(value = "ReservationCapacity")
+ private Long reservationCapacity;
+
+ /**
+ * The total metric capacity for Service Fabric application.
+ * This is the total metric capacity for this application in the cluster.
+ * Service Fabric will try to limit the sum of loads of services within the
+ * application to this value.
+ * When creating a new application with application capacity defined, the
+ * product of MaximumNodes and MaximumCapacity must always be smaller than
+ * or equal to this value.
+ */
+ @JsonProperty(value = "TotalApplicationCapacity")
+ private Long totalApplicationCapacity;
+
+ /**
+ * Get the name of the metric.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the name of the metric.
+ *
+ * @param name the name value to set
+ * @return the ApplicationMetricDescription object itself.
+ */
+ public ApplicationMetricDescription withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the maximum node capacity for Service Fabric application.
+ This is the maximum Load for an instance of this application on a single node. Even if the capacity of node is greater than this value, Service Fabric will limit the total load of services within the application on each node to this value.
+ If set to zero, capacity for this metric is unlimited on each node.
+ When creating a new application with application capacity defined, the product of MaximumNodes and this value must always be smaller than or equal to TotalApplicationCapacity.
+ When updating existing application with application capacity, the product of MaximumNodes and this value must always be smaller than or equal to TotalApplicationCapacity.
+ *
+ * @return the maximumCapacity value
+ */
+ public Long maximumCapacity() {
+ return this.maximumCapacity;
+ }
+
+ /**
+ * Set the maximum node capacity for Service Fabric application.
+ This is the maximum Load for an instance of this application on a single node. Even if the capacity of node is greater than this value, Service Fabric will limit the total load of services within the application on each node to this value.
+ If set to zero, capacity for this metric is unlimited on each node.
+ When creating a new application with application capacity defined, the product of MaximumNodes and this value must always be smaller than or equal to TotalApplicationCapacity.
+ When updating existing application with application capacity, the product of MaximumNodes and this value must always be smaller than or equal to TotalApplicationCapacity.
+ *
+ * @param maximumCapacity the maximumCapacity value to set
+ * @return the ApplicationMetricDescription object itself.
+ */
+ public ApplicationMetricDescription withMaximumCapacity(Long maximumCapacity) {
+ this.maximumCapacity = maximumCapacity;
+ return this;
+ }
+
+ /**
+ * Get the node reservation capacity for Service Fabric application.
+ This is the amount of load which is reserved on nodes which have instances of this application.
+ If MinimumNodes is specified, then the product of these values will be the capacity reserved in the cluster for the application.
+ If set to zero, no capacity is reserved for this metric.
+ When setting application capacity or when updating application capacity; this value must be smaller than or equal to MaximumCapacity for each metric.
+ *
+ * @return the reservationCapacity value
+ */
+ public Long reservationCapacity() {
+ return this.reservationCapacity;
+ }
+
+ /**
+ * Set the node reservation capacity for Service Fabric application.
+ This is the amount of load which is reserved on nodes which have instances of this application.
+ If MinimumNodes is specified, then the product of these values will be the capacity reserved in the cluster for the application.
+ If set to zero, no capacity is reserved for this metric.
+ When setting application capacity or when updating application capacity; this value must be smaller than or equal to MaximumCapacity for each metric.
+ *
+ * @param reservationCapacity the reservationCapacity value to set
+ * @return the ApplicationMetricDescription object itself.
+ */
+ public ApplicationMetricDescription withReservationCapacity(Long reservationCapacity) {
+ this.reservationCapacity = reservationCapacity;
+ return this;
+ }
+
+ /**
+ * Get the total metric capacity for Service Fabric application.
+ This is the total metric capacity for this application in the cluster. Service Fabric will try to limit the sum of loads of services within the application to this value.
+ When creating a new application with application capacity defined, the product of MaximumNodes and MaximumCapacity must always be smaller than or equal to this value.
+ *
+ * @return the totalApplicationCapacity value
+ */
+ public Long totalApplicationCapacity() {
+ return this.totalApplicationCapacity;
+ }
+
+ /**
+ * Set the total metric capacity for Service Fabric application.
+ This is the total metric capacity for this application in the cluster. Service Fabric will try to limit the sum of loads of services within the application to this value.
+ When creating a new application with application capacity defined, the product of MaximumNodes and MaximumCapacity must always be smaller than or equal to this value.
+ *
+ * @param totalApplicationCapacity the totalApplicationCapacity value to set
+ * @return the ApplicationMetricDescription object itself.
+ */
+ public ApplicationMetricDescription withTotalApplicationCapacity(Long totalApplicationCapacity) {
+ this.totalApplicationCapacity = totalApplicationCapacity;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationParameter.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationParameter.java
new file mode 100644
index 000000000000..a2007e35bce6
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationParameter.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Describes an application parameter override to be applied when creating or
+ * upgrading an application.
+ */
+public class ApplicationParameter {
+ /**
+ * The name of the parameter.
+ */
+ @JsonProperty(value = "Key", required = true)
+ private String key;
+
+ /**
+ * The value of the parameter.
+ */
+ @JsonProperty(value = "Value", required = true)
+ private String value;
+
+ /**
+ * Get the name of the parameter.
+ *
+ * @return the key value
+ */
+ public String key() {
+ return this.key;
+ }
+
+ /**
+ * Set the name of the parameter.
+ *
+ * @param key the key value to set
+ * @return the ApplicationParameter object itself.
+ */
+ public ApplicationParameter withKey(String key) {
+ this.key = key;
+ return this;
+ }
+
+ /**
+ * Get the value of the parameter.
+ *
+ * @return the value value
+ */
+ public String value() {
+ return this.value;
+ }
+
+ /**
+ * Set the value of the parameter.
+ *
+ * @param value the value value to set
+ * @return the ApplicationParameter object itself.
+ */
+ public ApplicationParameter withValue(String value) {
+ this.value = value;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationResource.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationResource.java
new file mode 100644
index 000000000000..4f8045323304
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationResource.java
@@ -0,0 +1,279 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.ProxyResource;
+
+/**
+ * The application resource.
+ */
+@JsonFlatten
+public class ApplicationResource extends ProxyResource {
+ /**
+ * The typeVersion property.
+ */
+ @JsonProperty(value = "properties.typeVersion")
+ private String typeVersion;
+
+ /**
+ * The parameters property.
+ */
+ @JsonProperty(value = "properties.parameters")
+ private List parameters;
+
+ /**
+ * The upgradePolicy property.
+ */
+ @JsonProperty(value = "properties.upgradePolicy")
+ private ApplicationUpgradePolicy upgradePolicy;
+
+ /**
+ * The minimum number of nodes where Service Fabric will reserve capacity
+ * for this application. Note that this does not mean that the services of
+ * this application will be placed on all of those nodes. If this property
+ * is set to zero, no capacity will be reserved. The value of this property
+ * cannot be more than the value of the MaximumNodes property.
+ */
+ @JsonProperty(value = "properties.minimumNodes")
+ private Long minimumNodes;
+
+ /**
+ * The maximum number of nodes where Service Fabric will reserve capacity
+ * for this application. Note that this does not mean that the services of
+ * this application will be placed on all of those nodes. By default, the
+ * value of this property is zero and it means that the services can be
+ * placed on any node.
+ */
+ @JsonProperty(value = "properties.maximumNodes")
+ private Long maximumNodes;
+
+ /**
+ * The version of the application type.
+ */
+ @JsonProperty(value = "properties.removeApplicationCapacity")
+ private Boolean removeApplicationCapacity;
+
+ /**
+ * The metrics property.
+ */
+ @JsonProperty(value = "properties.metrics")
+ private List metrics;
+
+ /**
+ * The current deployment or provisioning state, which only appears in the
+ * response.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private String provisioningState;
+
+ /**
+ * The typeName property.
+ */
+ @JsonProperty(value = "properties.typeName")
+ private String typeName;
+
+ /**
+ * Resource location.
+ */
+ @JsonProperty(value = "location", required = true)
+ private String location;
+
+ /**
+ * Get the typeVersion value.
+ *
+ * @return the typeVersion value
+ */
+ public String typeVersion() {
+ return this.typeVersion;
+ }
+
+ /**
+ * Set the typeVersion value.
+ *
+ * @param typeVersion the typeVersion value to set
+ * @return the ApplicationResource object itself.
+ */
+ public ApplicationResource withTypeVersion(String typeVersion) {
+ this.typeVersion = typeVersion;
+ return this;
+ }
+
+ /**
+ * Get the parameters value.
+ *
+ * @return the parameters value
+ */
+ public List parameters() {
+ return this.parameters;
+ }
+
+ /**
+ * Set the parameters value.
+ *
+ * @param parameters the parameters value to set
+ * @return the ApplicationResource object itself.
+ */
+ public ApplicationResource withParameters(List parameters) {
+ this.parameters = parameters;
+ return this;
+ }
+
+ /**
+ * Get the upgradePolicy value.
+ *
+ * @return the upgradePolicy value
+ */
+ public ApplicationUpgradePolicy upgradePolicy() {
+ return this.upgradePolicy;
+ }
+
+ /**
+ * Set the upgradePolicy value.
+ *
+ * @param upgradePolicy the upgradePolicy value to set
+ * @return the ApplicationResource object itself.
+ */
+ public ApplicationResource withUpgradePolicy(ApplicationUpgradePolicy upgradePolicy) {
+ this.upgradePolicy = upgradePolicy;
+ return this;
+ }
+
+ /**
+ * Get the minimum number of nodes where Service Fabric will reserve capacity for this application. Note that this does not mean that the services of this application will be placed on all of those nodes. If this property is set to zero, no capacity will be reserved. The value of this property cannot be more than the value of the MaximumNodes property.
+ *
+ * @return the minimumNodes value
+ */
+ public Long minimumNodes() {
+ return this.minimumNodes;
+ }
+
+ /**
+ * Set the minimum number of nodes where Service Fabric will reserve capacity for this application. Note that this does not mean that the services of this application will be placed on all of those nodes. If this property is set to zero, no capacity will be reserved. The value of this property cannot be more than the value of the MaximumNodes property.
+ *
+ * @param minimumNodes the minimumNodes value to set
+ * @return the ApplicationResource object itself.
+ */
+ public ApplicationResource withMinimumNodes(Long minimumNodes) {
+ this.minimumNodes = minimumNodes;
+ return this;
+ }
+
+ /**
+ * Get the maximum number of nodes where Service Fabric will reserve capacity for this application. Note that this does not mean that the services of this application will be placed on all of those nodes. By default, the value of this property is zero and it means that the services can be placed on any node.
+ *
+ * @return the maximumNodes value
+ */
+ public Long maximumNodes() {
+ return this.maximumNodes;
+ }
+
+ /**
+ * Set the maximum number of nodes where Service Fabric will reserve capacity for this application. Note that this does not mean that the services of this application will be placed on all of those nodes. By default, the value of this property is zero and it means that the services can be placed on any node.
+ *
+ * @param maximumNodes the maximumNodes value to set
+ * @return the ApplicationResource object itself.
+ */
+ public ApplicationResource withMaximumNodes(Long maximumNodes) {
+ this.maximumNodes = maximumNodes;
+ return this;
+ }
+
+ /**
+ * Get the version of the application type.
+ *
+ * @return the removeApplicationCapacity value
+ */
+ public Boolean removeApplicationCapacity() {
+ return this.removeApplicationCapacity;
+ }
+
+ /**
+ * Set the version of the application type.
+ *
+ * @param removeApplicationCapacity the removeApplicationCapacity value to set
+ * @return the ApplicationResource object itself.
+ */
+ public ApplicationResource withRemoveApplicationCapacity(Boolean removeApplicationCapacity) {
+ this.removeApplicationCapacity = removeApplicationCapacity;
+ return this;
+ }
+
+ /**
+ * Get the metrics value.
+ *
+ * @return the metrics value
+ */
+ public List metrics() {
+ return this.metrics;
+ }
+
+ /**
+ * Set the metrics value.
+ *
+ * @param metrics the metrics value to set
+ * @return the ApplicationResource object itself.
+ */
+ public ApplicationResource withMetrics(List metrics) {
+ this.metrics = metrics;
+ return this;
+ }
+
+ /**
+ * Get the current deployment or provisioning state, which only appears in the response.
+ *
+ * @return the provisioningState value
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the typeName value.
+ *
+ * @return the typeName value
+ */
+ public String typeName() {
+ return this.typeName;
+ }
+
+ /**
+ * Set the typeName value.
+ *
+ * @param typeName the typeName value to set
+ * @return the ApplicationResource object itself.
+ */
+ public ApplicationResource withTypeName(String typeName) {
+ this.typeName = typeName;
+ return this;
+ }
+
+ /**
+ * Get resource location.
+ *
+ * @return the location value
+ */
+ public String location() {
+ return this.location;
+ }
+
+ /**
+ * Set resource location.
+ *
+ * @param location the location value to set
+ * @return the ApplicationResource object itself.
+ */
+ public ApplicationResource withLocation(String location) {
+ this.location = location;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationResourceList.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationResourceList.java
new file mode 100644
index 000000000000..c7e0d7750e30
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationResourceList.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.servicefabric.v2017_07_01_preview;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The list of application resources.
+ */
+public class ApplicationResourceList {
+ /**
+ * The value property.
+ */
+ @JsonProperty(value = "value")
+ private List value;
+
+ /**
+ * Get the value value.
+ *
+ * @return the value value
+ */
+ public List value() {
+ return this.value;
+ }
+
+ /**
+ * Set the value value.
+ *
+ * @param value the value value to set
+ * @return the ApplicationResourceList object itself.
+ */
+ public ApplicationResourceList withValue(List value) {
+ this.value = value;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationResourceUpdate.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationResourceUpdate.java
new file mode 100644
index 000000000000..5b1c0941cdcb
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationResourceUpdate.java
@@ -0,0 +1,237 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.ProxyResource;
+
+/**
+ * The application resource for patch operations.
+ */
+@JsonFlatten
+public class ApplicationResourceUpdate extends ProxyResource {
+ /**
+ * The typeVersion property.
+ */
+ @JsonProperty(value = "properties.typeVersion")
+ private String typeVersion;
+
+ /**
+ * The parameters property.
+ */
+ @JsonProperty(value = "properties.parameters")
+ private List parameters;
+
+ /**
+ * The upgradePolicy property.
+ */
+ @JsonProperty(value = "properties.upgradePolicy")
+ private ApplicationUpgradePolicy upgradePolicy;
+
+ /**
+ * The minimum number of nodes where Service Fabric will reserve capacity
+ * for this application. Note that this does not mean that the services of
+ * this application will be placed on all of those nodes. If this property
+ * is set to zero, no capacity will be reserved. The value of this property
+ * cannot be more than the value of the MaximumNodes property.
+ */
+ @JsonProperty(value = "properties.minimumNodes")
+ private Long minimumNodes;
+
+ /**
+ * The maximum number of nodes where Service Fabric will reserve capacity
+ * for this application. Note that this does not mean that the services of
+ * this application will be placed on all of those nodes. By default, the
+ * value of this property is zero and it means that the services can be
+ * placed on any node.
+ */
+ @JsonProperty(value = "properties.maximumNodes")
+ private Long maximumNodes;
+
+ /**
+ * The version of the application type.
+ */
+ @JsonProperty(value = "properties.removeApplicationCapacity")
+ private Boolean removeApplicationCapacity;
+
+ /**
+ * The metrics property.
+ */
+ @JsonProperty(value = "properties.metrics")
+ private List metrics;
+
+ /**
+ * Resource location.
+ */
+ @JsonProperty(value = "location", required = true)
+ private String location;
+
+ /**
+ * Get the typeVersion value.
+ *
+ * @return the typeVersion value
+ */
+ public String typeVersion() {
+ return this.typeVersion;
+ }
+
+ /**
+ * Set the typeVersion value.
+ *
+ * @param typeVersion the typeVersion value to set
+ * @return the ApplicationResourceUpdate object itself.
+ */
+ public ApplicationResourceUpdate withTypeVersion(String typeVersion) {
+ this.typeVersion = typeVersion;
+ return this;
+ }
+
+ /**
+ * Get the parameters value.
+ *
+ * @return the parameters value
+ */
+ public List parameters() {
+ return this.parameters;
+ }
+
+ /**
+ * Set the parameters value.
+ *
+ * @param parameters the parameters value to set
+ * @return the ApplicationResourceUpdate object itself.
+ */
+ public ApplicationResourceUpdate withParameters(List parameters) {
+ this.parameters = parameters;
+ return this;
+ }
+
+ /**
+ * Get the upgradePolicy value.
+ *
+ * @return the upgradePolicy value
+ */
+ public ApplicationUpgradePolicy upgradePolicy() {
+ return this.upgradePolicy;
+ }
+
+ /**
+ * Set the upgradePolicy value.
+ *
+ * @param upgradePolicy the upgradePolicy value to set
+ * @return the ApplicationResourceUpdate object itself.
+ */
+ public ApplicationResourceUpdate withUpgradePolicy(ApplicationUpgradePolicy upgradePolicy) {
+ this.upgradePolicy = upgradePolicy;
+ return this;
+ }
+
+ /**
+ * Get the minimum number of nodes where Service Fabric will reserve capacity for this application. Note that this does not mean that the services of this application will be placed on all of those nodes. If this property is set to zero, no capacity will be reserved. The value of this property cannot be more than the value of the MaximumNodes property.
+ *
+ * @return the minimumNodes value
+ */
+ public Long minimumNodes() {
+ return this.minimumNodes;
+ }
+
+ /**
+ * Set the minimum number of nodes where Service Fabric will reserve capacity for this application. Note that this does not mean that the services of this application will be placed on all of those nodes. If this property is set to zero, no capacity will be reserved. The value of this property cannot be more than the value of the MaximumNodes property.
+ *
+ * @param minimumNodes the minimumNodes value to set
+ * @return the ApplicationResourceUpdate object itself.
+ */
+ public ApplicationResourceUpdate withMinimumNodes(Long minimumNodes) {
+ this.minimumNodes = minimumNodes;
+ return this;
+ }
+
+ /**
+ * Get the maximum number of nodes where Service Fabric will reserve capacity for this application. Note that this does not mean that the services of this application will be placed on all of those nodes. By default, the value of this property is zero and it means that the services can be placed on any node.
+ *
+ * @return the maximumNodes value
+ */
+ public Long maximumNodes() {
+ return this.maximumNodes;
+ }
+
+ /**
+ * Set the maximum number of nodes where Service Fabric will reserve capacity for this application. Note that this does not mean that the services of this application will be placed on all of those nodes. By default, the value of this property is zero and it means that the services can be placed on any node.
+ *
+ * @param maximumNodes the maximumNodes value to set
+ * @return the ApplicationResourceUpdate object itself.
+ */
+ public ApplicationResourceUpdate withMaximumNodes(Long maximumNodes) {
+ this.maximumNodes = maximumNodes;
+ return this;
+ }
+
+ /**
+ * Get the version of the application type.
+ *
+ * @return the removeApplicationCapacity value
+ */
+ public Boolean removeApplicationCapacity() {
+ return this.removeApplicationCapacity;
+ }
+
+ /**
+ * Set the version of the application type.
+ *
+ * @param removeApplicationCapacity the removeApplicationCapacity value to set
+ * @return the ApplicationResourceUpdate object itself.
+ */
+ public ApplicationResourceUpdate withRemoveApplicationCapacity(Boolean removeApplicationCapacity) {
+ this.removeApplicationCapacity = removeApplicationCapacity;
+ return this;
+ }
+
+ /**
+ * Get the metrics value.
+ *
+ * @return the metrics value
+ */
+ public List metrics() {
+ return this.metrics;
+ }
+
+ /**
+ * Set the metrics value.
+ *
+ * @param metrics the metrics value to set
+ * @return the ApplicationResourceUpdate object itself.
+ */
+ public ApplicationResourceUpdate withMetrics(List metrics) {
+ this.metrics = metrics;
+ return this;
+ }
+
+ /**
+ * Get resource location.
+ *
+ * @return the location value
+ */
+ public String location() {
+ return this.location;
+ }
+
+ /**
+ * Set resource location.
+ *
+ * @param location the location value to set
+ * @return the ApplicationResourceUpdate object itself.
+ */
+ public ApplicationResourceUpdate withLocation(String location) {
+ this.location = location;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationTypeResource.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationTypeResource.java
new file mode 100644
index 000000000000..2b14b08587f3
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationTypeResource.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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.ProxyResource;
+
+/**
+ * The application type name resource.
+ */
+@JsonFlatten
+public class ApplicationTypeResource extends ProxyResource {
+ /**
+ * The current deployment or provisioning state, which only appears in the
+ * response.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private String provisioningState;
+
+ /**
+ * Resource location.
+ */
+ @JsonProperty(value = "location", required = true)
+ private String location;
+
+ /**
+ * Get the current deployment or provisioning state, which only appears in the response.
+ *
+ * @return the provisioningState value
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get resource location.
+ *
+ * @return the location value
+ */
+ public String location() {
+ return this.location;
+ }
+
+ /**
+ * Set resource location.
+ *
+ * @param location the location value to set
+ * @return the ApplicationTypeResource object itself.
+ */
+ public ApplicationTypeResource withLocation(String location) {
+ this.location = location;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationTypeResourceList.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationTypeResourceList.java
new file mode 100644
index 000000000000..a5068420c8e5
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationTypeResourceList.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.servicefabric.v2017_07_01_preview;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The list of application type names.
+ */
+public class ApplicationTypeResourceList {
+ /**
+ * The value property.
+ */
+ @JsonProperty(value = "value")
+ private List value;
+
+ /**
+ * Get the value value.
+ *
+ * @return the value value
+ */
+ public List value() {
+ return this.value;
+ }
+
+ /**
+ * Set the value value.
+ *
+ * @param value the value value to set
+ * @return the ApplicationTypeResourceList object itself.
+ */
+ public ApplicationTypeResourceList withValue(List value) {
+ this.value = value;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationUpgradePolicy.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationUpgradePolicy.java
new file mode 100644
index 000000000000..e0effd3ea29c
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ApplicationUpgradePolicy.java
@@ -0,0 +1,121 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Describes the policy for a monitored application upgrade.
+ */
+public class ApplicationUpgradePolicy {
+ /**
+ * The upgradeReplicaSetCheckTimeout property.
+ */
+ @JsonProperty(value = "upgradeReplicaSetCheckTimeout")
+ private Long upgradeReplicaSetCheckTimeout;
+
+ /**
+ * The forceRestart property.
+ */
+ @JsonProperty(value = "forceRestart")
+ private Boolean forceRestart;
+
+ /**
+ * The rollingUpgradeMonitoringPolicy property.
+ */
+ @JsonProperty(value = "rollingUpgradeMonitoringPolicy")
+ private RollingUpgradeMonitoringPolicy rollingUpgradeMonitoringPolicy;
+
+ /**
+ * The applicationHealthPolicy property.
+ */
+ @JsonProperty(value = "applicationHealthPolicy")
+ private ApplicationHealthPolicy applicationHealthPolicy;
+
+ /**
+ * Get the upgradeReplicaSetCheckTimeout value.
+ *
+ * @return the upgradeReplicaSetCheckTimeout value
+ */
+ public Long upgradeReplicaSetCheckTimeout() {
+ return this.upgradeReplicaSetCheckTimeout;
+ }
+
+ /**
+ * Set the upgradeReplicaSetCheckTimeout value.
+ *
+ * @param upgradeReplicaSetCheckTimeout the upgradeReplicaSetCheckTimeout value to set
+ * @return the ApplicationUpgradePolicy object itself.
+ */
+ public ApplicationUpgradePolicy withUpgradeReplicaSetCheckTimeout(Long upgradeReplicaSetCheckTimeout) {
+ this.upgradeReplicaSetCheckTimeout = upgradeReplicaSetCheckTimeout;
+ return this;
+ }
+
+ /**
+ * Get the forceRestart value.
+ *
+ * @return the forceRestart value
+ */
+ public Boolean forceRestart() {
+ return this.forceRestart;
+ }
+
+ /**
+ * Set the forceRestart value.
+ *
+ * @param forceRestart the forceRestart value to set
+ * @return the ApplicationUpgradePolicy object itself.
+ */
+ public ApplicationUpgradePolicy withForceRestart(Boolean forceRestart) {
+ this.forceRestart = forceRestart;
+ return this;
+ }
+
+ /**
+ * Get the rollingUpgradeMonitoringPolicy value.
+ *
+ * @return the rollingUpgradeMonitoringPolicy value
+ */
+ public RollingUpgradeMonitoringPolicy rollingUpgradeMonitoringPolicy() {
+ return this.rollingUpgradeMonitoringPolicy;
+ }
+
+ /**
+ * Set the rollingUpgradeMonitoringPolicy value.
+ *
+ * @param rollingUpgradeMonitoringPolicy the rollingUpgradeMonitoringPolicy value to set
+ * @return the ApplicationUpgradePolicy object itself.
+ */
+ public ApplicationUpgradePolicy withRollingUpgradeMonitoringPolicy(RollingUpgradeMonitoringPolicy rollingUpgradeMonitoringPolicy) {
+ this.rollingUpgradeMonitoringPolicy = rollingUpgradeMonitoringPolicy;
+ return this;
+ }
+
+ /**
+ * Get the applicationHealthPolicy value.
+ *
+ * @return the applicationHealthPolicy value
+ */
+ public ApplicationHealthPolicy applicationHealthPolicy() {
+ return this.applicationHealthPolicy;
+ }
+
+ /**
+ * Set the applicationHealthPolicy value.
+ *
+ * @param applicationHealthPolicy the applicationHealthPolicy value to set
+ * @return the ApplicationUpgradePolicy object itself.
+ */
+ public ApplicationUpgradePolicy withApplicationHealthPolicy(ApplicationHealthPolicy applicationHealthPolicy) {
+ this.applicationHealthPolicy = applicationHealthPolicy;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/AvailableOperationDisplay.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/AvailableOperationDisplay.java
new file mode 100644
index 000000000000..eec19546a043
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/AvailableOperationDisplay.java
@@ -0,0 +1,121 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Operation supported by Service Fabric resource provider.
+ */
+public class AvailableOperationDisplay {
+ /**
+ * The name of the provider.
+ */
+ @JsonProperty(value = "provider")
+ private String provider;
+
+ /**
+ * The resource on which the operation is performed.
+ */
+ @JsonProperty(value = "resource")
+ private String resource;
+
+ /**
+ * The operation that can be performed.
+ */
+ @JsonProperty(value = "operation")
+ private String operation;
+
+ /**
+ * Operation description.
+ */
+ @JsonProperty(value = "description")
+ private String description;
+
+ /**
+ * Get the name of the provider.
+ *
+ * @return the provider value
+ */
+ public String provider() {
+ return this.provider;
+ }
+
+ /**
+ * Set the name of the provider.
+ *
+ * @param provider the provider value to set
+ * @return the AvailableOperationDisplay object itself.
+ */
+ public AvailableOperationDisplay withProvider(String provider) {
+ this.provider = provider;
+ return this;
+ }
+
+ /**
+ * Get the resource on which the operation is performed.
+ *
+ * @return the resource value
+ */
+ public String resource() {
+ return this.resource;
+ }
+
+ /**
+ * Set the resource on which the operation is performed.
+ *
+ * @param resource the resource value to set
+ * @return the AvailableOperationDisplay object itself.
+ */
+ public AvailableOperationDisplay withResource(String resource) {
+ this.resource = resource;
+ return this;
+ }
+
+ /**
+ * Get the operation that can be performed.
+ *
+ * @return the operation value
+ */
+ public String operation() {
+ return this.operation;
+ }
+
+ /**
+ * Set the operation that can be performed.
+ *
+ * @param operation the operation value to set
+ * @return the AvailableOperationDisplay object itself.
+ */
+ public AvailableOperationDisplay withOperation(String operation) {
+ this.operation = operation;
+ return this;
+ }
+
+ /**
+ * Get operation description.
+ *
+ * @return the description value
+ */
+ public String description() {
+ return this.description;
+ }
+
+ /**
+ * Set operation description.
+ *
+ * @param description the description value to set
+ * @return the AvailableOperationDisplay object itself.
+ */
+ public AvailableOperationDisplay withDescription(String description) {
+ this.description = description;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/AzureActiveDirectory.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/AzureActiveDirectory.java
new file mode 100644
index 000000000000..32c918a6ede0
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/AzureActiveDirectory.java
@@ -0,0 +1,95 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The settings to enable AAD authentication on the cluster.
+ */
+public class AzureActiveDirectory {
+ /**
+ * Azure active directory tenant id.
+ */
+ @JsonProperty(value = "tenantId")
+ private String tenantId;
+
+ /**
+ * Azure active directory cluster application id.
+ */
+ @JsonProperty(value = "clusterApplication")
+ private String clusterApplication;
+
+ /**
+ * Azure active directory client application id.
+ */
+ @JsonProperty(value = "clientApplication")
+ private String clientApplication;
+
+ /**
+ * Get azure active directory tenant id.
+ *
+ * @return the tenantId value
+ */
+ public String tenantId() {
+ return this.tenantId;
+ }
+
+ /**
+ * Set azure active directory tenant id.
+ *
+ * @param tenantId the tenantId value to set
+ * @return the AzureActiveDirectory object itself.
+ */
+ public AzureActiveDirectory withTenantId(String tenantId) {
+ this.tenantId = tenantId;
+ return this;
+ }
+
+ /**
+ * Get azure active directory cluster application id.
+ *
+ * @return the clusterApplication value
+ */
+ public String clusterApplication() {
+ return this.clusterApplication;
+ }
+
+ /**
+ * Set azure active directory cluster application id.
+ *
+ * @param clusterApplication the clusterApplication value to set
+ * @return the AzureActiveDirectory object itself.
+ */
+ public AzureActiveDirectory withClusterApplication(String clusterApplication) {
+ this.clusterApplication = clusterApplication;
+ return this;
+ }
+
+ /**
+ * Get azure active directory client application id.
+ *
+ * @return the clientApplication value
+ */
+ public String clientApplication() {
+ return this.clientApplication;
+ }
+
+ /**
+ * Set azure active directory client application id.
+ *
+ * @param clientApplication the clientApplication value to set
+ * @return the AzureActiveDirectory object itself.
+ */
+ public AzureActiveDirectory withClientApplication(String clientApplication) {
+ this.clientApplication = clientApplication;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/CertificateDescription.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/CertificateDescription.java
new file mode 100644
index 000000000000..a9ebd5aaa9ef
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/CertificateDescription.java
@@ -0,0 +1,97 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Describes the certificate details.
+ */
+public class CertificateDescription {
+ /**
+ * Thumbprint of the primary certificate.
+ */
+ @JsonProperty(value = "thumbprint", required = true)
+ private String thumbprint;
+
+ /**
+ * Thumbprint of the secondary certificate.
+ */
+ @JsonProperty(value = "thumbprintSecondary")
+ private String thumbprintSecondary;
+
+ /**
+ * The local certificate store location. Possible values include:
+ * 'AddressBook', 'AuthRoot', 'CertificateAuthority', 'Disallowed', 'My',
+ * 'Root', 'TrustedPeople', 'TrustedPublisher'.
+ */
+ @JsonProperty(value = "x509StoreName")
+ private String x509StoreName;
+
+ /**
+ * Get thumbprint of the primary certificate.
+ *
+ * @return the thumbprint value
+ */
+ public String thumbprint() {
+ return this.thumbprint;
+ }
+
+ /**
+ * Set thumbprint of the primary certificate.
+ *
+ * @param thumbprint the thumbprint value to set
+ * @return the CertificateDescription object itself.
+ */
+ public CertificateDescription withThumbprint(String thumbprint) {
+ this.thumbprint = thumbprint;
+ return this;
+ }
+
+ /**
+ * Get thumbprint of the secondary certificate.
+ *
+ * @return the thumbprintSecondary value
+ */
+ public String thumbprintSecondary() {
+ return this.thumbprintSecondary;
+ }
+
+ /**
+ * Set thumbprint of the secondary certificate.
+ *
+ * @param thumbprintSecondary the thumbprintSecondary value to set
+ * @return the CertificateDescription object itself.
+ */
+ public CertificateDescription withThumbprintSecondary(String thumbprintSecondary) {
+ this.thumbprintSecondary = thumbprintSecondary;
+ return this;
+ }
+
+ /**
+ * Get the local certificate store location. Possible values include: 'AddressBook', 'AuthRoot', 'CertificateAuthority', 'Disallowed', 'My', 'Root', 'TrustedPeople', 'TrustedPublisher'.
+ *
+ * @return the x509StoreName value
+ */
+ public String x509StoreName() {
+ return this.x509StoreName;
+ }
+
+ /**
+ * Set the local certificate store location. Possible values include: 'AddressBook', 'AuthRoot', 'CertificateAuthority', 'Disallowed', 'My', 'Root', 'TrustedPeople', 'TrustedPublisher'.
+ *
+ * @param x509StoreName the x509StoreName value to set
+ * @return the CertificateDescription object itself.
+ */
+ public CertificateDescription withX509StoreName(String x509StoreName) {
+ this.x509StoreName = x509StoreName;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClientCertificateCommonName.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClientCertificateCommonName.java
new file mode 100644
index 000000000000..4b192de9ce27
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClientCertificateCommonName.java
@@ -0,0 +1,96 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Describes the client certificate details using common name.
+ */
+public class ClientCertificateCommonName {
+ /**
+ * Indicates if the client certificate has admin access to the cluster. Non
+ * admin clients can perform only read only operations on the cluster.
+ */
+ @JsonProperty(value = "isAdmin", required = true)
+ private boolean isAdmin;
+
+ /**
+ * The common name of the client certificate.
+ */
+ @JsonProperty(value = "certificateCommonName", required = true)
+ private String certificateCommonName;
+
+ /**
+ * The issuer thumbprint of the client certificate.
+ */
+ @JsonProperty(value = "certificateIssuerThumbprint", required = true)
+ private String certificateIssuerThumbprint;
+
+ /**
+ * Get indicates if the client certificate has admin access to the cluster. Non admin clients can perform only read only operations on the cluster.
+ *
+ * @return the isAdmin value
+ */
+ public boolean isAdmin() {
+ return this.isAdmin;
+ }
+
+ /**
+ * Set indicates if the client certificate has admin access to the cluster. Non admin clients can perform only read only operations on the cluster.
+ *
+ * @param isAdmin the isAdmin value to set
+ * @return the ClientCertificateCommonName object itself.
+ */
+ public ClientCertificateCommonName withIsAdmin(boolean isAdmin) {
+ this.isAdmin = isAdmin;
+ return this;
+ }
+
+ /**
+ * Get the common name of the client certificate.
+ *
+ * @return the certificateCommonName value
+ */
+ public String certificateCommonName() {
+ return this.certificateCommonName;
+ }
+
+ /**
+ * Set the common name of the client certificate.
+ *
+ * @param certificateCommonName the certificateCommonName value to set
+ * @return the ClientCertificateCommonName object itself.
+ */
+ public ClientCertificateCommonName withCertificateCommonName(String certificateCommonName) {
+ this.certificateCommonName = certificateCommonName;
+ return this;
+ }
+
+ /**
+ * Get the issuer thumbprint of the client certificate.
+ *
+ * @return the certificateIssuerThumbprint value
+ */
+ public String certificateIssuerThumbprint() {
+ return this.certificateIssuerThumbprint;
+ }
+
+ /**
+ * Set the issuer thumbprint of the client certificate.
+ *
+ * @param certificateIssuerThumbprint the certificateIssuerThumbprint value to set
+ * @return the ClientCertificateCommonName object itself.
+ */
+ public ClientCertificateCommonName withCertificateIssuerThumbprint(String certificateIssuerThumbprint) {
+ this.certificateIssuerThumbprint = certificateIssuerThumbprint;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClientCertificateThumbprint.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClientCertificateThumbprint.java
new file mode 100644
index 000000000000..7d8d6e03ada9
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClientCertificateThumbprint.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Describes the client certificate details using thumbprint.
+ */
+public class ClientCertificateThumbprint {
+ /**
+ * Indicates if the client certificate has admin access to the cluster. Non
+ * admin clients can perform only read only operations on the cluster.
+ */
+ @JsonProperty(value = "isAdmin", required = true)
+ private boolean isAdmin;
+
+ /**
+ * The thumbprint of the client certificate.
+ */
+ @JsonProperty(value = "certificateThumbprint", required = true)
+ private String certificateThumbprint;
+
+ /**
+ * Get indicates if the client certificate has admin access to the cluster. Non admin clients can perform only read only operations on the cluster.
+ *
+ * @return the isAdmin value
+ */
+ public boolean isAdmin() {
+ return this.isAdmin;
+ }
+
+ /**
+ * Set indicates if the client certificate has admin access to the cluster. Non admin clients can perform only read only operations on the cluster.
+ *
+ * @param isAdmin the isAdmin value to set
+ * @return the ClientCertificateThumbprint object itself.
+ */
+ public ClientCertificateThumbprint withIsAdmin(boolean isAdmin) {
+ this.isAdmin = isAdmin;
+ return this;
+ }
+
+ /**
+ * Get the thumbprint of the client certificate.
+ *
+ * @return the certificateThumbprint value
+ */
+ public String certificateThumbprint() {
+ return this.certificateThumbprint;
+ }
+
+ /**
+ * Set the thumbprint of the client certificate.
+ *
+ * @param certificateThumbprint the certificateThumbprint value to set
+ * @return the ClientCertificateThumbprint object itself.
+ */
+ public ClientCertificateThumbprint withCertificateThumbprint(String certificateThumbprint) {
+ this.certificateThumbprint = certificateThumbprint;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/Cluster.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/Cluster.java
new file mode 100644
index 000000000000..22510ebfe06c
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/Cluster.java
@@ -0,0 +1,528 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.Resource;
+import com.microsoft.azure.arm.resources.models.GroupableResourceCore;
+import com.microsoft.azure.arm.resources.models.HasResourceGroup;
+import com.microsoft.azure.arm.model.Updatable;
+import com.microsoft.azure.arm.model.Appliable;
+import com.microsoft.azure.arm.model.Creatable;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.implementation.ServiceFabricManager;
+import java.util.List;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.implementation.ClusterInner;
+
+/**
+ * Type representing Cluster.
+ */
+public interface Cluster extends HasInner, Resource, GroupableResourceCore, HasResourceGroup, Updatable, HasManager {
+ /**
+ * @return the addOnFeatures value.
+ */
+ List addOnFeatures();
+
+ /**
+ * @return the availableClusterVersions value.
+ */
+ List availableClusterVersions();
+
+ /**
+ * @return the azureActiveDirectory value.
+ */
+ AzureActiveDirectory azureActiveDirectory();
+
+ /**
+ * @return the certificate value.
+ */
+ CertificateDescription certificate();
+
+ /**
+ * @return the clientCertificateCommonNames value.
+ */
+ List clientCertificateCommonNames();
+
+ /**
+ * @return the clientCertificateThumbprints value.
+ */
+ List clientCertificateThumbprints();
+
+ /**
+ * @return the clusterCodeVersion value.
+ */
+ String clusterCodeVersion();
+
+ /**
+ * @return the clusterEndpoint value.
+ */
+ String clusterEndpoint();
+
+ /**
+ * @return the clusterId value.
+ */
+ String clusterId();
+
+ /**
+ * @return the clusterState value.
+ */
+ String clusterState();
+
+ /**
+ * @return the diagnosticsStorageAccountConfig value.
+ */
+ DiagnosticsStorageAccountConfig diagnosticsStorageAccountConfig();
+
+ /**
+ * @return the fabricSettings value.
+ */
+ List fabricSettings();
+
+ /**
+ * @return the managementEndpoint value.
+ */
+ String managementEndpoint();
+
+ /**
+ * @return the nodeTypes value.
+ */
+ List nodeTypes();
+
+ /**
+ * @return the provisioningState value.
+ */
+ ProvisioningState provisioningState();
+
+ /**
+ * @return the reliabilityLevel value.
+ */
+ String reliabilityLevel();
+
+ /**
+ * @return the reverseProxyCertificate value.
+ */
+ CertificateDescription reverseProxyCertificate();
+
+ /**
+ * @return the upgradeDescription value.
+ */
+ ClusterUpgradePolicy upgradeDescription();
+
+ /**
+ * @return the upgradeMode value.
+ */
+ String upgradeMode();
+
+ /**
+ * @return the vmImage value.
+ */
+ String vmImage();
+
+ /**
+ * The entirety of the Cluster definition.
+ */
+ interface Definition extends DefinitionStages.Blank, DefinitionStages.WithGroup, DefinitionStages.WithApiVersion, DefinitionStages.WithManagementEndpoint, DefinitionStages.WithNodeTypes, DefinitionStages.WithCreate {
+ }
+
+ /**
+ * Grouping of Cluster definition stages.
+ */
+ interface DefinitionStages {
+ /**
+ * The first stage of a Cluster definition.
+ */
+ interface Blank extends GroupableResourceCore.DefinitionWithRegion {
+ }
+
+ /**
+ * The stage of the Cluster definition allowing to specify the resource group.
+ */
+ interface WithGroup extends GroupableResourceCore.DefinitionStages.WithGroup {
+ }
+
+ /**
+ * The stage of the cluster definition allowing to specify ApiVersion.
+ */
+ interface WithApiVersion {
+ /**
+ * Specifies apiVersion.
+ * @param apiVersion The version of the API
+ * @return the next definition stage
+*/
+ WithManagementEndpoint withApiVersion(String apiVersion);
+ }
+
+ /**
+ * The stage of the cluster definition allowing to specify ManagementEndpoint.
+ */
+ interface WithManagementEndpoint {
+ /**
+ * Specifies managementEndpoint.
+ * @param managementEndpoint The http management endpoint of the cluster
+ * @return the next definition stage
+*/
+ WithNodeTypes withManagementEndpoint(String managementEndpoint);
+ }
+
+ /**
+ * The stage of the cluster definition allowing to specify NodeTypes.
+ */
+ interface WithNodeTypes {
+ /**
+ * Specifies nodeTypes.
+ * @param nodeTypes The list of node types in the cluster
+ * @return the next definition stage
+*/
+ WithCreate withNodeTypes(List nodeTypes);
+ }
+
+ /**
+ * The stage of the cluster definition allowing to specify AddOnFeatures.
+ */
+ interface WithAddOnFeatures {
+ /**
+ * Specifies addOnFeatures.
+ * @param addOnFeatures The list of add-on features to enable in the cluster
+ * @return the next definition stage
+ */
+ WithCreate withAddOnFeatures(List addOnFeatures);
+ }
+
+ /**
+ * The stage of the cluster definition allowing to specify AvailableClusterVersions.
+ */
+ interface WithAvailableClusterVersions {
+ /**
+ * Specifies availableClusterVersions.
+ * @param availableClusterVersions The Service Fabric runtime versions available for this cluster
+ * @return the next definition stage
+ */
+ WithCreate withAvailableClusterVersions(List availableClusterVersions);
+ }
+
+ /**
+ * The stage of the cluster definition allowing to specify AzureActiveDirectory.
+ */
+ interface WithAzureActiveDirectory {
+ /**
+ * Specifies azureActiveDirectory.
+ * @param azureActiveDirectory The AAD authentication settings of the cluster
+ * @return the next definition stage
+ */
+ WithCreate withAzureActiveDirectory(AzureActiveDirectory azureActiveDirectory);
+ }
+
+ /**
+ * The stage of the cluster definition allowing to specify Certificate.
+ */
+ interface WithCertificate {
+ /**
+ * Specifies certificate.
+ * @param certificate The certificate to use for securing the cluster. The certificate provided will be used for node to node security within the cluster, SSL certificate for cluster management endpoint and default admin client
+ * @return the next definition stage
+ */
+ WithCreate withCertificate(CertificateDescription certificate);
+ }
+
+ /**
+ * The stage of the cluster definition allowing to specify ClientCertificateCommonNames.
+ */
+ interface WithClientCertificateCommonNames {
+ /**
+ * Specifies clientCertificateCommonNames.
+ * @param clientCertificateCommonNames The list of client certificates referenced by common name that are allowed to manage the cluster
+ * @return the next definition stage
+ */
+ WithCreate withClientCertificateCommonNames(List clientCertificateCommonNames);
+ }
+
+ /**
+ * The stage of the cluster definition allowing to specify ClientCertificateThumbprints.
+ */
+ interface WithClientCertificateThumbprints {
+ /**
+ * Specifies clientCertificateThumbprints.
+ * @param clientCertificateThumbprints The list of client certificates referenced by thumbprint that are allowed to manage the cluster
+ * @return the next definition stage
+ */
+ WithCreate withClientCertificateThumbprints(List clientCertificateThumbprints);
+ }
+
+ /**
+ * The stage of the cluster definition allowing to specify ClusterCodeVersion.
+ */
+ interface WithClusterCodeVersion {
+ /**
+ * Specifies clusterCodeVersion.
+ * @param clusterCodeVersion The Service Fabric runtime version of the cluster. This property can only by set the user when **upgradeMode** is set to 'Manual'. To get list of available Service Fabric versions for new clusters use [ClusterVersion API](./ClusterVersion.md). To get the list of available version for existing clusters use **availableClusterVersions**
+ * @return the next definition stage
+ */
+ WithCreate withClusterCodeVersion(String clusterCodeVersion);
+ }
+
+ /**
+ * The stage of the cluster definition allowing to specify ClusterState.
+ */
+ interface WithClusterState {
+ /**
+ * Specifies clusterState.
+ * @param clusterState Possible values include: 'WaitingForNodes', 'Deploying', 'BaselineUpgrade', 'UpdatingUserConfiguration', 'UpdatingUserCertificate', 'UpdatingInfrastructure', 'EnforcingClusterVersion', 'UpgradeServiceUnreachable', 'AutoScale', 'Ready'
+ * @return the next definition stage
+ */
+ WithCreate withClusterState(String clusterState);
+ }
+
+ /**
+ * The stage of the cluster definition allowing to specify DiagnosticsStorageAccountConfig.
+ */
+ interface WithDiagnosticsStorageAccountConfig {
+ /**
+ * Specifies diagnosticsStorageAccountConfig.
+ * @param diagnosticsStorageAccountConfig The storage account information for storing Service Fabric diagnostic logs
+ * @return the next definition stage
+ */
+ WithCreate withDiagnosticsStorageAccountConfig(DiagnosticsStorageAccountConfig diagnosticsStorageAccountConfig);
+ }
+
+ /**
+ * The stage of the cluster definition allowing to specify FabricSettings.
+ */
+ interface WithFabricSettings {
+ /**
+ * Specifies fabricSettings.
+ * @param fabricSettings The list of custom fabric settings to configure the cluster
+ * @return the next definition stage
+ */
+ WithCreate withFabricSettings(List fabricSettings);
+ }
+
+ /**
+ * The stage of the cluster definition allowing to specify ReliabilityLevel.
+ */
+ interface WithReliabilityLevel {
+ /**
+ * Specifies reliabilityLevel.
+ * @param reliabilityLevel Possible values include: 'None', 'Bronze', 'Silver', 'Gold', 'Platinum'
+ * @return the next definition stage
+ */
+ WithCreate withReliabilityLevel(String reliabilityLevel);
+ }
+
+ /**
+ * The stage of the cluster definition allowing to specify ReverseProxyCertificate.
+ */
+ interface WithReverseProxyCertificate {
+ /**
+ * Specifies reverseProxyCertificate.
+ * @param reverseProxyCertificate The server certificate used by reverse proxy
+ * @return the next definition stage
+ */
+ WithCreate withReverseProxyCertificate(CertificateDescription reverseProxyCertificate);
+ }
+
+ /**
+ * The stage of the cluster definition allowing to specify UpgradeDescription.
+ */
+ interface WithUpgradeDescription {
+ /**
+ * Specifies upgradeDescription.
+ * @param upgradeDescription The policy to use when upgrading the cluster
+ * @return the next definition stage
+ */
+ WithCreate withUpgradeDescription(ClusterUpgradePolicy upgradeDescription);
+ }
+
+ /**
+ * The stage of the cluster definition allowing to specify UpgradeMode.
+ */
+ interface WithUpgradeMode {
+ /**
+ * Specifies upgradeMode.
+ * @param upgradeMode Possible values include: 'Automatic', 'Manual'
+ * @return the next definition stage
+ */
+ WithCreate withUpgradeMode(String upgradeMode);
+ }
+
+ /**
+ * The stage of the cluster definition allowing to specify VmImage.
+ */
+ interface WithVmImage {
+ /**
+ * Specifies vmImage.
+ * @param vmImage The VM image VMSS has been configured with. Generic names such as Windows or Linux can be used
+ * @return the next definition stage
+ */
+ WithCreate withVmImage(String vmImage);
+ }
+
+ /**
+ * The stage of the definition which contains all the minimum required inputs for
+ * the resource to be created (via {@link WithCreate#create()}), but also allows
+ * for any other optional settings to be specified.
+ */
+ interface WithCreate extends Creatable, Resource.DefinitionWithTags, DefinitionStages.WithAddOnFeatures, DefinitionStages.WithAvailableClusterVersions, DefinitionStages.WithAzureActiveDirectory, DefinitionStages.WithCertificate, DefinitionStages.WithClientCertificateCommonNames, DefinitionStages.WithClientCertificateThumbprints, DefinitionStages.WithClusterCodeVersion, DefinitionStages.WithClusterState, DefinitionStages.WithDiagnosticsStorageAccountConfig, DefinitionStages.WithFabricSettings, DefinitionStages.WithReliabilityLevel, DefinitionStages.WithReverseProxyCertificate, DefinitionStages.WithUpgradeDescription, DefinitionStages.WithUpgradeMode, DefinitionStages.WithVmImage {
+ }
+ }
+ /**
+ * The template for a Cluster update operation, containing all the settings that can be modified.
+ */
+ interface Update extends Appliable, Resource.UpdateWithTags, UpdateStages.WithApiVersion, UpdateStages.WithAddOnFeatures, UpdateStages.WithCertificate, UpdateStages.WithClientCertificateCommonNames, UpdateStages.WithClientCertificateThumbprints, UpdateStages.WithClusterCodeVersion, UpdateStages.WithFabricSettings, UpdateStages.WithNodeTypes, UpdateStages.WithReliabilityLevel, UpdateStages.WithReverseProxyCertificate, UpdateStages.WithUpgradeDescription, UpdateStages.WithUpgradeMode {
+ }
+
+ /**
+ * Grouping of Cluster update stages.
+ */
+ interface UpdateStages {
+ /**
+ * The stage of the cluster update allowing to specify ApiVersion.
+ */
+ interface WithApiVersion {
+ /**
+ * Specifies apiVersion.
+ * @param apiVersion The version of the API
+ * @return the next update stage
+ */
+ Update withApiVersion(String apiVersion);
+ }
+
+ /**
+ * The stage of the cluster update allowing to specify AddOnFeatures.
+ */
+ interface WithAddOnFeatures {
+ /**
+ * Specifies addOnFeatures.
+ * @param addOnFeatures The list of add-on features to enable in the cluster
+ * @return the next update stage
+ */
+ Update withAddOnFeatures(List addOnFeatures);
+ }
+
+ /**
+ * The stage of the cluster update allowing to specify Certificate.
+ */
+ interface WithCertificate {
+ /**
+ * Specifies certificate.
+ * @param certificate The certificate to use for securing the cluster. The certificate provided will be used for node to node security within the cluster, SSL certificate for cluster management endpoint and default admin client
+ * @return the next update stage
+ */
+ Update withCertificate(CertificateDescription certificate);
+ }
+
+ /**
+ * The stage of the cluster update allowing to specify ClientCertificateCommonNames.
+ */
+ interface WithClientCertificateCommonNames {
+ /**
+ * Specifies clientCertificateCommonNames.
+ * @param clientCertificateCommonNames The list of client certificates referenced by common name that are allowed to manage the cluster. This will overwrite the existing list
+ * @return the next update stage
+ */
+ Update withClientCertificateCommonNames(List clientCertificateCommonNames);
+ }
+
+ /**
+ * The stage of the cluster update allowing to specify ClientCertificateThumbprints.
+ */
+ interface WithClientCertificateThumbprints {
+ /**
+ * Specifies clientCertificateThumbprints.
+ * @param clientCertificateThumbprints The list of client certificates referenced by thumbprint that are allowed to manage the cluster. This will overwrite the existing list
+ * @return the next update stage
+ */
+ Update withClientCertificateThumbprints(List clientCertificateThumbprints);
+ }
+
+ /**
+ * The stage of the cluster update allowing to specify ClusterCodeVersion.
+ */
+ interface WithClusterCodeVersion {
+ /**
+ * Specifies clusterCodeVersion.
+ * @param clusterCodeVersion The Service Fabric runtime version of the cluster. This property can only by set the user when **upgradeMode** is set to 'Manual'. To get list of available Service Fabric versions for new clusters use [ClusterVersion API](./ClusterVersion.md). To get the list of available version for existing clusters use **availableClusterVersions**
+ * @return the next update stage
+ */
+ Update withClusterCodeVersion(String clusterCodeVersion);
+ }
+
+ /**
+ * The stage of the cluster update allowing to specify FabricSettings.
+ */
+ interface WithFabricSettings {
+ /**
+ * Specifies fabricSettings.
+ * @param fabricSettings The list of custom fabric settings to configure the cluster. This will overwrite the existing list
+ * @return the next update stage
+ */
+ Update withFabricSettings(List fabricSettings);
+ }
+
+ /**
+ * The stage of the cluster update allowing to specify NodeTypes.
+ */
+ interface WithNodeTypes {
+ /**
+ * Specifies nodeTypes.
+ * @param nodeTypes The list of node types in the cluster. This will overwrite the existing list
+ * @return the next update stage
+ */
+ Update withNodeTypes(List nodeTypes);
+ }
+
+ /**
+ * The stage of the cluster update allowing to specify ReliabilityLevel.
+ */
+ interface WithReliabilityLevel {
+ /**
+ * Specifies reliabilityLevel.
+ * @param reliabilityLevel The reliability level sets the replica set size of system services. Learn about [ReliabilityLevel](https://docs.microsoft.com/azure/service-fabric/service-fabric-cluster-capacity). Possible values include: 'Bronze', 'Silver', 'Gold'
+ * @return the next update stage
+ */
+ Update withReliabilityLevel(String reliabilityLevel);
+ }
+
+ /**
+ * The stage of the cluster update allowing to specify ReverseProxyCertificate.
+ */
+ interface WithReverseProxyCertificate {
+ /**
+ * Specifies reverseProxyCertificate.
+ * @param reverseProxyCertificate The server certificate used by reverse proxy
+ * @return the next update stage
+ */
+ Update withReverseProxyCertificate(CertificateDescription reverseProxyCertificate);
+ }
+
+ /**
+ * The stage of the cluster update allowing to specify UpgradeDescription.
+ */
+ interface WithUpgradeDescription {
+ /**
+ * Specifies upgradeDescription.
+ * @param upgradeDescription The policy to use when upgrading the cluster
+ * @return the next update stage
+ */
+ Update withUpgradeDescription(ClusterUpgradePolicy upgradeDescription);
+ }
+
+ /**
+ * The stage of the cluster update allowing to specify UpgradeMode.
+ */
+ interface WithUpgradeMode {
+ /**
+ * Specifies upgradeMode.
+ * @param upgradeMode The upgrade mode of the cluster. This indicates if the cluster should be automatically upgraded when new Service Fabric runtime version is available. Possible values include: 'Automatic', 'Manual'
+ * @return the next update stage
+ */
+ Update withUpgradeMode(String upgradeMode);
+ }
+
+ }
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterCodeVersionsListResult.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterCodeVersionsListResult.java
new file mode 100644
index 000000000000..b13b32740725
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterCodeVersionsListResult.java
@@ -0,0 +1,31 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ */
+
+package com.microsoft.azure.management.servicefabric.v2017_07_01_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.implementation.ClusterCodeVersionsListResultInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.implementation.ServiceFabricManager;
+import java.util.List;
+
+/**
+ * Type representing ClusterCodeVersionsListResult.
+ */
+public interface ClusterCodeVersionsListResult extends HasInner, HasManager {
+ /**
+ * @return the nextLink value.
+ */
+ String nextLink();
+
+ /**
+ * @return the value value.
+ */
+ List value();
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterCodeVersionsResult.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterCodeVersionsResult.java
new file mode 100644
index 000000000000..b7a3793c0f8f
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterCodeVersionsResult.java
@@ -0,0 +1,176 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+
+/**
+ * The result of the ServiceFabric runtime versions.
+ */
+@JsonFlatten
+public class ClusterCodeVersionsResult {
+ /**
+ * The identification of the result.
+ */
+ @JsonProperty(value = "id")
+ private String id;
+
+ /**
+ * The name of the result.
+ */
+ @JsonProperty(value = "name")
+ private String name;
+
+ /**
+ * The result resource type.
+ */
+ @JsonProperty(value = "type")
+ private String type;
+
+ /**
+ * The Service Fabric runtime version of the cluster.
+ */
+ @JsonProperty(value = "properties.codeVersion")
+ private String codeVersion;
+
+ /**
+ * The date of expiry of support of the version.
+ */
+ @JsonProperty(value = "properties.supportExpiryUtc")
+ private String supportExpiryUtc;
+
+ /**
+ * Indicates if this version is for Windows or Linux operating system.
+ * Possible values include: 'Windows', 'Linux'.
+ */
+ @JsonProperty(value = "properties.environment")
+ private String environment;
+
+ /**
+ * Get the identification of the result.
+ *
+ * @return the id value
+ */
+ public String id() {
+ return this.id;
+ }
+
+ /**
+ * Set the identification of the result.
+ *
+ * @param id the id value to set
+ * @return the ClusterCodeVersionsResult object itself.
+ */
+ public ClusterCodeVersionsResult withId(String id) {
+ this.id = id;
+ return this;
+ }
+
+ /**
+ * Get the name of the result.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the name of the result.
+ *
+ * @param name the name value to set
+ * @return the ClusterCodeVersionsResult object itself.
+ */
+ public ClusterCodeVersionsResult withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the result resource type.
+ *
+ * @return the type value
+ */
+ public String type() {
+ return this.type;
+ }
+
+ /**
+ * Set the result resource type.
+ *
+ * @param type the type value to set
+ * @return the ClusterCodeVersionsResult object itself.
+ */
+ public ClusterCodeVersionsResult withType(String type) {
+ this.type = type;
+ return this;
+ }
+
+ /**
+ * Get the Service Fabric runtime version of the cluster.
+ *
+ * @return the codeVersion value
+ */
+ public String codeVersion() {
+ return this.codeVersion;
+ }
+
+ /**
+ * Set the Service Fabric runtime version of the cluster.
+ *
+ * @param codeVersion the codeVersion value to set
+ * @return the ClusterCodeVersionsResult object itself.
+ */
+ public ClusterCodeVersionsResult withCodeVersion(String codeVersion) {
+ this.codeVersion = codeVersion;
+ return this;
+ }
+
+ /**
+ * Get the date of expiry of support of the version.
+ *
+ * @return the supportExpiryUtc value
+ */
+ public String supportExpiryUtc() {
+ return this.supportExpiryUtc;
+ }
+
+ /**
+ * Set the date of expiry of support of the version.
+ *
+ * @param supportExpiryUtc the supportExpiryUtc value to set
+ * @return the ClusterCodeVersionsResult object itself.
+ */
+ public ClusterCodeVersionsResult withSupportExpiryUtc(String supportExpiryUtc) {
+ this.supportExpiryUtc = supportExpiryUtc;
+ return this;
+ }
+
+ /**
+ * Get indicates if this version is for Windows or Linux operating system. Possible values include: 'Windows', 'Linux'.
+ *
+ * @return the environment value
+ */
+ public String environment() {
+ return this.environment;
+ }
+
+ /**
+ * Set indicates if this version is for Windows or Linux operating system. Possible values include: 'Windows', 'Linux'.
+ *
+ * @param environment the environment value to set
+ * @return the ClusterCodeVersionsResult object itself.
+ */
+ public ClusterCodeVersionsResult withEnvironment(String environment) {
+ this.environment = environment;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterHealthPolicy.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterHealthPolicy.java
new file mode 100644
index 000000000000..75d09b5d9458
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterHealthPolicy.java
@@ -0,0 +1,74 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Defines a health policy used to evaluate the health of the cluster or of a
+ * cluster node.
+ */
+public class ClusterHealthPolicy {
+ /**
+ * The maximum allowed percentage of unhealthy nodes before reporting an
+ * error. For example, to allow 10% of nodes to be unhealthy, this value
+ * would be 10.
+ */
+ @JsonProperty(value = "maxPercentUnhealthyNodes")
+ private Integer maxPercentUnhealthyNodes;
+
+ /**
+ * The maximum allowed percentage of unhealthy applications before
+ * reporting an error. For example, to allow 10% of applications to be
+ * unhealthy, this value would be 10.
+ */
+ @JsonProperty(value = "maxPercentUnhealthyApplications")
+ private Integer maxPercentUnhealthyApplications;
+
+ /**
+ * Get the maximum allowed percentage of unhealthy nodes before reporting an error. For example, to allow 10% of nodes to be unhealthy, this value would be 10.
+ *
+ * @return the maxPercentUnhealthyNodes value
+ */
+ public Integer maxPercentUnhealthyNodes() {
+ return this.maxPercentUnhealthyNodes;
+ }
+
+ /**
+ * Set the maximum allowed percentage of unhealthy nodes before reporting an error. For example, to allow 10% of nodes to be unhealthy, this value would be 10.
+ *
+ * @param maxPercentUnhealthyNodes the maxPercentUnhealthyNodes value to set
+ * @return the ClusterHealthPolicy object itself.
+ */
+ public ClusterHealthPolicy withMaxPercentUnhealthyNodes(Integer maxPercentUnhealthyNodes) {
+ this.maxPercentUnhealthyNodes = maxPercentUnhealthyNodes;
+ return this;
+ }
+
+ /**
+ * Get the maximum allowed percentage of unhealthy applications before reporting an error. For example, to allow 10% of applications to be unhealthy, this value would be 10.
+ *
+ * @return the maxPercentUnhealthyApplications value
+ */
+ public Integer maxPercentUnhealthyApplications() {
+ return this.maxPercentUnhealthyApplications;
+ }
+
+ /**
+ * Set the maximum allowed percentage of unhealthy applications before reporting an error. For example, to allow 10% of applications to be unhealthy, this value would be 10.
+ *
+ * @param maxPercentUnhealthyApplications the maxPercentUnhealthyApplications value to set
+ * @return the ClusterHealthPolicy object itself.
+ */
+ public ClusterHealthPolicy withMaxPercentUnhealthyApplications(Integer maxPercentUnhealthyApplications) {
+ this.maxPercentUnhealthyApplications = maxPercentUnhealthyApplications;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterUpdateParameters.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterUpdateParameters.java
new file mode 100644
index 000000000000..a38e64089a8a
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterUpdateParameters.java
@@ -0,0 +1,348 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import java.util.List;
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+
+/**
+ * Cluster update request.
+ */
+@JsonFlatten
+public class ClusterUpdateParameters {
+ /**
+ * The reliability level sets the replica set size of system services.
+ * Learn about
+ * [ReliabilityLevel](https://docs.microsoft.com/azure/service-fabric/service-fabric-cluster-capacity).
+ * Possible values include: 'Bronze', 'Silver', 'Gold'.
+ */
+ @JsonProperty(value = "properties.reliabilityLevel")
+ private String reliabilityLevel;
+
+ /**
+ * The upgrade mode of the cluster. This indicates if the cluster should be
+ * automatically upgraded when new Service Fabric runtime version is
+ * available. Possible values include: 'Automatic', 'Manual'.
+ */
+ @JsonProperty(value = "properties.upgradeMode")
+ private String upgradeMode;
+
+ /**
+ * The Service Fabric runtime version of the cluster. This property can
+ * only by set the user when **upgradeMode** is set to 'Manual'. To get
+ * list of available Service Fabric versions for new clusters use
+ * [ClusterVersion API](./ClusterVersion.md). To get the list of available
+ * version for existing clusters use **availableClusterVersions**.
+ */
+ @JsonProperty(value = "properties.clusterCodeVersion")
+ private String clusterCodeVersion;
+
+ /**
+ * The certificate to use for securing the cluster. The certificate
+ * provided will be used for node to node security within the cluster, SSL
+ * certificate for cluster management endpoint and default admin client.
+ */
+ @JsonProperty(value = "properties.certificate")
+ private CertificateDescription certificate;
+
+ /**
+ * The list of client certificates referenced by thumbprint that are
+ * allowed to manage the cluster. This will overwrite the existing list.
+ */
+ @JsonProperty(value = "properties.clientCertificateThumbprints")
+ private List clientCertificateThumbprints;
+
+ /**
+ * The list of client certificates referenced by common name that are
+ * allowed to manage the cluster. This will overwrite the existing list.
+ */
+ @JsonProperty(value = "properties.clientCertificateCommonNames")
+ private List clientCertificateCommonNames;
+
+ /**
+ * The list of custom fabric settings to configure the cluster. This will
+ * overwrite the existing list.
+ */
+ @JsonProperty(value = "properties.fabricSettings")
+ private List fabricSettings;
+
+ /**
+ * The server certificate used by reverse proxy.
+ */
+ @JsonProperty(value = "properties.reverseProxyCertificate")
+ private CertificateDescription reverseProxyCertificate;
+
+ /**
+ * The list of node types in the cluster. This will overwrite the existing
+ * list.
+ */
+ @JsonProperty(value = "properties.nodeTypes")
+ private List nodeTypes;
+
+ /**
+ * The policy to use when upgrading the cluster.
+ */
+ @JsonProperty(value = "properties.upgradeDescription")
+ private ClusterUpgradePolicy upgradeDescription;
+
+ /**
+ * The list of add-on features to enable in the cluster.
+ */
+ @JsonProperty(value = "properties.addOnFeatures")
+ private List addOnFeatures;
+
+ /**
+ * Cluster update parameters.
+ */
+ @JsonProperty(value = "tags")
+ private Map tags;
+
+ /**
+ * Get the reliability level sets the replica set size of system services. Learn about [ReliabilityLevel](https://docs.microsoft.com/azure/service-fabric/service-fabric-cluster-capacity). Possible values include: 'Bronze', 'Silver', 'Gold'.
+ *
+ * @return the reliabilityLevel value
+ */
+ public String reliabilityLevel() {
+ return this.reliabilityLevel;
+ }
+
+ /**
+ * Set the reliability level sets the replica set size of system services. Learn about [ReliabilityLevel](https://docs.microsoft.com/azure/service-fabric/service-fabric-cluster-capacity). Possible values include: 'Bronze', 'Silver', 'Gold'.
+ *
+ * @param reliabilityLevel the reliabilityLevel value to set
+ * @return the ClusterUpdateParameters object itself.
+ */
+ public ClusterUpdateParameters withReliabilityLevel(String reliabilityLevel) {
+ this.reliabilityLevel = reliabilityLevel;
+ return this;
+ }
+
+ /**
+ * Get the upgrade mode of the cluster. This indicates if the cluster should be automatically upgraded when new Service Fabric runtime version is available. Possible values include: 'Automatic', 'Manual'.
+ *
+ * @return the upgradeMode value
+ */
+ public String upgradeMode() {
+ return this.upgradeMode;
+ }
+
+ /**
+ * Set the upgrade mode of the cluster. This indicates if the cluster should be automatically upgraded when new Service Fabric runtime version is available. Possible values include: 'Automatic', 'Manual'.
+ *
+ * @param upgradeMode the upgradeMode value to set
+ * @return the ClusterUpdateParameters object itself.
+ */
+ public ClusterUpdateParameters withUpgradeMode(String upgradeMode) {
+ this.upgradeMode = upgradeMode;
+ return this;
+ }
+
+ /**
+ * Get the Service Fabric runtime version of the cluster. This property can only by set the user when **upgradeMode** is set to 'Manual'. To get list of available Service Fabric versions for new clusters use [ClusterVersion API](./ClusterVersion.md). To get the list of available version for existing clusters use **availableClusterVersions**.
+ *
+ * @return the clusterCodeVersion value
+ */
+ public String clusterCodeVersion() {
+ return this.clusterCodeVersion;
+ }
+
+ /**
+ * Set the Service Fabric runtime version of the cluster. This property can only by set the user when **upgradeMode** is set to 'Manual'. To get list of available Service Fabric versions for new clusters use [ClusterVersion API](./ClusterVersion.md). To get the list of available version for existing clusters use **availableClusterVersions**.
+ *
+ * @param clusterCodeVersion the clusterCodeVersion value to set
+ * @return the ClusterUpdateParameters object itself.
+ */
+ public ClusterUpdateParameters withClusterCodeVersion(String clusterCodeVersion) {
+ this.clusterCodeVersion = clusterCodeVersion;
+ return this;
+ }
+
+ /**
+ * Get the certificate to use for securing the cluster. The certificate provided will be used for node to node security within the cluster, SSL certificate for cluster management endpoint and default admin client.
+ *
+ * @return the certificate value
+ */
+ public CertificateDescription certificate() {
+ return this.certificate;
+ }
+
+ /**
+ * Set the certificate to use for securing the cluster. The certificate provided will be used for node to node security within the cluster, SSL certificate for cluster management endpoint and default admin client.
+ *
+ * @param certificate the certificate value to set
+ * @return the ClusterUpdateParameters object itself.
+ */
+ public ClusterUpdateParameters withCertificate(CertificateDescription certificate) {
+ this.certificate = certificate;
+ return this;
+ }
+
+ /**
+ * Get the list of client certificates referenced by thumbprint that are allowed to manage the cluster. This will overwrite the existing list.
+ *
+ * @return the clientCertificateThumbprints value
+ */
+ public List clientCertificateThumbprints() {
+ return this.clientCertificateThumbprints;
+ }
+
+ /**
+ * Set the list of client certificates referenced by thumbprint that are allowed to manage the cluster. This will overwrite the existing list.
+ *
+ * @param clientCertificateThumbprints the clientCertificateThumbprints value to set
+ * @return the ClusterUpdateParameters object itself.
+ */
+ public ClusterUpdateParameters withClientCertificateThumbprints(List clientCertificateThumbprints) {
+ this.clientCertificateThumbprints = clientCertificateThumbprints;
+ return this;
+ }
+
+ /**
+ * Get the list of client certificates referenced by common name that are allowed to manage the cluster. This will overwrite the existing list.
+ *
+ * @return the clientCertificateCommonNames value
+ */
+ public List clientCertificateCommonNames() {
+ return this.clientCertificateCommonNames;
+ }
+
+ /**
+ * Set the list of client certificates referenced by common name that are allowed to manage the cluster. This will overwrite the existing list.
+ *
+ * @param clientCertificateCommonNames the clientCertificateCommonNames value to set
+ * @return the ClusterUpdateParameters object itself.
+ */
+ public ClusterUpdateParameters withClientCertificateCommonNames(List clientCertificateCommonNames) {
+ this.clientCertificateCommonNames = clientCertificateCommonNames;
+ return this;
+ }
+
+ /**
+ * Get the list of custom fabric settings to configure the cluster. This will overwrite the existing list.
+ *
+ * @return the fabricSettings value
+ */
+ public List fabricSettings() {
+ return this.fabricSettings;
+ }
+
+ /**
+ * Set the list of custom fabric settings to configure the cluster. This will overwrite the existing list.
+ *
+ * @param fabricSettings the fabricSettings value to set
+ * @return the ClusterUpdateParameters object itself.
+ */
+ public ClusterUpdateParameters withFabricSettings(List fabricSettings) {
+ this.fabricSettings = fabricSettings;
+ return this;
+ }
+
+ /**
+ * Get the server certificate used by reverse proxy.
+ *
+ * @return the reverseProxyCertificate value
+ */
+ public CertificateDescription reverseProxyCertificate() {
+ return this.reverseProxyCertificate;
+ }
+
+ /**
+ * Set the server certificate used by reverse proxy.
+ *
+ * @param reverseProxyCertificate the reverseProxyCertificate value to set
+ * @return the ClusterUpdateParameters object itself.
+ */
+ public ClusterUpdateParameters withReverseProxyCertificate(CertificateDescription reverseProxyCertificate) {
+ this.reverseProxyCertificate = reverseProxyCertificate;
+ return this;
+ }
+
+ /**
+ * Get the list of node types in the cluster. This will overwrite the existing list.
+ *
+ * @return the nodeTypes value
+ */
+ public List nodeTypes() {
+ return this.nodeTypes;
+ }
+
+ /**
+ * Set the list of node types in the cluster. This will overwrite the existing list.
+ *
+ * @param nodeTypes the nodeTypes value to set
+ * @return the ClusterUpdateParameters object itself.
+ */
+ public ClusterUpdateParameters withNodeTypes(List nodeTypes) {
+ this.nodeTypes = nodeTypes;
+ return this;
+ }
+
+ /**
+ * Get the policy to use when upgrading the cluster.
+ *
+ * @return the upgradeDescription value
+ */
+ public ClusterUpgradePolicy upgradeDescription() {
+ return this.upgradeDescription;
+ }
+
+ /**
+ * Set the policy to use when upgrading the cluster.
+ *
+ * @param upgradeDescription the upgradeDescription value to set
+ * @return the ClusterUpdateParameters object itself.
+ */
+ public ClusterUpdateParameters withUpgradeDescription(ClusterUpgradePolicy upgradeDescription) {
+ this.upgradeDescription = upgradeDescription;
+ return this;
+ }
+
+ /**
+ * Get the list of add-on features to enable in the cluster.
+ *
+ * @return the addOnFeatures value
+ */
+ public List addOnFeatures() {
+ return this.addOnFeatures;
+ }
+
+ /**
+ * Set the list of add-on features to enable in the cluster.
+ *
+ * @param addOnFeatures the addOnFeatures value to set
+ * @return the ClusterUpdateParameters object itself.
+ */
+ public ClusterUpdateParameters withAddOnFeatures(List addOnFeatures) {
+ this.addOnFeatures = addOnFeatures;
+ return this;
+ }
+
+ /**
+ * Get cluster update parameters.
+ *
+ * @return the tags value
+ */
+ public Map tags() {
+ return this.tags;
+ }
+
+ /**
+ * Set cluster update parameters.
+ *
+ * @param tags the tags value to set
+ * @return the ClusterUpdateParameters object itself.
+ */
+ public ClusterUpdateParameters withTags(Map tags) {
+ this.tags = tags;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterUpgradeDeltaHealthPolicy.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterUpgradeDeltaHealthPolicy.java
new file mode 100644
index 000000000000..ee33b256b473
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterUpgradeDeltaHealthPolicy.java
@@ -0,0 +1,112 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Describes the delta health policies for the cluster upgrade.
+ */
+public class ClusterUpgradeDeltaHealthPolicy {
+ /**
+ * The maximum allowed percentage of nodes health degradation allowed
+ * during cluster upgrades. The delta is measured between the state of the
+ * nodes at the beginning of upgrade and the state of the nodes at the time
+ * of the health evaluation. The check is performed after every upgrade
+ * domain upgrade completion to make sure the global state of the cluster
+ * is within tolerated limits.
+ */
+ @JsonProperty(value = "maxPercentDeltaUnhealthyNodes", required = true)
+ private int maxPercentDeltaUnhealthyNodes;
+
+ /**
+ * The maximum allowed percentage of upgrade domain nodes health
+ * degradation allowed during cluster upgrades. The delta is measured
+ * between the state of the upgrade domain nodes at the beginning of
+ * upgrade and the state of the upgrade domain nodes at the time of the
+ * health evaluation. The check is performed after every upgrade domain
+ * upgrade completion for all completed upgrade domains to make sure the
+ * state of the upgrade domains is within tolerated limits.
+ */
+ @JsonProperty(value = "maxPercentUpgradeDomainDeltaUnhealthyNodes", required = true)
+ private int maxPercentUpgradeDomainDeltaUnhealthyNodes;
+
+ /**
+ * The maximum allowed percentage of applications health degradation
+ * allowed during cluster upgrades. The delta is measured between the state
+ * of the applications at the beginning of upgrade and the state of the
+ * applications at the time of the health evaluation. The check is
+ * performed after every upgrade domain upgrade completion to make sure the
+ * global state of the cluster is within tolerated limits. System services
+ * are not included in this.
+ */
+ @JsonProperty(value = "maxPercentDeltaUnhealthyApplications", required = true)
+ private int maxPercentDeltaUnhealthyApplications;
+
+ /**
+ * Get the maximum allowed percentage of nodes health degradation allowed during cluster upgrades. The delta is measured between the state of the nodes at the beginning of upgrade and the state of the nodes at the time of the health evaluation. The check is performed after every upgrade domain upgrade completion to make sure the global state of the cluster is within tolerated limits.
+ *
+ * @return the maxPercentDeltaUnhealthyNodes value
+ */
+ public int maxPercentDeltaUnhealthyNodes() {
+ return this.maxPercentDeltaUnhealthyNodes;
+ }
+
+ /**
+ * Set the maximum allowed percentage of nodes health degradation allowed during cluster upgrades. The delta is measured between the state of the nodes at the beginning of upgrade and the state of the nodes at the time of the health evaluation. The check is performed after every upgrade domain upgrade completion to make sure the global state of the cluster is within tolerated limits.
+ *
+ * @param maxPercentDeltaUnhealthyNodes the maxPercentDeltaUnhealthyNodes value to set
+ * @return the ClusterUpgradeDeltaHealthPolicy object itself.
+ */
+ public ClusterUpgradeDeltaHealthPolicy withMaxPercentDeltaUnhealthyNodes(int maxPercentDeltaUnhealthyNodes) {
+ this.maxPercentDeltaUnhealthyNodes = maxPercentDeltaUnhealthyNodes;
+ return this;
+ }
+
+ /**
+ * Get the maximum allowed percentage of upgrade domain nodes health degradation allowed during cluster upgrades. The delta is measured between the state of the upgrade domain nodes at the beginning of upgrade and the state of the upgrade domain nodes at the time of the health evaluation. The check is performed after every upgrade domain upgrade completion for all completed upgrade domains to make sure the state of the upgrade domains is within tolerated limits.
+ *
+ * @return the maxPercentUpgradeDomainDeltaUnhealthyNodes value
+ */
+ public int maxPercentUpgradeDomainDeltaUnhealthyNodes() {
+ return this.maxPercentUpgradeDomainDeltaUnhealthyNodes;
+ }
+
+ /**
+ * Set the maximum allowed percentage of upgrade domain nodes health degradation allowed during cluster upgrades. The delta is measured between the state of the upgrade domain nodes at the beginning of upgrade and the state of the upgrade domain nodes at the time of the health evaluation. The check is performed after every upgrade domain upgrade completion for all completed upgrade domains to make sure the state of the upgrade domains is within tolerated limits.
+ *
+ * @param maxPercentUpgradeDomainDeltaUnhealthyNodes the maxPercentUpgradeDomainDeltaUnhealthyNodes value to set
+ * @return the ClusterUpgradeDeltaHealthPolicy object itself.
+ */
+ public ClusterUpgradeDeltaHealthPolicy withMaxPercentUpgradeDomainDeltaUnhealthyNodes(int maxPercentUpgradeDomainDeltaUnhealthyNodes) {
+ this.maxPercentUpgradeDomainDeltaUnhealthyNodes = maxPercentUpgradeDomainDeltaUnhealthyNodes;
+ return this;
+ }
+
+ /**
+ * Get the maximum allowed percentage of applications health degradation allowed during cluster upgrades. The delta is measured between the state of the applications at the beginning of upgrade and the state of the applications at the time of the health evaluation. The check is performed after every upgrade domain upgrade completion to make sure the global state of the cluster is within tolerated limits. System services are not included in this.
+ *
+ * @return the maxPercentDeltaUnhealthyApplications value
+ */
+ public int maxPercentDeltaUnhealthyApplications() {
+ return this.maxPercentDeltaUnhealthyApplications;
+ }
+
+ /**
+ * Set the maximum allowed percentage of applications health degradation allowed during cluster upgrades. The delta is measured between the state of the applications at the beginning of upgrade and the state of the applications at the time of the health evaluation. The check is performed after every upgrade domain upgrade completion to make sure the global state of the cluster is within tolerated limits. System services are not included in this.
+ *
+ * @param maxPercentDeltaUnhealthyApplications the maxPercentDeltaUnhealthyApplications value to set
+ * @return the ClusterUpgradeDeltaHealthPolicy object itself.
+ */
+ public ClusterUpgradeDeltaHealthPolicy withMaxPercentDeltaUnhealthyApplications(int maxPercentDeltaUnhealthyApplications) {
+ this.maxPercentDeltaUnhealthyApplications = maxPercentDeltaUnhealthyApplications;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterUpgradePolicy.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterUpgradePolicy.java
new file mode 100644
index 000000000000..825b84f04c6d
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterUpgradePolicy.java
@@ -0,0 +1,268 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Describes the policy used when upgrading the cluster.
+ */
+public class ClusterUpgradePolicy {
+ /**
+ * If true, then processes are forcefully restarted during upgrade even
+ * when the code version has not changed (the upgrade only changes
+ * configuration or data).
+ */
+ @JsonProperty(value = "forceRestart")
+ private Boolean forceRestart;
+
+ /**
+ * The maximum amount of time to block processing of an upgrade domain and
+ * prevent loss of availability when there are unexpected issues. When this
+ * timeout expires, processing of the upgrade domain will proceed
+ * regardless of availability loss issues. The timeout is reset at the
+ * start of each upgrade domain. The timeout can be in either hh:mm:ss or
+ * in d.hh:mm:ss.ms format.
+ */
+ @JsonProperty(value = "upgradeReplicaSetCheckTimeout", required = true)
+ private String upgradeReplicaSetCheckTimeout;
+
+ /**
+ * The length of time to wait after completing an upgrade domain before
+ * performing health checks. The duration can be in either hh:mm:ss or in
+ * d.hh:mm:ss.ms format.
+ */
+ @JsonProperty(value = "healthCheckWaitDuration", required = true)
+ private String healthCheckWaitDuration;
+
+ /**
+ * The amount of time that the application or cluster must remain healthy
+ * before the upgrade proceeds to the next upgrade domain. The duration can
+ * be in either hh:mm:ss or in d.hh:mm:ss.ms format.
+ */
+ @JsonProperty(value = "healthCheckStableDuration", required = true)
+ private String healthCheckStableDuration;
+
+ /**
+ * The amount of time to retry health evaluation when the application or
+ * cluster is unhealthy before the upgrade rolls back. The timeout can be
+ * in either hh:mm:ss or in d.hh:mm:ss.ms format.
+ */
+ @JsonProperty(value = "healthCheckRetryTimeout", required = true)
+ private String healthCheckRetryTimeout;
+
+ /**
+ * The amount of time the overall upgrade has to complete before the
+ * upgrade rolls back. The timeout can be in either hh:mm:ss or in
+ * d.hh:mm:ss.ms format.
+ */
+ @JsonProperty(value = "upgradeTimeout", required = true)
+ private String upgradeTimeout;
+
+ /**
+ * The amount of time each upgrade domain has to complete before the
+ * upgrade rolls back. The timeout can be in either hh:mm:ss or in
+ * d.hh:mm:ss.ms format.
+ */
+ @JsonProperty(value = "upgradeDomainTimeout", required = true)
+ private String upgradeDomainTimeout;
+
+ /**
+ * The cluster health policy used when upgrading the cluster.
+ */
+ @JsonProperty(value = "healthPolicy", required = true)
+ private ClusterHealthPolicy healthPolicy;
+
+ /**
+ * The delta health policy used when upgrading the cluster.
+ */
+ @JsonProperty(value = "deltaHealthPolicy")
+ private ClusterUpgradeDeltaHealthPolicy deltaHealthPolicy;
+
+ /**
+ * Get if true, then processes are forcefully restarted during upgrade even when the code version has not changed (the upgrade only changes configuration or data).
+ *
+ * @return the forceRestart value
+ */
+ public Boolean forceRestart() {
+ return this.forceRestart;
+ }
+
+ /**
+ * Set if true, then processes are forcefully restarted during upgrade even when the code version has not changed (the upgrade only changes configuration or data).
+ *
+ * @param forceRestart the forceRestart value to set
+ * @return the ClusterUpgradePolicy object itself.
+ */
+ public ClusterUpgradePolicy withForceRestart(Boolean forceRestart) {
+ this.forceRestart = forceRestart;
+ return this;
+ }
+
+ /**
+ * Get the maximum amount of time to block processing of an upgrade domain and prevent loss of availability when there are unexpected issues. When this timeout expires, processing of the upgrade domain will proceed regardless of availability loss issues. The timeout is reset at the start of each upgrade domain. The timeout can be in either hh:mm:ss or in d.hh:mm:ss.ms format.
+ *
+ * @return the upgradeReplicaSetCheckTimeout value
+ */
+ public String upgradeReplicaSetCheckTimeout() {
+ return this.upgradeReplicaSetCheckTimeout;
+ }
+
+ /**
+ * Set the maximum amount of time to block processing of an upgrade domain and prevent loss of availability when there are unexpected issues. When this timeout expires, processing of the upgrade domain will proceed regardless of availability loss issues. The timeout is reset at the start of each upgrade domain. The timeout can be in either hh:mm:ss or in d.hh:mm:ss.ms format.
+ *
+ * @param upgradeReplicaSetCheckTimeout the upgradeReplicaSetCheckTimeout value to set
+ * @return the ClusterUpgradePolicy object itself.
+ */
+ public ClusterUpgradePolicy withUpgradeReplicaSetCheckTimeout(String upgradeReplicaSetCheckTimeout) {
+ this.upgradeReplicaSetCheckTimeout = upgradeReplicaSetCheckTimeout;
+ return this;
+ }
+
+ /**
+ * Get the length of time to wait after completing an upgrade domain before performing health checks. The duration can be in either hh:mm:ss or in d.hh:mm:ss.ms format.
+ *
+ * @return the healthCheckWaitDuration value
+ */
+ public String healthCheckWaitDuration() {
+ return this.healthCheckWaitDuration;
+ }
+
+ /**
+ * Set the length of time to wait after completing an upgrade domain before performing health checks. The duration can be in either hh:mm:ss or in d.hh:mm:ss.ms format.
+ *
+ * @param healthCheckWaitDuration the healthCheckWaitDuration value to set
+ * @return the ClusterUpgradePolicy object itself.
+ */
+ public ClusterUpgradePolicy withHealthCheckWaitDuration(String healthCheckWaitDuration) {
+ this.healthCheckWaitDuration = healthCheckWaitDuration;
+ return this;
+ }
+
+ /**
+ * Get the amount of time that the application or cluster must remain healthy before the upgrade proceeds to the next upgrade domain. The duration can be in either hh:mm:ss or in d.hh:mm:ss.ms format.
+ *
+ * @return the healthCheckStableDuration value
+ */
+ public String healthCheckStableDuration() {
+ return this.healthCheckStableDuration;
+ }
+
+ /**
+ * Set the amount of time that the application or cluster must remain healthy before the upgrade proceeds to the next upgrade domain. The duration can be in either hh:mm:ss or in d.hh:mm:ss.ms format.
+ *
+ * @param healthCheckStableDuration the healthCheckStableDuration value to set
+ * @return the ClusterUpgradePolicy object itself.
+ */
+ public ClusterUpgradePolicy withHealthCheckStableDuration(String healthCheckStableDuration) {
+ this.healthCheckStableDuration = healthCheckStableDuration;
+ return this;
+ }
+
+ /**
+ * Get the amount of time to retry health evaluation when the application or cluster is unhealthy before the upgrade rolls back. The timeout can be in either hh:mm:ss or in d.hh:mm:ss.ms format.
+ *
+ * @return the healthCheckRetryTimeout value
+ */
+ public String healthCheckRetryTimeout() {
+ return this.healthCheckRetryTimeout;
+ }
+
+ /**
+ * Set the amount of time to retry health evaluation when the application or cluster is unhealthy before the upgrade rolls back. The timeout can be in either hh:mm:ss or in d.hh:mm:ss.ms format.
+ *
+ * @param healthCheckRetryTimeout the healthCheckRetryTimeout value to set
+ * @return the ClusterUpgradePolicy object itself.
+ */
+ public ClusterUpgradePolicy withHealthCheckRetryTimeout(String healthCheckRetryTimeout) {
+ this.healthCheckRetryTimeout = healthCheckRetryTimeout;
+ return this;
+ }
+
+ /**
+ * Get the amount of time the overall upgrade has to complete before the upgrade rolls back. The timeout can be in either hh:mm:ss or in d.hh:mm:ss.ms format.
+ *
+ * @return the upgradeTimeout value
+ */
+ public String upgradeTimeout() {
+ return this.upgradeTimeout;
+ }
+
+ /**
+ * Set the amount of time the overall upgrade has to complete before the upgrade rolls back. The timeout can be in either hh:mm:ss or in d.hh:mm:ss.ms format.
+ *
+ * @param upgradeTimeout the upgradeTimeout value to set
+ * @return the ClusterUpgradePolicy object itself.
+ */
+ public ClusterUpgradePolicy withUpgradeTimeout(String upgradeTimeout) {
+ this.upgradeTimeout = upgradeTimeout;
+ return this;
+ }
+
+ /**
+ * Get the amount of time each upgrade domain has to complete before the upgrade rolls back. The timeout can be in either hh:mm:ss or in d.hh:mm:ss.ms format.
+ *
+ * @return the upgradeDomainTimeout value
+ */
+ public String upgradeDomainTimeout() {
+ return this.upgradeDomainTimeout;
+ }
+
+ /**
+ * Set the amount of time each upgrade domain has to complete before the upgrade rolls back. The timeout can be in either hh:mm:ss or in d.hh:mm:ss.ms format.
+ *
+ * @param upgradeDomainTimeout the upgradeDomainTimeout value to set
+ * @return the ClusterUpgradePolicy object itself.
+ */
+ public ClusterUpgradePolicy withUpgradeDomainTimeout(String upgradeDomainTimeout) {
+ this.upgradeDomainTimeout = upgradeDomainTimeout;
+ return this;
+ }
+
+ /**
+ * Get the cluster health policy used when upgrading the cluster.
+ *
+ * @return the healthPolicy value
+ */
+ public ClusterHealthPolicy healthPolicy() {
+ return this.healthPolicy;
+ }
+
+ /**
+ * Set the cluster health policy used when upgrading the cluster.
+ *
+ * @param healthPolicy the healthPolicy value to set
+ * @return the ClusterUpgradePolicy object itself.
+ */
+ public ClusterUpgradePolicy withHealthPolicy(ClusterHealthPolicy healthPolicy) {
+ this.healthPolicy = healthPolicy;
+ return this;
+ }
+
+ /**
+ * Get the delta health policy used when upgrading the cluster.
+ *
+ * @return the deltaHealthPolicy value
+ */
+ public ClusterUpgradeDeltaHealthPolicy deltaHealthPolicy() {
+ return this.deltaHealthPolicy;
+ }
+
+ /**
+ * Set the delta health policy used when upgrading the cluster.
+ *
+ * @param deltaHealthPolicy the deltaHealthPolicy value to set
+ * @return the ClusterUpgradePolicy object itself.
+ */
+ public ClusterUpgradePolicy withDeltaHealthPolicy(ClusterUpgradeDeltaHealthPolicy deltaHealthPolicy) {
+ this.deltaHealthPolicy = deltaHealthPolicy;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterVersionDetails.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterVersionDetails.java
new file mode 100644
index 000000000000..dbdfd0b55078
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterVersionDetails.java
@@ -0,0 +1,96 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The detail of the Service Fabric runtime version result.
+ */
+public class ClusterVersionDetails {
+ /**
+ * The Service Fabric runtime version of the cluster.
+ */
+ @JsonProperty(value = "codeVersion")
+ private String codeVersion;
+
+ /**
+ * The date of expiry of support of the version.
+ */
+ @JsonProperty(value = "supportExpiryUtc")
+ private String supportExpiryUtc;
+
+ /**
+ * Indicates if this version is for Windows or Linux operating system.
+ * Possible values include: 'Windows', 'Linux'.
+ */
+ @JsonProperty(value = "environment")
+ private String environment;
+
+ /**
+ * Get the Service Fabric runtime version of the cluster.
+ *
+ * @return the codeVersion value
+ */
+ public String codeVersion() {
+ return this.codeVersion;
+ }
+
+ /**
+ * Set the Service Fabric runtime version of the cluster.
+ *
+ * @param codeVersion the codeVersion value to set
+ * @return the ClusterVersionDetails object itself.
+ */
+ public ClusterVersionDetails withCodeVersion(String codeVersion) {
+ this.codeVersion = codeVersion;
+ return this;
+ }
+
+ /**
+ * Get the date of expiry of support of the version.
+ *
+ * @return the supportExpiryUtc value
+ */
+ public String supportExpiryUtc() {
+ return this.supportExpiryUtc;
+ }
+
+ /**
+ * Set the date of expiry of support of the version.
+ *
+ * @param supportExpiryUtc the supportExpiryUtc value to set
+ * @return the ClusterVersionDetails object itself.
+ */
+ public ClusterVersionDetails withSupportExpiryUtc(String supportExpiryUtc) {
+ this.supportExpiryUtc = supportExpiryUtc;
+ return this;
+ }
+
+ /**
+ * Get indicates if this version is for Windows or Linux operating system. Possible values include: 'Windows', 'Linux'.
+ *
+ * @return the environment value
+ */
+ public String environment() {
+ return this.environment;
+ }
+
+ /**
+ * Set indicates if this version is for Windows or Linux operating system. Possible values include: 'Windows', 'Linux'.
+ *
+ * @param environment the environment value to set
+ * @return the ClusterVersionDetails object itself.
+ */
+ public ClusterVersionDetails withEnvironment(String environment) {
+ this.environment = environment;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterVersions.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterVersions.java
new file mode 100644
index 000000000000..ca24ec70b7eb
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ClusterVersions.java
@@ -0,0 +1,71 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import rx.Observable;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.implementation.ClusterVersionsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing ClusterVersions.
+ */
+public interface ClusterVersions extends HasInner {
+ /**
+ * Get cluster code versions by environment.
+ * Get cluster code versions by environment.
+ *
+ * @param location The location for the cluster code versions, this is different from cluster location
+ * @param environment Cluster operating system, the default means all. Possible values include: 'Windows', 'Linux'
+ * @param subscriptionId The customer subscription identifier
+ * @param clusterVersion The cluster code version
+ * @param apiVersion The version of the API.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getByEnvironmentAsync(String location, String environment, String subscriptionId, String clusterVersion, String apiVersion);
+
+ /**
+ * List cluster code versions by location.
+ * List cluster code versions by location.
+ *
+ * @param location The location for the cluster code versions, this is different from cluster location
+ * @param subscriptionId The customer subscription identifier
+ * @param apiVersion The version of the API.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(String location, String subscriptionId, String apiVersion);
+
+ /**
+ * List cluster code versions by environment.
+ * List cluster code versions by environment.
+ *
+ * @param location The location for the cluster code versions, this is different from cluster location
+ * @param environment Cluster operating system, the default means all. Possible values include: 'Windows', 'Linux'
+ * @param subscriptionId The customer subscription identifier
+ * @param apiVersion The version of the API.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByEnvironmentAsync(String location, String environment, String subscriptionId, String apiVersion);
+
+ /**
+ * Get cluster code versions.
+ * Get cluster code versions by location.
+ *
+ * @param location The location for the cluster code versions, this is different from cluster location
+ * @param subscriptionId The customer subscription identifier
+ * @param clusterVersion The cluster code version
+ * @param apiVersion The version of the API.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getAsync(String location, String subscriptionId, String clusterVersion, String apiVersion);
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/Clusters.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/Clusters.java
new file mode 100644
index 000000000000..a1b6acc158e7
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/Clusters.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.microsoft.azure.arm.collection.SupportsCreating;
+import rx.Completable;
+import rx.Observable;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.implementation.ClustersInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Clusters.
+ */
+public interface Clusters extends SupportsCreating, HasInner {
+ /**
+ * Delete cluster resource.
+ * Delete cluster resource.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param clusterName The name of the cluster resource
+ * @param subscriptionId The customer subscription identifier
+ * @param apiVersion The version of the API.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Completable deleteAsync(String resourceGroupName, String clusterName, String subscriptionId, String apiVersion);
+
+ /**
+ * Get cluster resource.
+ * Get cluster resource.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param clusterName The name of the cluster resource
+ * @param subscriptionId The customer subscription identifier
+ * @param apiVersion The version of the API.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable getByResourceGroupAsync(String resourceGroupName, String clusterName, String subscriptionId, String apiVersion);
+
+ /**
+ * List cluster resource by resource group.
+ * List cluster resource by resource group.
+ *
+ * @param resourceGroupName The name of the resource group.
+ * @param subscriptionId The customer subscription identifier
+ * @param apiVersion The version of the API.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listByResourceGroupAsync(String resourceGroupName, String subscriptionId, String apiVersion);
+
+ /**
+ * List cluster resource.
+ * List cluster resource.
+ *
+ * @param subscriptionId The customer subscription identifier
+ * @param apiVersion The version of the API.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(String subscriptionId, String apiVersion);
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/DiagnosticsStorageAccountConfig.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/DiagnosticsStorageAccountConfig.java
new file mode 100644
index 000000000000..63448db890da
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/DiagnosticsStorageAccountConfig.java
@@ -0,0 +1,147 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The storage account information for storing Service Fabric diagnostic logs.
+ */
+public class DiagnosticsStorageAccountConfig {
+ /**
+ * The Azure storage account name.
+ */
+ @JsonProperty(value = "storageAccountName", required = true)
+ private String storageAccountName;
+
+ /**
+ * The protected diagnostics storage key name.
+ */
+ @JsonProperty(value = "protectedAccountKeyName", required = true)
+ private String protectedAccountKeyName;
+
+ /**
+ * The blob endpoint of the azure storage account.
+ */
+ @JsonProperty(value = "blobEndpoint", required = true)
+ private String blobEndpoint;
+
+ /**
+ * The queue endpoint of the azure storage account.
+ */
+ @JsonProperty(value = "queueEndpoint", required = true)
+ private String queueEndpoint;
+
+ /**
+ * The table endpoint of the azure storage account.
+ */
+ @JsonProperty(value = "tableEndpoint", required = true)
+ private String tableEndpoint;
+
+ /**
+ * Get the Azure storage account name.
+ *
+ * @return the storageAccountName value
+ */
+ public String storageAccountName() {
+ return this.storageAccountName;
+ }
+
+ /**
+ * Set the Azure storage account name.
+ *
+ * @param storageAccountName the storageAccountName value to set
+ * @return the DiagnosticsStorageAccountConfig object itself.
+ */
+ public DiagnosticsStorageAccountConfig withStorageAccountName(String storageAccountName) {
+ this.storageAccountName = storageAccountName;
+ return this;
+ }
+
+ /**
+ * Get the protected diagnostics storage key name.
+ *
+ * @return the protectedAccountKeyName value
+ */
+ public String protectedAccountKeyName() {
+ return this.protectedAccountKeyName;
+ }
+
+ /**
+ * Set the protected diagnostics storage key name.
+ *
+ * @param protectedAccountKeyName the protectedAccountKeyName value to set
+ * @return the DiagnosticsStorageAccountConfig object itself.
+ */
+ public DiagnosticsStorageAccountConfig withProtectedAccountKeyName(String protectedAccountKeyName) {
+ this.protectedAccountKeyName = protectedAccountKeyName;
+ return this;
+ }
+
+ /**
+ * Get the blob endpoint of the azure storage account.
+ *
+ * @return the blobEndpoint value
+ */
+ public String blobEndpoint() {
+ return this.blobEndpoint;
+ }
+
+ /**
+ * Set the blob endpoint of the azure storage account.
+ *
+ * @param blobEndpoint the blobEndpoint value to set
+ * @return the DiagnosticsStorageAccountConfig object itself.
+ */
+ public DiagnosticsStorageAccountConfig withBlobEndpoint(String blobEndpoint) {
+ this.blobEndpoint = blobEndpoint;
+ return this;
+ }
+
+ /**
+ * Get the queue endpoint of the azure storage account.
+ *
+ * @return the queueEndpoint value
+ */
+ public String queueEndpoint() {
+ return this.queueEndpoint;
+ }
+
+ /**
+ * Set the queue endpoint of the azure storage account.
+ *
+ * @param queueEndpoint the queueEndpoint value to set
+ * @return the DiagnosticsStorageAccountConfig object itself.
+ */
+ public DiagnosticsStorageAccountConfig withQueueEndpoint(String queueEndpoint) {
+ this.queueEndpoint = queueEndpoint;
+ return this;
+ }
+
+ /**
+ * Get the table endpoint of the azure storage account.
+ *
+ * @return the tableEndpoint value
+ */
+ public String tableEndpoint() {
+ return this.tableEndpoint;
+ }
+
+ /**
+ * Set the table endpoint of the azure storage account.
+ *
+ * @param tableEndpoint the tableEndpoint value to set
+ * @return the DiagnosticsStorageAccountConfig object itself.
+ */
+ public DiagnosticsStorageAccountConfig withTableEndpoint(String tableEndpoint) {
+ this.tableEndpoint = tableEndpoint;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/EndpointRangeDescription.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/EndpointRangeDescription.java
new file mode 100644
index 000000000000..3a66a9800aa7
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/EndpointRangeDescription.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Port range details.
+ */
+public class EndpointRangeDescription {
+ /**
+ * Starting port of a range of ports.
+ */
+ @JsonProperty(value = "startPort", required = true)
+ private int startPort;
+
+ /**
+ * End port of a range of ports.
+ */
+ @JsonProperty(value = "endPort", required = true)
+ private int endPort;
+
+ /**
+ * Get starting port of a range of ports.
+ *
+ * @return the startPort value
+ */
+ public int startPort() {
+ return this.startPort;
+ }
+
+ /**
+ * Set starting port of a range of ports.
+ *
+ * @param startPort the startPort value to set
+ * @return the EndpointRangeDescription object itself.
+ */
+ public EndpointRangeDescription withStartPort(int startPort) {
+ this.startPort = startPort;
+ return this;
+ }
+
+ /**
+ * Get end port of a range of ports.
+ *
+ * @return the endPort value
+ */
+ public int endPort() {
+ return this.endPort;
+ }
+
+ /**
+ * Set end port of a range of ports.
+ *
+ * @param endPort the endPort value to set
+ * @return the EndpointRangeDescription object itself.
+ */
+ public EndpointRangeDescription withEndPort(int endPort) {
+ this.endPort = endPort;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ErrorModel.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ErrorModel.java
new file mode 100644
index 000000000000..8989cacaaae3
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ErrorModel.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The error details.
+ */
+public class ErrorModel {
+ /**
+ * The error code.
+ */
+ @JsonProperty(value = "code")
+ private String code;
+
+ /**
+ * The error message.
+ */
+ @JsonProperty(value = "message")
+ private String message;
+
+ /**
+ * Get the error code.
+ *
+ * @return the code value
+ */
+ public String code() {
+ return this.code;
+ }
+
+ /**
+ * Set the error code.
+ *
+ * @param code the code value to set
+ * @return the ErrorModel object itself.
+ */
+ public ErrorModel withCode(String code) {
+ this.code = code;
+ return this;
+ }
+
+ /**
+ * Get the error message.
+ *
+ * @return the message value
+ */
+ public String message() {
+ return this.message;
+ }
+
+ /**
+ * Set the error message.
+ *
+ * @param message the message value to set
+ * @return the ErrorModel object itself.
+ */
+ public ErrorModel withMessage(String message) {
+ this.message = message;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ErrorModelException.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ErrorModelException.java
new file mode 100644
index 000000000000..819a2d231527
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ErrorModelException.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.servicefabric.v2017_07_01_preview;
+
+import com.microsoft.rest.RestException;
+import okhttp3.ResponseBody;
+import retrofit2.Response;
+
+/**
+ * Exception thrown for an invalid response with ErrorModel information.
+ */
+public class ErrorModelException extends RestException {
+ /**
+ * Initializes a new instance of the ErrorModelException class.
+ *
+ * @param message the exception message or the response content if a message is not available
+ * @param response the HTTP response
+ */
+ public ErrorModelException(final String message, final Response response) {
+ super(message, response);
+ }
+
+ /**
+ * Initializes a new instance of the ErrorModelException 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 ErrorModelException(final String message, final Response response, final ErrorModel body) {
+ super(message, response, body);
+ }
+
+ @Override
+ public ErrorModel body() {
+ return (ErrorModel) super.body();
+ }
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/NamedPartitionSchemeDescription.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/NamedPartitionSchemeDescription.java
new file mode 100644
index 000000000000..5d10f5891c5c
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/NamedPartitionSchemeDescription.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.servicefabric.v2017_07_01_preview;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * Describes the named partition scheme of the service.
+ */
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "PartitionScheme", defaultImpl = NamedPartitionSchemeDescription.class)
+@JsonTypeName("Named")
+public class NamedPartitionSchemeDescription extends PartitionSchemeDescription {
+ /**
+ * The number of partitions.
+ */
+ @JsonProperty(value = "Count", required = true)
+ private int count;
+
+ /**
+ * Array of size specified by the ‘Count’ parameter, for the names of the
+ * partitions.
+ */
+ @JsonProperty(value = "Names", required = true)
+ private List names;
+
+ /**
+ * Get the number of partitions.
+ *
+ * @return the count value
+ */
+ public int count() {
+ return this.count;
+ }
+
+ /**
+ * Set the number of partitions.
+ *
+ * @param count the count value to set
+ * @return the NamedPartitionSchemeDescription object itself.
+ */
+ public NamedPartitionSchemeDescription withCount(int count) {
+ this.count = count;
+ return this;
+ }
+
+ /**
+ * Get array of size specified by the ‘Count’ parameter, for the names of the partitions.
+ *
+ * @return the names value
+ */
+ public List names() {
+ return this.names;
+ }
+
+ /**
+ * Set array of size specified by the ‘Count’ parameter, for the names of the partitions.
+ *
+ * @param names the names value to set
+ * @return the NamedPartitionSchemeDescription object itself.
+ */
+ public NamedPartitionSchemeDescription withNames(List names) {
+ this.names = names;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/NodeTypeDescription.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/NodeTypeDescription.java
new file mode 100644
index 000000000000..37ab01cec0b3
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/NodeTypeDescription.java
@@ -0,0 +1,313 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import java.util.Map;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Describes a node type in the cluster, each node type represents sub set of
+ * nodes in the cluster.
+ */
+public class NodeTypeDescription {
+ /**
+ * The name of the node type.
+ */
+ @JsonProperty(value = "name", required = true)
+ private String name;
+
+ /**
+ * The placement tags applied to nodes in the node type, which can be used
+ * to indicate where certain services (workload) should run.
+ */
+ @JsonProperty(value = "placementProperties")
+ private Map placementProperties;
+
+ /**
+ * The capacity tags applied to the nodes in the node type, the cluster
+ * resource manager uses these tags to understand how much resource a node
+ * has.
+ */
+ @JsonProperty(value = "capacities")
+ private Map capacities;
+
+ /**
+ * The TCP cluster management endpoint port.
+ */
+ @JsonProperty(value = "clientConnectionEndpointPort", required = true)
+ private int clientConnectionEndpointPort;
+
+ /**
+ * The HTTP cluster management endpoint port.
+ */
+ @JsonProperty(value = "httpGatewayEndpointPort", required = true)
+ private int httpGatewayEndpointPort;
+
+ /**
+ * Possible values include: 'Bronze', 'Silver', 'Gold'.
+ */
+ @JsonProperty(value = "durabilityLevel")
+ private String durabilityLevel;
+
+ /**
+ * The range of ports from which cluster assigned port to Service Fabric
+ * applications.
+ */
+ @JsonProperty(value = "applicationPorts")
+ private EndpointRangeDescription applicationPorts;
+
+ /**
+ * The range of ephemeral ports that nodes in this node type should be
+ * configured with.
+ */
+ @JsonProperty(value = "ephemeralPorts")
+ private EndpointRangeDescription ephemeralPorts;
+
+ /**
+ * The node type on which system services will run. Only one node type
+ * should be marked as primary. Primary node type cannot be deleted or
+ * changed for existing clusters.
+ */
+ @JsonProperty(value = "isPrimary", required = true)
+ private boolean isPrimary;
+
+ /**
+ * The number of nodes in the node type. This count should match the
+ * capacity property in the corresponding VirtualMachineScaleSet resource.
+ */
+ @JsonProperty(value = "vmInstanceCount", required = true)
+ private int vmInstanceCount;
+
+ /**
+ * The endpoint used by reverse proxy.
+ */
+ @JsonProperty(value = "reverseProxyEndpointPort")
+ private Integer reverseProxyEndpointPort;
+
+ /**
+ * Get the name of the node type.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the name of the node type.
+ *
+ * @param name the name value to set
+ * @return the NodeTypeDescription object itself.
+ */
+ public NodeTypeDescription withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the placement tags applied to nodes in the node type, which can be used to indicate where certain services (workload) should run.
+ *
+ * @return the placementProperties value
+ */
+ public Map placementProperties() {
+ return this.placementProperties;
+ }
+
+ /**
+ * Set the placement tags applied to nodes in the node type, which can be used to indicate where certain services (workload) should run.
+ *
+ * @param placementProperties the placementProperties value to set
+ * @return the NodeTypeDescription object itself.
+ */
+ public NodeTypeDescription withPlacementProperties(Map placementProperties) {
+ this.placementProperties = placementProperties;
+ return this;
+ }
+
+ /**
+ * Get the capacity tags applied to the nodes in the node type, the cluster resource manager uses these tags to understand how much resource a node has.
+ *
+ * @return the capacities value
+ */
+ public Map capacities() {
+ return this.capacities;
+ }
+
+ /**
+ * Set the capacity tags applied to the nodes in the node type, the cluster resource manager uses these tags to understand how much resource a node has.
+ *
+ * @param capacities the capacities value to set
+ * @return the NodeTypeDescription object itself.
+ */
+ public NodeTypeDescription withCapacities(Map capacities) {
+ this.capacities = capacities;
+ return this;
+ }
+
+ /**
+ * Get the TCP cluster management endpoint port.
+ *
+ * @return the clientConnectionEndpointPort value
+ */
+ public int clientConnectionEndpointPort() {
+ return this.clientConnectionEndpointPort;
+ }
+
+ /**
+ * Set the TCP cluster management endpoint port.
+ *
+ * @param clientConnectionEndpointPort the clientConnectionEndpointPort value to set
+ * @return the NodeTypeDescription object itself.
+ */
+ public NodeTypeDescription withClientConnectionEndpointPort(int clientConnectionEndpointPort) {
+ this.clientConnectionEndpointPort = clientConnectionEndpointPort;
+ return this;
+ }
+
+ /**
+ * Get the HTTP cluster management endpoint port.
+ *
+ * @return the httpGatewayEndpointPort value
+ */
+ public int httpGatewayEndpointPort() {
+ return this.httpGatewayEndpointPort;
+ }
+
+ /**
+ * Set the HTTP cluster management endpoint port.
+ *
+ * @param httpGatewayEndpointPort the httpGatewayEndpointPort value to set
+ * @return the NodeTypeDescription object itself.
+ */
+ public NodeTypeDescription withHttpGatewayEndpointPort(int httpGatewayEndpointPort) {
+ this.httpGatewayEndpointPort = httpGatewayEndpointPort;
+ return this;
+ }
+
+ /**
+ * Get possible values include: 'Bronze', 'Silver', 'Gold'.
+ *
+ * @return the durabilityLevel value
+ */
+ public String durabilityLevel() {
+ return this.durabilityLevel;
+ }
+
+ /**
+ * Set possible values include: 'Bronze', 'Silver', 'Gold'.
+ *
+ * @param durabilityLevel the durabilityLevel value to set
+ * @return the NodeTypeDescription object itself.
+ */
+ public NodeTypeDescription withDurabilityLevel(String durabilityLevel) {
+ this.durabilityLevel = durabilityLevel;
+ return this;
+ }
+
+ /**
+ * Get the range of ports from which cluster assigned port to Service Fabric applications.
+ *
+ * @return the applicationPorts value
+ */
+ public EndpointRangeDescription applicationPorts() {
+ return this.applicationPorts;
+ }
+
+ /**
+ * Set the range of ports from which cluster assigned port to Service Fabric applications.
+ *
+ * @param applicationPorts the applicationPorts value to set
+ * @return the NodeTypeDescription object itself.
+ */
+ public NodeTypeDescription withApplicationPorts(EndpointRangeDescription applicationPorts) {
+ this.applicationPorts = applicationPorts;
+ return this;
+ }
+
+ /**
+ * Get the range of ephemeral ports that nodes in this node type should be configured with.
+ *
+ * @return the ephemeralPorts value
+ */
+ public EndpointRangeDescription ephemeralPorts() {
+ return this.ephemeralPorts;
+ }
+
+ /**
+ * Set the range of ephemeral ports that nodes in this node type should be configured with.
+ *
+ * @param ephemeralPorts the ephemeralPorts value to set
+ * @return the NodeTypeDescription object itself.
+ */
+ public NodeTypeDescription withEphemeralPorts(EndpointRangeDescription ephemeralPorts) {
+ this.ephemeralPorts = ephemeralPorts;
+ return this;
+ }
+
+ /**
+ * Get the node type on which system services will run. Only one node type should be marked as primary. Primary node type cannot be deleted or changed for existing clusters.
+ *
+ * @return the isPrimary value
+ */
+ public boolean isPrimary() {
+ return this.isPrimary;
+ }
+
+ /**
+ * Set the node type on which system services will run. Only one node type should be marked as primary. Primary node type cannot be deleted or changed for existing clusters.
+ *
+ * @param isPrimary the isPrimary value to set
+ * @return the NodeTypeDescription object itself.
+ */
+ public NodeTypeDescription withIsPrimary(boolean isPrimary) {
+ this.isPrimary = isPrimary;
+ return this;
+ }
+
+ /**
+ * Get the number of nodes in the node type. This count should match the capacity property in the corresponding VirtualMachineScaleSet resource.
+ *
+ * @return the vmInstanceCount value
+ */
+ public int vmInstanceCount() {
+ return this.vmInstanceCount;
+ }
+
+ /**
+ * Set the number of nodes in the node type. This count should match the capacity property in the corresponding VirtualMachineScaleSet resource.
+ *
+ * @param vmInstanceCount the vmInstanceCount value to set
+ * @return the NodeTypeDescription object itself.
+ */
+ public NodeTypeDescription withVmInstanceCount(int vmInstanceCount) {
+ this.vmInstanceCount = vmInstanceCount;
+ return this;
+ }
+
+ /**
+ * Get the endpoint used by reverse proxy.
+ *
+ * @return the reverseProxyEndpointPort value
+ */
+ public Integer reverseProxyEndpointPort() {
+ return this.reverseProxyEndpointPort;
+ }
+
+ /**
+ * Set the endpoint used by reverse proxy.
+ *
+ * @param reverseProxyEndpointPort the reverseProxyEndpointPort value to set
+ * @return the NodeTypeDescription object itself.
+ */
+ public NodeTypeDescription withReverseProxyEndpointPort(Integer reverseProxyEndpointPort) {
+ this.reverseProxyEndpointPort = reverseProxyEndpointPort;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/OperationResult.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/OperationResult.java
new file mode 100644
index 000000000000..14852be75feb
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/OperationResult.java
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.microsoft.azure.arm.model.HasInner;
+import com.microsoft.azure.arm.resources.models.HasManager;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.implementation.ServiceFabricManager;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.implementation.OperationResultInner;
+
+/**
+ * Type representing OperationResult.
+ */
+public interface OperationResult extends HasInner, HasManager {
+ /**
+ * @return the display value.
+ */
+ AvailableOperationDisplay display();
+
+ /**
+ * @return the name value.
+ */
+ String name();
+
+ /**
+ * @return the nextLink value.
+ */
+ String nextLink();
+
+ /**
+ * @return the origin value.
+ */
+ String origin();
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/Operations.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/Operations.java
new file mode 100644
index 000000000000..0857fa098ca8
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/Operations.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.servicefabric.v2017_07_01_preview;
+
+import rx.Observable;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.implementation.OperationsInner;
+import com.microsoft.azure.arm.model.HasInner;
+
+/**
+ * Type representing Operations.
+ */
+public interface Operations extends HasInner {
+ /**
+ * Lists all of the available ServiceFabric Resource Manager REST API operations.
+ *
+ * @param apiVersion The version of the ServiceFabric resource provider api
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable for the request
+ */
+ Observable listAsync(final String apiVersion);
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/PartitionSchemeDescription.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/PartitionSchemeDescription.java
new file mode 100644
index 000000000000..231b1ab52fc6
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/PartitionSchemeDescription.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+
+/**
+ * Describes how the service is partitioned.
+ */
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "PartitionScheme", defaultImpl = PartitionSchemeDescription.class)
+@JsonTypeName("PartitionSchemeDescription")
+@JsonSubTypes({
+ @JsonSubTypes.Type(name = "Named", value = NamedPartitionSchemeDescription.class),
+ @JsonSubTypes.Type(name = "Singleton", value = SingletonPartitionSchemeDescription.class),
+ @JsonSubTypes.Type(name = "UniformInt64Range", value = UniformInt64RangePartitionSchemeDescription.class)
+})
+public class PartitionSchemeDescription {
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ProvisioningState.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ProvisioningState.java
new file mode 100644
index 000000000000..89b13f5d9c33
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ProvisioningState.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.servicefabric.v2017_07_01_preview;
+
+import java.util.Collection;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.microsoft.rest.ExpandableStringEnum;
+
+/**
+ * Defines values for ProvisioningState.
+ */
+public final class ProvisioningState extends ExpandableStringEnum {
+ /** Static value Updating for ProvisioningState. */
+ public static final ProvisioningState UPDATING = fromString("Updating");
+
+ /** Static value Succeeded for ProvisioningState. */
+ public static final ProvisioningState SUCCEEDED = fromString("Succeeded");
+
+ /** Static value Failed for ProvisioningState. */
+ public static final ProvisioningState FAILED = fromString("Failed");
+
+ /** Static value Canceled for ProvisioningState. */
+ public static final ProvisioningState CANCELED = fromString("Canceled");
+
+ /**
+ * Creates or finds a ProvisioningState from its string representation.
+ * @param name a name to look for
+ * @return the corresponding ProvisioningState
+ */
+ @JsonCreator
+ public static ProvisioningState fromString(String name) {
+ return fromString(name, ProvisioningState.class);
+ }
+
+ /**
+ * @return known ProvisioningState values
+ */
+ public static Collection values() {
+ return values(ProvisioningState.class);
+ }
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/RollingUpgradeMonitoringPolicy.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/RollingUpgradeMonitoringPolicy.java
new file mode 100644
index 000000000000..0c2bdc8db265
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/RollingUpgradeMonitoringPolicy.java
@@ -0,0 +1,147 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The policy used for monitoring the application upgrade.
+ */
+public class RollingUpgradeMonitoringPolicy {
+ /**
+ * The healthCheckWaitDuration property.
+ */
+ @JsonProperty(value = "healthCheckWaitDuration")
+ private String healthCheckWaitDuration;
+
+ /**
+ * The healthCheckStableDuration property.
+ */
+ @JsonProperty(value = "healthCheckStableDuration")
+ private String healthCheckStableDuration;
+
+ /**
+ * The healthCheckRetryTimeout property.
+ */
+ @JsonProperty(value = "healthCheckRetryTimeout")
+ private String healthCheckRetryTimeout;
+
+ /**
+ * The upgradeTimeout property.
+ */
+ @JsonProperty(value = "upgradeTimeout")
+ private String upgradeTimeout;
+
+ /**
+ * The upgradeDomainTimeout property.
+ */
+ @JsonProperty(value = "upgradeDomainTimeout")
+ private String upgradeDomainTimeout;
+
+ /**
+ * Get the healthCheckWaitDuration value.
+ *
+ * @return the healthCheckWaitDuration value
+ */
+ public String healthCheckWaitDuration() {
+ return this.healthCheckWaitDuration;
+ }
+
+ /**
+ * Set the healthCheckWaitDuration value.
+ *
+ * @param healthCheckWaitDuration the healthCheckWaitDuration value to set
+ * @return the RollingUpgradeMonitoringPolicy object itself.
+ */
+ public RollingUpgradeMonitoringPolicy withHealthCheckWaitDuration(String healthCheckWaitDuration) {
+ this.healthCheckWaitDuration = healthCheckWaitDuration;
+ return this;
+ }
+
+ /**
+ * Get the healthCheckStableDuration value.
+ *
+ * @return the healthCheckStableDuration value
+ */
+ public String healthCheckStableDuration() {
+ return this.healthCheckStableDuration;
+ }
+
+ /**
+ * Set the healthCheckStableDuration value.
+ *
+ * @param healthCheckStableDuration the healthCheckStableDuration value to set
+ * @return the RollingUpgradeMonitoringPolicy object itself.
+ */
+ public RollingUpgradeMonitoringPolicy withHealthCheckStableDuration(String healthCheckStableDuration) {
+ this.healthCheckStableDuration = healthCheckStableDuration;
+ return this;
+ }
+
+ /**
+ * Get the healthCheckRetryTimeout value.
+ *
+ * @return the healthCheckRetryTimeout value
+ */
+ public String healthCheckRetryTimeout() {
+ return this.healthCheckRetryTimeout;
+ }
+
+ /**
+ * Set the healthCheckRetryTimeout value.
+ *
+ * @param healthCheckRetryTimeout the healthCheckRetryTimeout value to set
+ * @return the RollingUpgradeMonitoringPolicy object itself.
+ */
+ public RollingUpgradeMonitoringPolicy withHealthCheckRetryTimeout(String healthCheckRetryTimeout) {
+ this.healthCheckRetryTimeout = healthCheckRetryTimeout;
+ return this;
+ }
+
+ /**
+ * Get the upgradeTimeout value.
+ *
+ * @return the upgradeTimeout value
+ */
+ public String upgradeTimeout() {
+ return this.upgradeTimeout;
+ }
+
+ /**
+ * Set the upgradeTimeout value.
+ *
+ * @param upgradeTimeout the upgradeTimeout value to set
+ * @return the RollingUpgradeMonitoringPolicy object itself.
+ */
+ public RollingUpgradeMonitoringPolicy withUpgradeTimeout(String upgradeTimeout) {
+ this.upgradeTimeout = upgradeTimeout;
+ return this;
+ }
+
+ /**
+ * Get the upgradeDomainTimeout value.
+ *
+ * @return the upgradeDomainTimeout value
+ */
+ public String upgradeDomainTimeout() {
+ return this.upgradeDomainTimeout;
+ }
+
+ /**
+ * Set the upgradeDomainTimeout value.
+ *
+ * @param upgradeDomainTimeout the upgradeDomainTimeout value to set
+ * @return the RollingUpgradeMonitoringPolicy object itself.
+ */
+ public RollingUpgradeMonitoringPolicy withUpgradeDomainTimeout(String upgradeDomainTimeout) {
+ this.upgradeDomainTimeout = upgradeDomainTimeout;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceCorrelationDescription.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceCorrelationDescription.java
new file mode 100644
index 000000000000..a5c9d5b2dc75
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceCorrelationDescription.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Creates a particular correlation between services.
+ */
+public class ServiceCorrelationDescription {
+ /**
+ * Possible values include: 'Invalid', 'Affinity', 'AlignedAffinity',
+ * 'NonAlignedAffinity'.
+ */
+ @JsonProperty(value = "Scheme", required = true)
+ private String scheme;
+
+ /**
+ * The serviceName property.
+ */
+ @JsonProperty(value = "ServiceName", required = true)
+ private String serviceName;
+
+ /**
+ * Get possible values include: 'Invalid', 'Affinity', 'AlignedAffinity', 'NonAlignedAffinity'.
+ *
+ * @return the scheme value
+ */
+ public String scheme() {
+ return this.scheme;
+ }
+
+ /**
+ * Set possible values include: 'Invalid', 'Affinity', 'AlignedAffinity', 'NonAlignedAffinity'.
+ *
+ * @param scheme the scheme value to set
+ * @return the ServiceCorrelationDescription object itself.
+ */
+ public ServiceCorrelationDescription withScheme(String scheme) {
+ this.scheme = scheme;
+ return this;
+ }
+
+ /**
+ * Get the serviceName value.
+ *
+ * @return the serviceName value
+ */
+ public String serviceName() {
+ return this.serviceName;
+ }
+
+ /**
+ * Set the serviceName value.
+ *
+ * @param serviceName the serviceName value to set
+ * @return the ServiceCorrelationDescription object itself.
+ */
+ public ServiceCorrelationDescription withServiceName(String serviceName) {
+ this.serviceName = serviceName;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceLoadMetricDescription.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceLoadMetricDescription.java
new file mode 100644
index 000000000000..79ef78264cc3
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceLoadMetricDescription.java
@@ -0,0 +1,154 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Specifies a metric to load balance a service during runtime.
+ */
+public class ServiceLoadMetricDescription {
+ /**
+ * The name of the metric. If the service chooses to report load during
+ * runtime, the load metric name should match the name that is specified in
+ * Name exactly. Note that metric names are case sensitive.
+ */
+ @JsonProperty(value = "Name", required = true)
+ private String name;
+
+ /**
+ * Possible values include: 'Zero', 'Low', 'Medium', 'High'.
+ */
+ @JsonProperty(value = "Weight")
+ private String weight;
+
+ /**
+ * Used only for Stateful services. The default amount of load, as a
+ * number, that this service creates for this metric when it is a Primary
+ * replica.
+ */
+ @JsonProperty(value = "PrimaryDefaultLoad")
+ private Integer primaryDefaultLoad;
+
+ /**
+ * Used only for Stateful services. The default amount of load, as a
+ * number, that this service creates for this metric when it is a Secondary
+ * replica.
+ */
+ @JsonProperty(value = "SecondaryDefaultLoad")
+ private Integer secondaryDefaultLoad;
+
+ /**
+ * Used only for Stateless services. The default amount of load, as a
+ * number, that this service creates for this metric.
+ */
+ @JsonProperty(value = "DefaultLoad")
+ private Integer defaultLoad;
+
+ /**
+ * Get the name of the metric. If the service chooses to report load during runtime, the load metric name should match the name that is specified in Name exactly. Note that metric names are case sensitive.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the name of the metric. If the service chooses to report load during runtime, the load metric name should match the name that is specified in Name exactly. Note that metric names are case sensitive.
+ *
+ * @param name the name value to set
+ * @return the ServiceLoadMetricDescription object itself.
+ */
+ public ServiceLoadMetricDescription withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get possible values include: 'Zero', 'Low', 'Medium', 'High'.
+ *
+ * @return the weight value
+ */
+ public String weight() {
+ return this.weight;
+ }
+
+ /**
+ * Set possible values include: 'Zero', 'Low', 'Medium', 'High'.
+ *
+ * @param weight the weight value to set
+ * @return the ServiceLoadMetricDescription object itself.
+ */
+ public ServiceLoadMetricDescription withWeight(String weight) {
+ this.weight = weight;
+ return this;
+ }
+
+ /**
+ * Get used only for Stateful services. The default amount of load, as a number, that this service creates for this metric when it is a Primary replica.
+ *
+ * @return the primaryDefaultLoad value
+ */
+ public Integer primaryDefaultLoad() {
+ return this.primaryDefaultLoad;
+ }
+
+ /**
+ * Set used only for Stateful services. The default amount of load, as a number, that this service creates for this metric when it is a Primary replica.
+ *
+ * @param primaryDefaultLoad the primaryDefaultLoad value to set
+ * @return the ServiceLoadMetricDescription object itself.
+ */
+ public ServiceLoadMetricDescription withPrimaryDefaultLoad(Integer primaryDefaultLoad) {
+ this.primaryDefaultLoad = primaryDefaultLoad;
+ return this;
+ }
+
+ /**
+ * Get used only for Stateful services. The default amount of load, as a number, that this service creates for this metric when it is a Secondary replica.
+ *
+ * @return the secondaryDefaultLoad value
+ */
+ public Integer secondaryDefaultLoad() {
+ return this.secondaryDefaultLoad;
+ }
+
+ /**
+ * Set used only for Stateful services. The default amount of load, as a number, that this service creates for this metric when it is a Secondary replica.
+ *
+ * @param secondaryDefaultLoad the secondaryDefaultLoad value to set
+ * @return the ServiceLoadMetricDescription object itself.
+ */
+ public ServiceLoadMetricDescription withSecondaryDefaultLoad(Integer secondaryDefaultLoad) {
+ this.secondaryDefaultLoad = secondaryDefaultLoad;
+ return this;
+ }
+
+ /**
+ * Get used only for Stateless services. The default amount of load, as a number, that this service creates for this metric.
+ *
+ * @return the defaultLoad value
+ */
+ public Integer defaultLoad() {
+ return this.defaultLoad;
+ }
+
+ /**
+ * Set used only for Stateless services. The default amount of load, as a number, that this service creates for this metric.
+ *
+ * @param defaultLoad the defaultLoad value to set
+ * @return the ServiceLoadMetricDescription object itself.
+ */
+ public ServiceLoadMetricDescription withDefaultLoad(Integer defaultLoad) {
+ this.defaultLoad = defaultLoad;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServicePlacementPolicyDescription.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServicePlacementPolicyDescription.java
new file mode 100644
index 000000000000..d1f4168d4628
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServicePlacementPolicyDescription.java
@@ -0,0 +1,20 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * Describes the policy to be used for placement of a Service Fabric service.
+ */
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "Type", defaultImpl = ServicePlacementPolicyDescription.class)
+@JsonTypeName("ServicePlacementPolicyDescription")
+public class ServicePlacementPolicyDescription {
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceProperties.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceProperties.java
new file mode 100644
index 000000000000..ccb6673c6e14
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceProperties.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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+
+/**
+ * The service resource properties.
+ */
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "serviceKind", defaultImpl = ServiceProperties.class)
+@JsonTypeName("ServiceProperties")
+@JsonSubTypes({
+ @JsonSubTypes.Type(name = "Stateless", value = StatelessServiceProperties.class),
+ @JsonSubTypes.Type(name = "Stateful", value = StatefulServiceProperties.class)
+})
+public class ServiceProperties extends ServicePropertiesBase {
+ /**
+ * The current deployment or provisioning state, which only appears in the
+ * response.
+ */
+ @JsonProperty(value = "provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private String provisioningState;
+
+ /**
+ * The name of the service type.
+ */
+ @JsonProperty(value = "serviceTypeName")
+ private String serviceTypeName;
+
+ /**
+ * The partitionDescription property.
+ */
+ @JsonProperty(value = "partitionDescription")
+ private PartitionSchemeDescription partitionDescription;
+
+ /**
+ * Get the current deployment or provisioning state, which only appears in the response.
+ *
+ * @return the provisioningState value
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the name of the service type.
+ *
+ * @return the serviceTypeName value
+ */
+ public String serviceTypeName() {
+ return this.serviceTypeName;
+ }
+
+ /**
+ * Set the name of the service type.
+ *
+ * @param serviceTypeName the serviceTypeName value to set
+ * @return the ServiceProperties object itself.
+ */
+ public ServiceProperties withServiceTypeName(String serviceTypeName) {
+ this.serviceTypeName = serviceTypeName;
+ return this;
+ }
+
+ /**
+ * Get the partitionDescription value.
+ *
+ * @return the partitionDescription value
+ */
+ public PartitionSchemeDescription partitionDescription() {
+ return this.partitionDescription;
+ }
+
+ /**
+ * Set the partitionDescription value.
+ *
+ * @param partitionDescription the partitionDescription value to set
+ * @return the ServiceProperties object itself.
+ */
+ public ServiceProperties withPartitionDescription(PartitionSchemeDescription partitionDescription) {
+ this.partitionDescription = partitionDescription;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServicePropertiesBase.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServicePropertiesBase.java
new file mode 100644
index 000000000000..5b0dbbbe315e
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServicePropertiesBase.java
@@ -0,0 +1,152 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The common service resource properties.
+ */
+public class ServicePropertiesBase {
+ /**
+ * The placement constraints as a string. Placement constraints are boolean
+ * expressions on node properties and allow for restricting a service to
+ * particular nodes based on the service requirements. For example, to
+ * place a service on nodes where NodeType is blue specify the following:
+ * "NodeColor == blue)".
+ */
+ @JsonProperty(value = "placementConstraints")
+ private String placementConstraints;
+
+ /**
+ * The correlationScheme property.
+ */
+ @JsonProperty(value = "correlationScheme")
+ private List correlationScheme;
+
+ /**
+ * The serviceLoadMetrics property.
+ */
+ @JsonProperty(value = "serviceLoadMetrics")
+ private List serviceLoadMetrics;
+
+ /**
+ * The servicePlacementPolicies property.
+ */
+ @JsonProperty(value = "servicePlacementPolicies")
+ private List servicePlacementPolicies;
+
+ /**
+ * Possible values include: 'Zero', 'Low', 'Medium', 'High'.
+ */
+ @JsonProperty(value = "defaultMoveCost")
+ private String defaultMoveCost;
+
+ /**
+ * Get the placement constraints as a string. Placement constraints are boolean expressions on node properties and allow for restricting a service to particular nodes based on the service requirements. For example, to place a service on nodes where NodeType is blue specify the following: "NodeColor == blue)".
+ *
+ * @return the placementConstraints value
+ */
+ public String placementConstraints() {
+ return this.placementConstraints;
+ }
+
+ /**
+ * Set the placement constraints as a string. Placement constraints are boolean expressions on node properties and allow for restricting a service to particular nodes based on the service requirements. For example, to place a service on nodes where NodeType is blue specify the following: "NodeColor == blue)".
+ *
+ * @param placementConstraints the placementConstraints value to set
+ * @return the ServicePropertiesBase object itself.
+ */
+ public ServicePropertiesBase withPlacementConstraints(String placementConstraints) {
+ this.placementConstraints = placementConstraints;
+ return this;
+ }
+
+ /**
+ * Get the correlationScheme value.
+ *
+ * @return the correlationScheme value
+ */
+ public List correlationScheme() {
+ return this.correlationScheme;
+ }
+
+ /**
+ * Set the correlationScheme value.
+ *
+ * @param correlationScheme the correlationScheme value to set
+ * @return the ServicePropertiesBase object itself.
+ */
+ public ServicePropertiesBase withCorrelationScheme(List correlationScheme) {
+ this.correlationScheme = correlationScheme;
+ return this;
+ }
+
+ /**
+ * Get the serviceLoadMetrics value.
+ *
+ * @return the serviceLoadMetrics value
+ */
+ public List serviceLoadMetrics() {
+ return this.serviceLoadMetrics;
+ }
+
+ /**
+ * Set the serviceLoadMetrics value.
+ *
+ * @param serviceLoadMetrics the serviceLoadMetrics value to set
+ * @return the ServicePropertiesBase object itself.
+ */
+ public ServicePropertiesBase withServiceLoadMetrics(List serviceLoadMetrics) {
+ this.serviceLoadMetrics = serviceLoadMetrics;
+ return this;
+ }
+
+ /**
+ * Get the servicePlacementPolicies value.
+ *
+ * @return the servicePlacementPolicies value
+ */
+ public List servicePlacementPolicies() {
+ return this.servicePlacementPolicies;
+ }
+
+ /**
+ * Set the servicePlacementPolicies value.
+ *
+ * @param servicePlacementPolicies the servicePlacementPolicies value to set
+ * @return the ServicePropertiesBase object itself.
+ */
+ public ServicePropertiesBase withServicePlacementPolicies(List servicePlacementPolicies) {
+ this.servicePlacementPolicies = servicePlacementPolicies;
+ return this;
+ }
+
+ /**
+ * Get possible values include: 'Zero', 'Low', 'Medium', 'High'.
+ *
+ * @return the defaultMoveCost value
+ */
+ public String defaultMoveCost() {
+ return this.defaultMoveCost;
+ }
+
+ /**
+ * Set possible values include: 'Zero', 'Low', 'Medium', 'High'.
+ *
+ * @param defaultMoveCost the defaultMoveCost value to set
+ * @return the ServicePropertiesBase object itself.
+ */
+ public ServicePropertiesBase withDefaultMoveCost(String defaultMoveCost) {
+ this.defaultMoveCost = defaultMoveCost;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceResource.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceResource.java
new file mode 100644
index 000000000000..3eafe7096077
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceResource.java
@@ -0,0 +1,249 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.ProxyResource;
+
+/**
+ * The service resource.
+ */
+@JsonFlatten
+public class ServiceResource extends ProxyResource {
+ /**
+ * The placement constraints as a string. Placement constraints are boolean
+ * expressions on node properties and allow for restricting a service to
+ * particular nodes based on the service requirements. For example, to
+ * place a service on nodes where NodeType is blue specify the following:
+ * "NodeColor == blue)".
+ */
+ @JsonProperty(value = "properties.placementConstraints")
+ private String placementConstraints;
+
+ /**
+ * The correlationScheme property.
+ */
+ @JsonProperty(value = "properties.correlationScheme")
+ private List correlationScheme;
+
+ /**
+ * The serviceLoadMetrics property.
+ */
+ @JsonProperty(value = "properties.serviceLoadMetrics")
+ private List serviceLoadMetrics;
+
+ /**
+ * The servicePlacementPolicies property.
+ */
+ @JsonProperty(value = "properties.servicePlacementPolicies")
+ private List servicePlacementPolicies;
+
+ /**
+ * Possible values include: 'Zero', 'Low', 'Medium', 'High'.
+ */
+ @JsonProperty(value = "properties.defaultMoveCost")
+ private String defaultMoveCost;
+
+ /**
+ * The current deployment or provisioning state, which only appears in the
+ * response.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private String provisioningState;
+
+ /**
+ * The name of the service type.
+ */
+ @JsonProperty(value = "properties.serviceTypeName")
+ private String serviceTypeName;
+
+ /**
+ * The partitionDescription property.
+ */
+ @JsonProperty(value = "properties.partitionDescription")
+ private PartitionSchemeDescription partitionDescription;
+
+ /**
+ * Resource location.
+ */
+ @JsonProperty(value = "location", required = true)
+ private String location;
+
+ /**
+ * Get the placement constraints as a string. Placement constraints are boolean expressions on node properties and allow for restricting a service to particular nodes based on the service requirements. For example, to place a service on nodes where NodeType is blue specify the following: "NodeColor == blue)".
+ *
+ * @return the placementConstraints value
+ */
+ public String placementConstraints() {
+ return this.placementConstraints;
+ }
+
+ /**
+ * Set the placement constraints as a string. Placement constraints are boolean expressions on node properties and allow for restricting a service to particular nodes based on the service requirements. For example, to place a service on nodes where NodeType is blue specify the following: "NodeColor == blue)".
+ *
+ * @param placementConstraints the placementConstraints value to set
+ * @return the ServiceResource object itself.
+ */
+ public ServiceResource withPlacementConstraints(String placementConstraints) {
+ this.placementConstraints = placementConstraints;
+ return this;
+ }
+
+ /**
+ * Get the correlationScheme value.
+ *
+ * @return the correlationScheme value
+ */
+ public List correlationScheme() {
+ return this.correlationScheme;
+ }
+
+ /**
+ * Set the correlationScheme value.
+ *
+ * @param correlationScheme the correlationScheme value to set
+ * @return the ServiceResource object itself.
+ */
+ public ServiceResource withCorrelationScheme(List correlationScheme) {
+ this.correlationScheme = correlationScheme;
+ return this;
+ }
+
+ /**
+ * Get the serviceLoadMetrics value.
+ *
+ * @return the serviceLoadMetrics value
+ */
+ public List serviceLoadMetrics() {
+ return this.serviceLoadMetrics;
+ }
+
+ /**
+ * Set the serviceLoadMetrics value.
+ *
+ * @param serviceLoadMetrics the serviceLoadMetrics value to set
+ * @return the ServiceResource object itself.
+ */
+ public ServiceResource withServiceLoadMetrics(List serviceLoadMetrics) {
+ this.serviceLoadMetrics = serviceLoadMetrics;
+ return this;
+ }
+
+ /**
+ * Get the servicePlacementPolicies value.
+ *
+ * @return the servicePlacementPolicies value
+ */
+ public List servicePlacementPolicies() {
+ return this.servicePlacementPolicies;
+ }
+
+ /**
+ * Set the servicePlacementPolicies value.
+ *
+ * @param servicePlacementPolicies the servicePlacementPolicies value to set
+ * @return the ServiceResource object itself.
+ */
+ public ServiceResource withServicePlacementPolicies(List servicePlacementPolicies) {
+ this.servicePlacementPolicies = servicePlacementPolicies;
+ return this;
+ }
+
+ /**
+ * Get possible values include: 'Zero', 'Low', 'Medium', 'High'.
+ *
+ * @return the defaultMoveCost value
+ */
+ public String defaultMoveCost() {
+ return this.defaultMoveCost;
+ }
+
+ /**
+ * Set possible values include: 'Zero', 'Low', 'Medium', 'High'.
+ *
+ * @param defaultMoveCost the defaultMoveCost value to set
+ * @return the ServiceResource object itself.
+ */
+ public ServiceResource withDefaultMoveCost(String defaultMoveCost) {
+ this.defaultMoveCost = defaultMoveCost;
+ return this;
+ }
+
+ /**
+ * Get the current deployment or provisioning state, which only appears in the response.
+ *
+ * @return the provisioningState value
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the name of the service type.
+ *
+ * @return the serviceTypeName value
+ */
+ public String serviceTypeName() {
+ return this.serviceTypeName;
+ }
+
+ /**
+ * Set the name of the service type.
+ *
+ * @param serviceTypeName the serviceTypeName value to set
+ * @return the ServiceResource object itself.
+ */
+ public ServiceResource withServiceTypeName(String serviceTypeName) {
+ this.serviceTypeName = serviceTypeName;
+ return this;
+ }
+
+ /**
+ * Get the partitionDescription value.
+ *
+ * @return the partitionDescription value
+ */
+ public PartitionSchemeDescription partitionDescription() {
+ return this.partitionDescription;
+ }
+
+ /**
+ * Set the partitionDescription value.
+ *
+ * @param partitionDescription the partitionDescription value to set
+ * @return the ServiceResource object itself.
+ */
+ public ServiceResource withPartitionDescription(PartitionSchemeDescription partitionDescription) {
+ this.partitionDescription = partitionDescription;
+ return this;
+ }
+
+ /**
+ * Get resource location.
+ *
+ * @return the location value
+ */
+ public String location() {
+ return this.location;
+ }
+
+ /**
+ * Set resource location.
+ *
+ * @param location the location value to set
+ * @return the ServiceResource object itself.
+ */
+ public ServiceResource withLocation(String location) {
+ this.location = location;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceResourceList.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceResourceList.java
new file mode 100644
index 000000000000..fba127f18acf
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceResourceList.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.servicefabric.v2017_07_01_preview;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The list of service resources.
+ */
+public class ServiceResourceList {
+ /**
+ * The value property.
+ */
+ @JsonProperty(value = "value")
+ private List value;
+
+ /**
+ * Get the value value.
+ *
+ * @return the value value
+ */
+ public List value() {
+ return this.value;
+ }
+
+ /**
+ * Set the value value.
+ *
+ * @param value the value value to set
+ * @return the ServiceResourceList object itself.
+ */
+ public ServiceResourceList withValue(List value) {
+ this.value = value;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceResourceUpdate.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceResourceUpdate.java
new file mode 100644
index 000000000000..fe22fc845446
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceResourceUpdate.java
@@ -0,0 +1,181 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.ProxyResource;
+
+/**
+ * The service resource for patch operations.
+ */
+@JsonFlatten
+public class ServiceResourceUpdate extends ProxyResource {
+ /**
+ * The placement constraints as a string. Placement constraints are boolean
+ * expressions on node properties and allow for restricting a service to
+ * particular nodes based on the service requirements. For example, to
+ * place a service on nodes where NodeType is blue specify the following:
+ * "NodeColor == blue)".
+ */
+ @JsonProperty(value = "properties.placementConstraints")
+ private String placementConstraints;
+
+ /**
+ * The correlationScheme property.
+ */
+ @JsonProperty(value = "properties.correlationScheme")
+ private List correlationScheme;
+
+ /**
+ * The serviceLoadMetrics property.
+ */
+ @JsonProperty(value = "properties.serviceLoadMetrics")
+ private List serviceLoadMetrics;
+
+ /**
+ * The servicePlacementPolicies property.
+ */
+ @JsonProperty(value = "properties.servicePlacementPolicies")
+ private List servicePlacementPolicies;
+
+ /**
+ * Possible values include: 'Zero', 'Low', 'Medium', 'High'.
+ */
+ @JsonProperty(value = "properties.defaultMoveCost")
+ private String defaultMoveCost;
+
+ /**
+ * Resource location.
+ */
+ @JsonProperty(value = "location", required = true)
+ private String location;
+
+ /**
+ * Get the placement constraints as a string. Placement constraints are boolean expressions on node properties and allow for restricting a service to particular nodes based on the service requirements. For example, to place a service on nodes where NodeType is blue specify the following: "NodeColor == blue)".
+ *
+ * @return the placementConstraints value
+ */
+ public String placementConstraints() {
+ return this.placementConstraints;
+ }
+
+ /**
+ * Set the placement constraints as a string. Placement constraints are boolean expressions on node properties and allow for restricting a service to particular nodes based on the service requirements. For example, to place a service on nodes where NodeType is blue specify the following: "NodeColor == blue)".
+ *
+ * @param placementConstraints the placementConstraints value to set
+ * @return the ServiceResourceUpdate object itself.
+ */
+ public ServiceResourceUpdate withPlacementConstraints(String placementConstraints) {
+ this.placementConstraints = placementConstraints;
+ return this;
+ }
+
+ /**
+ * Get the correlationScheme value.
+ *
+ * @return the correlationScheme value
+ */
+ public List correlationScheme() {
+ return this.correlationScheme;
+ }
+
+ /**
+ * Set the correlationScheme value.
+ *
+ * @param correlationScheme the correlationScheme value to set
+ * @return the ServiceResourceUpdate object itself.
+ */
+ public ServiceResourceUpdate withCorrelationScheme(List correlationScheme) {
+ this.correlationScheme = correlationScheme;
+ return this;
+ }
+
+ /**
+ * Get the serviceLoadMetrics value.
+ *
+ * @return the serviceLoadMetrics value
+ */
+ public List serviceLoadMetrics() {
+ return this.serviceLoadMetrics;
+ }
+
+ /**
+ * Set the serviceLoadMetrics value.
+ *
+ * @param serviceLoadMetrics the serviceLoadMetrics value to set
+ * @return the ServiceResourceUpdate object itself.
+ */
+ public ServiceResourceUpdate withServiceLoadMetrics(List serviceLoadMetrics) {
+ this.serviceLoadMetrics = serviceLoadMetrics;
+ return this;
+ }
+
+ /**
+ * Get the servicePlacementPolicies value.
+ *
+ * @return the servicePlacementPolicies value
+ */
+ public List servicePlacementPolicies() {
+ return this.servicePlacementPolicies;
+ }
+
+ /**
+ * Set the servicePlacementPolicies value.
+ *
+ * @param servicePlacementPolicies the servicePlacementPolicies value to set
+ * @return the ServiceResourceUpdate object itself.
+ */
+ public ServiceResourceUpdate withServicePlacementPolicies(List servicePlacementPolicies) {
+ this.servicePlacementPolicies = servicePlacementPolicies;
+ return this;
+ }
+
+ /**
+ * Get possible values include: 'Zero', 'Low', 'Medium', 'High'.
+ *
+ * @return the defaultMoveCost value
+ */
+ public String defaultMoveCost() {
+ return this.defaultMoveCost;
+ }
+
+ /**
+ * Set possible values include: 'Zero', 'Low', 'Medium', 'High'.
+ *
+ * @param defaultMoveCost the defaultMoveCost value to set
+ * @return the ServiceResourceUpdate object itself.
+ */
+ public ServiceResourceUpdate withDefaultMoveCost(String defaultMoveCost) {
+ this.defaultMoveCost = defaultMoveCost;
+ return this;
+ }
+
+ /**
+ * Get resource location.
+ *
+ * @return the location value
+ */
+ public String location() {
+ return this.location;
+ }
+
+ /**
+ * Set resource location.
+ *
+ * @param location the location value to set
+ * @return the ServiceResourceUpdate object itself.
+ */
+ public ServiceResourceUpdate withLocation(String location) {
+ this.location = location;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceTypeDeltaHealthPolicy.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceTypeDeltaHealthPolicy.java
new file mode 100644
index 000000000000..c8ce8ca0339d
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceTypeDeltaHealthPolicy.java
@@ -0,0 +1,43 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Service health policy.
+ */
+public class ServiceTypeDeltaHealthPolicy {
+ /**
+ * Maximum percentage of unhealthy services in cluster.
+ */
+ @JsonProperty(value = "maxPercentDeltaUnhealthyServices")
+ private Integer maxPercentDeltaUnhealthyServices;
+
+ /**
+ * Get maximum percentage of unhealthy services in cluster.
+ *
+ * @return the maxPercentDeltaUnhealthyServices value
+ */
+ public Integer maxPercentDeltaUnhealthyServices() {
+ return this.maxPercentDeltaUnhealthyServices;
+ }
+
+ /**
+ * Set maximum percentage of unhealthy services in cluster.
+ *
+ * @param maxPercentDeltaUnhealthyServices the maxPercentDeltaUnhealthyServices value to set
+ * @return the ServiceTypeDeltaHealthPolicy object itself.
+ */
+ public ServiceTypeDeltaHealthPolicy withMaxPercentDeltaUnhealthyServices(Integer maxPercentDeltaUnhealthyServices) {
+ this.maxPercentDeltaUnhealthyServices = maxPercentDeltaUnhealthyServices;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceTypeHealthPolicy.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceTypeHealthPolicy.java
new file mode 100644
index 000000000000..6601319372e3
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceTypeHealthPolicy.java
@@ -0,0 +1,151 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Represents the health policy used to evaluate the health of services
+ * belonging to a service type.
+ */
+public class ServiceTypeHealthPolicy {
+ /**
+ * The maximum allowed percentage of unhealthy partitions per service.
+ * Allowed values are Byte values from zero to 100
+ *
+ * The percentage represents the maximum tolerated percentage of partitions
+ * that can be unhealthy before the service is considered in error.
+ * If the percentage is respected but there is at least one unhealthy
+ * partition, the health is evaluated as Warning.
+ * The percentage is calculated by dividing the number of unhealthy
+ * partitions over the total number of partitions in the service.
+ * The computation rounds up to tolerate one failure on small numbers of
+ * partitions. Default percentage is zero.
+ */
+ @JsonProperty(value = "MaxPercentUnhealthyPartitionsPerService")
+ private Integer maxPercentUnhealthyPartitionsPerService;
+
+ /**
+ * The maximum allowed percentage of unhealthy replicas per partition.
+ * Allowed values are Byte values from zero to 100.
+ *
+ * The percentage represents the maximum tolerated percentage of replicas
+ * that can be unhealthy before the partition is considered in error.
+ * If the percentage is respected but there is at least one unhealthy
+ * replica, the health is evaluated as Warning.
+ * The percentage is calculated by dividing the number of unhealthy
+ * replicas over the total number of replicas in the partition.
+ * The computation rounds up to tolerate one failure on small numbers of
+ * replicas. Default percentage is zero.
+ */
+ @JsonProperty(value = "MaxPercentUnhealthyReplicasPerPartition")
+ private Integer maxPercentUnhealthyReplicasPerPartition;
+
+ /**
+ * The maximum allowed percentage of unhealthy services. Allowed values are
+ * Byte values from zero to 100.
+ *
+ * The percentage represents the maximum tolerated percentage of services
+ * that can be unhealthy before the application is considered in error.
+ * If the percentage is respected but there is at least one unhealthy
+ * service, the health is evaluated as Warning.
+ * This is calculated by dividing the number of unhealthy services of the
+ * specific service type over the total number of services of the specific
+ * service type.
+ * The computation rounds up to tolerate one failure on small numbers of
+ * services. Default percentage is zero.
+ */
+ @JsonProperty(value = "MaxPercentUnhealthyServices")
+ private Integer maxPercentUnhealthyServices;
+
+ /**
+ * Get the maximum allowed percentage of unhealthy partitions per service. Allowed values are Byte values from zero to 100
+ The percentage represents the maximum tolerated percentage of partitions that can be unhealthy before the service is considered in error.
+ If the percentage is respected but there is at least one unhealthy partition, the health is evaluated as Warning.
+ The percentage is calculated by dividing the number of unhealthy partitions over the total number of partitions in the service.
+ The computation rounds up to tolerate one failure on small numbers of partitions. Default percentage is zero.
+ *
+ * @return the maxPercentUnhealthyPartitionsPerService value
+ */
+ public Integer maxPercentUnhealthyPartitionsPerService() {
+ return this.maxPercentUnhealthyPartitionsPerService;
+ }
+
+ /**
+ * Set the maximum allowed percentage of unhealthy partitions per service. Allowed values are Byte values from zero to 100
+ The percentage represents the maximum tolerated percentage of partitions that can be unhealthy before the service is considered in error.
+ If the percentage is respected but there is at least one unhealthy partition, the health is evaluated as Warning.
+ The percentage is calculated by dividing the number of unhealthy partitions over the total number of partitions in the service.
+ The computation rounds up to tolerate one failure on small numbers of partitions. Default percentage is zero.
+ *
+ * @param maxPercentUnhealthyPartitionsPerService the maxPercentUnhealthyPartitionsPerService value to set
+ * @return the ServiceTypeHealthPolicy object itself.
+ */
+ public ServiceTypeHealthPolicy withMaxPercentUnhealthyPartitionsPerService(Integer maxPercentUnhealthyPartitionsPerService) {
+ this.maxPercentUnhealthyPartitionsPerService = maxPercentUnhealthyPartitionsPerService;
+ return this;
+ }
+
+ /**
+ * Get the maximum allowed percentage of unhealthy replicas per partition. Allowed values are Byte values from zero to 100.
+ The percentage represents the maximum tolerated percentage of replicas that can be unhealthy before the partition is considered in error.
+ If the percentage is respected but there is at least one unhealthy replica, the health is evaluated as Warning.
+ The percentage is calculated by dividing the number of unhealthy replicas over the total number of replicas in the partition.
+ The computation rounds up to tolerate one failure on small numbers of replicas. Default percentage is zero.
+ *
+ * @return the maxPercentUnhealthyReplicasPerPartition value
+ */
+ public Integer maxPercentUnhealthyReplicasPerPartition() {
+ return this.maxPercentUnhealthyReplicasPerPartition;
+ }
+
+ /**
+ * Set the maximum allowed percentage of unhealthy replicas per partition. Allowed values are Byte values from zero to 100.
+ The percentage represents the maximum tolerated percentage of replicas that can be unhealthy before the partition is considered in error.
+ If the percentage is respected but there is at least one unhealthy replica, the health is evaluated as Warning.
+ The percentage is calculated by dividing the number of unhealthy replicas over the total number of replicas in the partition.
+ The computation rounds up to tolerate one failure on small numbers of replicas. Default percentage is zero.
+ *
+ * @param maxPercentUnhealthyReplicasPerPartition the maxPercentUnhealthyReplicasPerPartition value to set
+ * @return the ServiceTypeHealthPolicy object itself.
+ */
+ public ServiceTypeHealthPolicy withMaxPercentUnhealthyReplicasPerPartition(Integer maxPercentUnhealthyReplicasPerPartition) {
+ this.maxPercentUnhealthyReplicasPerPartition = maxPercentUnhealthyReplicasPerPartition;
+ return this;
+ }
+
+ /**
+ * Get the maximum allowed percentage of unhealthy services. Allowed values are Byte values from zero to 100.
+ The percentage represents the maximum tolerated percentage of services that can be unhealthy before the application is considered in error.
+ If the percentage is respected but there is at least one unhealthy service, the health is evaluated as Warning.
+ This is calculated by dividing the number of unhealthy services of the specific service type over the total number of services of the specific service type.
+ The computation rounds up to tolerate one failure on small numbers of services. Default percentage is zero.
+ *
+ * @return the maxPercentUnhealthyServices value
+ */
+ public Integer maxPercentUnhealthyServices() {
+ return this.maxPercentUnhealthyServices;
+ }
+
+ /**
+ * Set the maximum allowed percentage of unhealthy services. Allowed values are Byte values from zero to 100.
+ The percentage represents the maximum tolerated percentage of services that can be unhealthy before the application is considered in error.
+ If the percentage is respected but there is at least one unhealthy service, the health is evaluated as Warning.
+ This is calculated by dividing the number of unhealthy services of the specific service type over the total number of services of the specific service type.
+ The computation rounds up to tolerate one failure on small numbers of services. Default percentage is zero.
+ *
+ * @param maxPercentUnhealthyServices the maxPercentUnhealthyServices value to set
+ * @return the ServiceTypeHealthPolicy object itself.
+ */
+ public ServiceTypeHealthPolicy withMaxPercentUnhealthyServices(Integer maxPercentUnhealthyServices) {
+ this.maxPercentUnhealthyServices = maxPercentUnhealthyServices;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceTypeHealthPolicyMapItem.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceTypeHealthPolicyMapItem.java
new file mode 100644
index 000000000000..4f66a28a5d39
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceTypeHealthPolicyMapItem.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Defines an item in ServiceTypeHealthPolicyMap.
+ */
+public class ServiceTypeHealthPolicyMapItem {
+ /**
+ * The key of the service type health policy map item. This is the name of
+ * the service type.
+ */
+ @JsonProperty(value = "Key", required = true)
+ private String key;
+
+ /**
+ * The value property.
+ */
+ @JsonProperty(value = "Value", required = true)
+ private ServiceTypeHealthPolicy value;
+
+ /**
+ * Get the key of the service type health policy map item. This is the name of the service type.
+ *
+ * @return the key value
+ */
+ public String key() {
+ return this.key;
+ }
+
+ /**
+ * Set the key of the service type health policy map item. This is the name of the service type.
+ *
+ * @param key the key value to set
+ * @return the ServiceTypeHealthPolicyMapItem object itself.
+ */
+ public ServiceTypeHealthPolicyMapItem withKey(String key) {
+ this.key = key;
+ return this;
+ }
+
+ /**
+ * Get the value value.
+ *
+ * @return the value value
+ */
+ public ServiceTypeHealthPolicy value() {
+ return this.value;
+ }
+
+ /**
+ * Set the value value.
+ *
+ * @param value the value value to set
+ * @return the ServiceTypeHealthPolicyMapItem object itself.
+ */
+ public ServiceTypeHealthPolicyMapItem withValue(ServiceTypeHealthPolicy value) {
+ this.value = value;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceUpdateProperties.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceUpdateProperties.java
new file mode 100644
index 000000000000..d630127edd52
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/ServiceUpdateProperties.java
@@ -0,0 +1,25 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+
+/**
+ * The service resource properties for patch operations.
+ */
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "serviceKind", defaultImpl = ServiceUpdateProperties.class)
+@JsonTypeName("ServiceUpdateProperties")
+@JsonSubTypes({
+ @JsonSubTypes.Type(name = "Stateless", value = StatelessServiceUpdateProperties.class),
+ @JsonSubTypes.Type(name = "Stateful", value = StatefulServiceUpdateProperties.class)
+})
+public class ServiceUpdateProperties extends ServicePropertiesBase {
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/SettingsParameterDescription.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/SettingsParameterDescription.java
new file mode 100644
index 000000000000..88de8af993e8
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/SettingsParameterDescription.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Describes a parameter in fabric settings of the cluster.
+ */
+public class SettingsParameterDescription {
+ /**
+ * The parameter name of fabric setting.
+ */
+ @JsonProperty(value = "name", required = true)
+ private String name;
+
+ /**
+ * The parameter value of fabric setting.
+ */
+ @JsonProperty(value = "value", required = true)
+ private String value;
+
+ /**
+ * Get the parameter name of fabric setting.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the parameter name of fabric setting.
+ *
+ * @param name the name value to set
+ * @return the SettingsParameterDescription object itself.
+ */
+ public SettingsParameterDescription withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the parameter value of fabric setting.
+ *
+ * @return the value value
+ */
+ public String value() {
+ return this.value;
+ }
+
+ /**
+ * Set the parameter value of fabric setting.
+ *
+ * @param value the value value to set
+ * @return the SettingsParameterDescription object itself.
+ */
+ public SettingsParameterDescription withValue(String value) {
+ this.value = value;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/SettingsSectionDescription.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/SettingsSectionDescription.java
new file mode 100644
index 000000000000..36bf20922260
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/SettingsSectionDescription.java
@@ -0,0 +1,70 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Describes a section in the fabric settings of the cluster.
+ */
+public class SettingsSectionDescription {
+ /**
+ * The section name of the fabric settings.
+ */
+ @JsonProperty(value = "name", required = true)
+ private String name;
+
+ /**
+ * The collection of parameters in the section.
+ */
+ @JsonProperty(value = "parameters", required = true)
+ private List parameters;
+
+ /**
+ * Get the section name of the fabric settings.
+ *
+ * @return the name value
+ */
+ public String name() {
+ return this.name;
+ }
+
+ /**
+ * Set the section name of the fabric settings.
+ *
+ * @param name the name value to set
+ * @return the SettingsSectionDescription object itself.
+ */
+ public SettingsSectionDescription withName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ /**
+ * Get the collection of parameters in the section.
+ *
+ * @return the parameters value
+ */
+ public List parameters() {
+ return this.parameters;
+ }
+
+ /**
+ * Set the collection of parameters in the section.
+ *
+ * @param parameters the parameters value to set
+ * @return the SettingsSectionDescription object itself.
+ */
+ public SettingsSectionDescription withParameters(List parameters) {
+ this.parameters = parameters;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/SingletonPartitionSchemeDescription.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/SingletonPartitionSchemeDescription.java
new file mode 100644
index 000000000000..b974376d93f9
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/SingletonPartitionSchemeDescription.java
@@ -0,0 +1,21 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * Describes the partition scheme of a singleton-partitioned, or
+ * non-partitioned service.
+ */
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "PartitionScheme", defaultImpl = SingletonPartitionSchemeDescription.class)
+@JsonTypeName("Singleton")
+public class SingletonPartitionSchemeDescription extends PartitionSchemeDescription {
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/StatefulServiceProperties.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/StatefulServiceProperties.java
new file mode 100644
index 000000000000..9004b1afb826
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/StatefulServiceProperties.java
@@ -0,0 +1,183 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * The properties of a stateful service resource.
+ */
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "serviceKind", defaultImpl = StatefulServiceProperties.class)
+@JsonTypeName("Stateful")
+public class StatefulServiceProperties extends ServiceProperties {
+ /**
+ * A flag indicating whether this is a persistent service which stores
+ * states on the local disk. If it is then the value of this property is
+ * true, if not it is false.
+ */
+ @JsonProperty(value = "hasPersistedState")
+ private Boolean hasPersistedState;
+
+ /**
+ * The target replica set size as a number.
+ */
+ @JsonProperty(value = "targetReplicaSetSize")
+ private Integer targetReplicaSetSize;
+
+ /**
+ * The minimum replica set size as a number.
+ */
+ @JsonProperty(value = "minReplicaSetSize")
+ private Integer minReplicaSetSize;
+
+ /**
+ * The duration between when a replica goes down and when a new replica is
+ * created, represented in ISO 8601 format (hh:mm:ss.s).
+ */
+ @JsonProperty(value = "replicaRestartWaitDuration")
+ private DateTime replicaRestartWaitDuration;
+
+ /**
+ * The maximum duration for which a partition is allowed to be in a state
+ * of quorum loss, represented in ISO 8601 format (hh:mm:ss.s).
+ */
+ @JsonProperty(value = "quorumLossWaitDuration")
+ private DateTime quorumLossWaitDuration;
+
+ /**
+ * The definition on how long StandBy replicas should be maintained before
+ * being removed, represented in ISO 8601 format (hh:mm:ss.s).
+ */
+ @JsonProperty(value = "standByReplicaKeepDuration")
+ private DateTime standByReplicaKeepDuration;
+
+ /**
+ * Get a flag indicating whether this is a persistent service which stores states on the local disk. If it is then the value of this property is true, if not it is false.
+ *
+ * @return the hasPersistedState value
+ */
+ public Boolean hasPersistedState() {
+ return this.hasPersistedState;
+ }
+
+ /**
+ * Set a flag indicating whether this is a persistent service which stores states on the local disk. If it is then the value of this property is true, if not it is false.
+ *
+ * @param hasPersistedState the hasPersistedState value to set
+ * @return the StatefulServiceProperties object itself.
+ */
+ public StatefulServiceProperties withHasPersistedState(Boolean hasPersistedState) {
+ this.hasPersistedState = hasPersistedState;
+ return this;
+ }
+
+ /**
+ * Get the target replica set size as a number.
+ *
+ * @return the targetReplicaSetSize value
+ */
+ public Integer targetReplicaSetSize() {
+ return this.targetReplicaSetSize;
+ }
+
+ /**
+ * Set the target replica set size as a number.
+ *
+ * @param targetReplicaSetSize the targetReplicaSetSize value to set
+ * @return the StatefulServiceProperties object itself.
+ */
+ public StatefulServiceProperties withTargetReplicaSetSize(Integer targetReplicaSetSize) {
+ this.targetReplicaSetSize = targetReplicaSetSize;
+ return this;
+ }
+
+ /**
+ * Get the minimum replica set size as a number.
+ *
+ * @return the minReplicaSetSize value
+ */
+ public Integer minReplicaSetSize() {
+ return this.minReplicaSetSize;
+ }
+
+ /**
+ * Set the minimum replica set size as a number.
+ *
+ * @param minReplicaSetSize the minReplicaSetSize value to set
+ * @return the StatefulServiceProperties object itself.
+ */
+ public StatefulServiceProperties withMinReplicaSetSize(Integer minReplicaSetSize) {
+ this.minReplicaSetSize = minReplicaSetSize;
+ return this;
+ }
+
+ /**
+ * Get the duration between when a replica goes down and when a new replica is created, represented in ISO 8601 format (hh:mm:ss.s).
+ *
+ * @return the replicaRestartWaitDuration value
+ */
+ public DateTime replicaRestartWaitDuration() {
+ return this.replicaRestartWaitDuration;
+ }
+
+ /**
+ * Set the duration between when a replica goes down and when a new replica is created, represented in ISO 8601 format (hh:mm:ss.s).
+ *
+ * @param replicaRestartWaitDuration the replicaRestartWaitDuration value to set
+ * @return the StatefulServiceProperties object itself.
+ */
+ public StatefulServiceProperties withReplicaRestartWaitDuration(DateTime replicaRestartWaitDuration) {
+ this.replicaRestartWaitDuration = replicaRestartWaitDuration;
+ return this;
+ }
+
+ /**
+ * Get the maximum duration for which a partition is allowed to be in a state of quorum loss, represented in ISO 8601 format (hh:mm:ss.s).
+ *
+ * @return the quorumLossWaitDuration value
+ */
+ public DateTime quorumLossWaitDuration() {
+ return this.quorumLossWaitDuration;
+ }
+
+ /**
+ * Set the maximum duration for which a partition is allowed to be in a state of quorum loss, represented in ISO 8601 format (hh:mm:ss.s).
+ *
+ * @param quorumLossWaitDuration the quorumLossWaitDuration value to set
+ * @return the StatefulServiceProperties object itself.
+ */
+ public StatefulServiceProperties withQuorumLossWaitDuration(DateTime quorumLossWaitDuration) {
+ this.quorumLossWaitDuration = quorumLossWaitDuration;
+ return this;
+ }
+
+ /**
+ * Get the definition on how long StandBy replicas should be maintained before being removed, represented in ISO 8601 format (hh:mm:ss.s).
+ *
+ * @return the standByReplicaKeepDuration value
+ */
+ public DateTime standByReplicaKeepDuration() {
+ return this.standByReplicaKeepDuration;
+ }
+
+ /**
+ * Set the definition on how long StandBy replicas should be maintained before being removed, represented in ISO 8601 format (hh:mm:ss.s).
+ *
+ * @param standByReplicaKeepDuration the standByReplicaKeepDuration value to set
+ * @return the StatefulServiceProperties object itself.
+ */
+ public StatefulServiceProperties withStandByReplicaKeepDuration(DateTime standByReplicaKeepDuration) {
+ this.standByReplicaKeepDuration = standByReplicaKeepDuration;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/StatefulServiceUpdateProperties.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/StatefulServiceUpdateProperties.java
new file mode 100644
index 000000000000..ab8188dc2fe6
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/StatefulServiceUpdateProperties.java
@@ -0,0 +1,155 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import org.joda.time.DateTime;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * The properties of a stateful service resource for patch operations.
+ */
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "serviceKind", defaultImpl = StatefulServiceUpdateProperties.class)
+@JsonTypeName("Stateful")
+public class StatefulServiceUpdateProperties extends ServiceUpdateProperties {
+ /**
+ * The target replica set size as a number.
+ */
+ @JsonProperty(value = "targetReplicaSetSize")
+ private Integer targetReplicaSetSize;
+
+ /**
+ * The minimum replica set size as a number.
+ */
+ @JsonProperty(value = "minReplicaSetSize")
+ private Integer minReplicaSetSize;
+
+ /**
+ * The duration between when a replica goes down and when a new replica is
+ * created, represented in ISO 8601 format (hh:mm:ss.s).
+ */
+ @JsonProperty(value = "replicaRestartWaitDuration")
+ private DateTime replicaRestartWaitDuration;
+
+ /**
+ * The maximum duration for which a partition is allowed to be in a state
+ * of quorum loss, represented in ISO 8601 format (hh:mm:ss.s).
+ */
+ @JsonProperty(value = "quorumLossWaitDuration")
+ private DateTime quorumLossWaitDuration;
+
+ /**
+ * The definition on how long StandBy replicas should be maintained before
+ * being removed, represented in ISO 8601 format (hh:mm:ss.s).
+ */
+ @JsonProperty(value = "standByReplicaKeepDuration")
+ private DateTime standByReplicaKeepDuration;
+
+ /**
+ * Get the target replica set size as a number.
+ *
+ * @return the targetReplicaSetSize value
+ */
+ public Integer targetReplicaSetSize() {
+ return this.targetReplicaSetSize;
+ }
+
+ /**
+ * Set the target replica set size as a number.
+ *
+ * @param targetReplicaSetSize the targetReplicaSetSize value to set
+ * @return the StatefulServiceUpdateProperties object itself.
+ */
+ public StatefulServiceUpdateProperties withTargetReplicaSetSize(Integer targetReplicaSetSize) {
+ this.targetReplicaSetSize = targetReplicaSetSize;
+ return this;
+ }
+
+ /**
+ * Get the minimum replica set size as a number.
+ *
+ * @return the minReplicaSetSize value
+ */
+ public Integer minReplicaSetSize() {
+ return this.minReplicaSetSize;
+ }
+
+ /**
+ * Set the minimum replica set size as a number.
+ *
+ * @param minReplicaSetSize the minReplicaSetSize value to set
+ * @return the StatefulServiceUpdateProperties object itself.
+ */
+ public StatefulServiceUpdateProperties withMinReplicaSetSize(Integer minReplicaSetSize) {
+ this.minReplicaSetSize = minReplicaSetSize;
+ return this;
+ }
+
+ /**
+ * Get the duration between when a replica goes down and when a new replica is created, represented in ISO 8601 format (hh:mm:ss.s).
+ *
+ * @return the replicaRestartWaitDuration value
+ */
+ public DateTime replicaRestartWaitDuration() {
+ return this.replicaRestartWaitDuration;
+ }
+
+ /**
+ * Set the duration between when a replica goes down and when a new replica is created, represented in ISO 8601 format (hh:mm:ss.s).
+ *
+ * @param replicaRestartWaitDuration the replicaRestartWaitDuration value to set
+ * @return the StatefulServiceUpdateProperties object itself.
+ */
+ public StatefulServiceUpdateProperties withReplicaRestartWaitDuration(DateTime replicaRestartWaitDuration) {
+ this.replicaRestartWaitDuration = replicaRestartWaitDuration;
+ return this;
+ }
+
+ /**
+ * Get the maximum duration for which a partition is allowed to be in a state of quorum loss, represented in ISO 8601 format (hh:mm:ss.s).
+ *
+ * @return the quorumLossWaitDuration value
+ */
+ public DateTime quorumLossWaitDuration() {
+ return this.quorumLossWaitDuration;
+ }
+
+ /**
+ * Set the maximum duration for which a partition is allowed to be in a state of quorum loss, represented in ISO 8601 format (hh:mm:ss.s).
+ *
+ * @param quorumLossWaitDuration the quorumLossWaitDuration value to set
+ * @return the StatefulServiceUpdateProperties object itself.
+ */
+ public StatefulServiceUpdateProperties withQuorumLossWaitDuration(DateTime quorumLossWaitDuration) {
+ this.quorumLossWaitDuration = quorumLossWaitDuration;
+ return this;
+ }
+
+ /**
+ * Get the definition on how long StandBy replicas should be maintained before being removed, represented in ISO 8601 format (hh:mm:ss.s).
+ *
+ * @return the standByReplicaKeepDuration value
+ */
+ public DateTime standByReplicaKeepDuration() {
+ return this.standByReplicaKeepDuration;
+ }
+
+ /**
+ * Set the definition on how long StandBy replicas should be maintained before being removed, represented in ISO 8601 format (hh:mm:ss.s).
+ *
+ * @param standByReplicaKeepDuration the standByReplicaKeepDuration value to set
+ * @return the StatefulServiceUpdateProperties object itself.
+ */
+ public StatefulServiceUpdateProperties withStandByReplicaKeepDuration(DateTime standByReplicaKeepDuration) {
+ this.standByReplicaKeepDuration = standByReplicaKeepDuration;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/StatelessServiceProperties.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/StatelessServiceProperties.java
new file mode 100644
index 000000000000..fb7f18818e9a
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/StatelessServiceProperties.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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * The properties of a stateless service resource.
+ */
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "serviceKind", defaultImpl = StatelessServiceProperties.class)
+@JsonTypeName("Stateless")
+public class StatelessServiceProperties extends ServiceProperties {
+ /**
+ * The instance count.
+ */
+ @JsonProperty(value = "instanceCount")
+ private Integer instanceCount;
+
+ /**
+ * Get the instance count.
+ *
+ * @return the instanceCount value
+ */
+ public Integer instanceCount() {
+ return this.instanceCount;
+ }
+
+ /**
+ * Set the instance count.
+ *
+ * @param instanceCount the instanceCount value to set
+ * @return the StatelessServiceProperties object itself.
+ */
+ public StatelessServiceProperties withInstanceCount(Integer instanceCount) {
+ this.instanceCount = instanceCount;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/StatelessServiceUpdateProperties.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/StatelessServiceUpdateProperties.java
new file mode 100644
index 000000000000..a0f8a967e43f
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/StatelessServiceUpdateProperties.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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * The properties of a stateless service resource for patch operations.
+ */
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "serviceKind", defaultImpl = StatelessServiceUpdateProperties.class)
+@JsonTypeName("Stateless")
+public class StatelessServiceUpdateProperties extends ServiceUpdateProperties {
+ /**
+ * The instance count.
+ */
+ @JsonProperty(value = "instanceCount")
+ private Integer instanceCount;
+
+ /**
+ * Get the instance count.
+ *
+ * @return the instanceCount value
+ */
+ public Integer instanceCount() {
+ return this.instanceCount;
+ }
+
+ /**
+ * Set the instance count.
+ *
+ * @param instanceCount the instanceCount value to set
+ * @return the StatelessServiceUpdateProperties object itself.
+ */
+ public StatelessServiceUpdateProperties withInstanceCount(Integer instanceCount) {
+ this.instanceCount = instanceCount;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/UniformInt64RangePartitionSchemeDescription.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/UniformInt64RangePartitionSchemeDescription.java
new file mode 100644
index 000000000000..9f05a1480bf2
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/UniformInt64RangePartitionSchemeDescription.java
@@ -0,0 +1,106 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.JsonTypeName;
+
+/**
+ * Describes a partitioning scheme where an integer range is allocated evenly
+ * across a number of partitions.
+ */
+@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "PartitionScheme", defaultImpl = UniformInt64RangePartitionSchemeDescription.class)
+@JsonTypeName("UniformInt64Range")
+public class UniformInt64RangePartitionSchemeDescription extends PartitionSchemeDescription {
+ /**
+ * The number of partitions.
+ */
+ @JsonProperty(value = "Count", required = true)
+ private int count;
+
+ /**
+ * String indicating the lower bound of the partition key range that
+ * should be split between the partition ‘Count’.
+ */
+ @JsonProperty(value = "LowKey", required = true)
+ private String lowKey;
+
+ /**
+ * String indicating the upper bound of the partition key range that
+ * should be split between the partition ‘Count’.
+ */
+ @JsonProperty(value = "HighKey", required = true)
+ private String highKey;
+
+ /**
+ * Get the number of partitions.
+ *
+ * @return the count value
+ */
+ public int count() {
+ return this.count;
+ }
+
+ /**
+ * Set the number of partitions.
+ *
+ * @param count the count value to set
+ * @return the UniformInt64RangePartitionSchemeDescription object itself.
+ */
+ public UniformInt64RangePartitionSchemeDescription withCount(int count) {
+ this.count = count;
+ return this;
+ }
+
+ /**
+ * Get string indicating the lower bound of the partition key range that
+ should be split between the partition ‘Count’.
+ *
+ * @return the lowKey value
+ */
+ public String lowKey() {
+ return this.lowKey;
+ }
+
+ /**
+ * Set string indicating the lower bound of the partition key range that
+ should be split between the partition ‘Count’.
+ *
+ * @param lowKey the lowKey value to set
+ * @return the UniformInt64RangePartitionSchemeDescription object itself.
+ */
+ public UniformInt64RangePartitionSchemeDescription withLowKey(String lowKey) {
+ this.lowKey = lowKey;
+ return this;
+ }
+
+ /**
+ * Get string indicating the upper bound of the partition key range that
+ should be split between the partition ‘Count’.
+ *
+ * @return the highKey value
+ */
+ public String highKey() {
+ return this.highKey;
+ }
+
+ /**
+ * Set string indicating the upper bound of the partition key range that
+ should be split between the partition ‘Count’.
+ *
+ * @param highKey the highKey value to set
+ * @return the UniformInt64RangePartitionSchemeDescription object itself.
+ */
+ public UniformInt64RangePartitionSchemeDescription withHighKey(String highKey) {
+ this.highKey = highKey;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/VersionResource.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/VersionResource.java
new file mode 100644
index 000000000000..e7e84552e686
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/VersionResource.java
@@ -0,0 +1,104 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.ProxyResource;
+
+/**
+ * A version resource for the specified application type name.
+ */
+@JsonFlatten
+public class VersionResource extends ProxyResource {
+ /**
+ * The current deployment or provisioning state, which only appears in the
+ * response.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private String provisioningState;
+
+ /**
+ * The URL to the application package.
+ */
+ @JsonProperty(value = "properties.appPackageUrl", required = true)
+ private String appPackageUrl;
+
+ /**
+ * The defaultParameterList property.
+ */
+ @JsonProperty(value = "properties.defaultParameterList", access = JsonProperty.Access.WRITE_ONLY)
+ private List defaultParameterList;
+
+ /**
+ * Resource location.
+ */
+ @JsonProperty(value = "location", required = true)
+ private String location;
+
+ /**
+ * Get the current deployment or provisioning state, which only appears in the response.
+ *
+ * @return the provisioningState value
+ */
+ public String provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the URL to the application package.
+ *
+ * @return the appPackageUrl value
+ */
+ public String appPackageUrl() {
+ return this.appPackageUrl;
+ }
+
+ /**
+ * Set the URL to the application package.
+ *
+ * @param appPackageUrl the appPackageUrl value to set
+ * @return the VersionResource object itself.
+ */
+ public VersionResource withAppPackageUrl(String appPackageUrl) {
+ this.appPackageUrl = appPackageUrl;
+ return this;
+ }
+
+ /**
+ * Get the defaultParameterList value.
+ *
+ * @return the defaultParameterList value
+ */
+ public List defaultParameterList() {
+ return this.defaultParameterList;
+ }
+
+ /**
+ * Get resource location.
+ *
+ * @return the location value
+ */
+ public String location() {
+ return this.location;
+ }
+
+ /**
+ * Set resource location.
+ *
+ * @param location the location value to set
+ * @return the VersionResource object itself.
+ */
+ public VersionResource withLocation(String location) {
+ this.location = location;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/VersionResourceList.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/VersionResourceList.java
new file mode 100644
index 000000000000..9acdab65536b
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/VersionResourceList.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.servicefabric.v2017_07_01_preview;
+
+import java.util.List;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The list of version resources for the specified application type name.
+ */
+public class VersionResourceList {
+ /**
+ * The value property.
+ */
+ @JsonProperty(value = "value")
+ private List value;
+
+ /**
+ * Get the value value.
+ *
+ * @return the value value
+ */
+ public List value() {
+ return this.value;
+ }
+
+ /**
+ * Set the value value.
+ *
+ * @param value the value value to set
+ * @return the VersionResourceList object itself.
+ */
+ public VersionResourceList withValue(List value) {
+ this.value = value;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/implementation/ClusterCodeVersionsListResultImpl.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/implementation/ClusterCodeVersionsListResultImpl.java
new file mode 100644
index 000000000000..dbfe2adec8b9
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/implementation/ClusterCodeVersionsListResultImpl.java
@@ -0,0 +1,45 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview.implementation;
+
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.ClusterCodeVersionsListResult;
+import com.microsoft.azure.arm.model.implementation.WrapperImpl;
+import rx.Observable;
+import java.util.List;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.ClusterCodeVersionsResult;
+
+class ClusterCodeVersionsListResultImpl extends WrapperImpl implements ClusterCodeVersionsListResult {
+ private final ServiceFabricManager manager;
+ private String location;
+ private String subscriptionId;
+ private String clusterVersion;
+
+ ClusterCodeVersionsListResultImpl(ClusterCodeVersionsListResultInner inner, ServiceFabricManager manager) {
+ super(inner);
+ this.manager = manager;
+ }
+
+ @Override
+ public ServiceFabricManager manager() {
+ return this.manager;
+ }
+
+
+
+ @Override
+ public String nextLink() {
+ return this.inner().nextLink();
+ }
+
+ @Override
+ public List value() {
+ return this.inner().value();
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/implementation/ClusterCodeVersionsListResultInner.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/implementation/ClusterCodeVersionsListResultInner.java
new file mode 100644
index 000000000000..371074e01a5b
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/implementation/ClusterCodeVersionsListResultInner.java
@@ -0,0 +1,71 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview.implementation;
+
+import java.util.List;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.ClusterCodeVersionsResult;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * The list results of the ServiceFabric runtime versions.
+ */
+public class ClusterCodeVersionsListResultInner {
+ /**
+ * The value property.
+ */
+ @JsonProperty(value = "value")
+ private List value;
+
+ /**
+ * The URL to use for getting the next set of results.
+ */
+ @JsonProperty(value = "nextLink")
+ private String nextLink;
+
+ /**
+ * Get the value value.
+ *
+ * @return the value value
+ */
+ public List value() {
+ return this.value;
+ }
+
+ /**
+ * Set the value value.
+ *
+ * @param value the value value to set
+ * @return the ClusterCodeVersionsListResultInner object itself.
+ */
+ public ClusterCodeVersionsListResultInner withValue(List value) {
+ this.value = value;
+ return this;
+ }
+
+ /**
+ * Get the URL to use for getting the next set of results.
+ *
+ * @return the nextLink value
+ */
+ public String nextLink() {
+ return this.nextLink;
+ }
+
+ /**
+ * Set the URL to use for getting the next set of results.
+ *
+ * @param nextLink the nextLink value to set
+ * @return the ClusterCodeVersionsListResultInner object itself.
+ */
+ public ClusterCodeVersionsListResultInner withNextLink(String nextLink) {
+ this.nextLink = nextLink;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/implementation/ClusterImpl.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/implementation/ClusterImpl.java
new file mode 100644
index 000000000000..e01783aa43a8
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/implementation/ClusterImpl.java
@@ -0,0 +1,336 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview.implementation;
+
+import com.microsoft.azure.arm.resources.models.implementation.GroupableResourceCoreImpl;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.Cluster;
+import rx.Observable;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.ClusterUpdateParameters;
+import java.util.List;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.ClusterVersionDetails;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.CertificateDescription;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.ClientCertificateThumbprint;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.ClientCertificateCommonName;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.SettingsSectionDescription;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.NodeTypeDescription;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.AzureActiveDirectory;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.ProvisioningState;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.DiagnosticsStorageAccountConfig;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.ClusterUpgradePolicy;
+import rx.functions.Func1;
+
+class ClusterImpl extends GroupableResourceCoreImpl implements Cluster, Cluster.Definition, Cluster.Update {
+ private String capiVersion;
+ private String uapiVersion;
+ private ClusterUpdateParameters updateParameter;
+ ClusterImpl(String name, ClusterInner inner, ServiceFabricManager manager) {
+ super(name, inner, manager);
+ this.updateParameter = new ClusterUpdateParameters();
+ }
+
+ @Override
+ public Observable createResourceAsync() {
+ ClustersInner client = this.manager().inner().clusters();
+ return client.createAsync(this.resourceGroupName(), this.name(), this.capiVersion, this.inner())
+ .map(new Func1() {
+ @Override
+ public ClusterInner call(ClusterInner resource) {
+ resetCreateUpdateParameters();
+ return resource;
+ }
+ })
+ .map(innerToFluentMap(this));
+ }
+
+ @Override
+ public Observable updateResourceAsync() {
+ ClustersInner client = this.manager().inner().clusters();
+ return client.updateAsync(this.resourceGroupName(), this.name(), this.uapiVersion, this.updateParameter)
+ .map(new Func1() {
+ @Override
+ public ClusterInner call(ClusterInner resource) {
+ resetCreateUpdateParameters();
+ return resource;
+ }
+ })
+ .map(innerToFluentMap(this));
+ }
+
+ @Override
+ protected Observable getInnerAsync() {
+ ClustersInner client = this.manager().inner().clusters();
+ return null; // NOP getInnerAsync implementation as get is not supported
+ }
+
+ @Override
+ public boolean isInCreateMode() {
+ return this.inner().id() == null;
+ }
+
+ private void resetCreateUpdateParameters() {
+ this.updateParameter = new ClusterUpdateParameters();
+ }
+
+ @Override
+ public List addOnFeatures() {
+ return this.inner().addOnFeatures();
+ }
+
+ @Override
+ public List availableClusterVersions() {
+ return this.inner().availableClusterVersions();
+ }
+
+ @Override
+ public AzureActiveDirectory azureActiveDirectory() {
+ return this.inner().azureActiveDirectory();
+ }
+
+ @Override
+ public CertificateDescription certificate() {
+ return this.inner().certificate();
+ }
+
+ @Override
+ public List clientCertificateCommonNames() {
+ return this.inner().clientCertificateCommonNames();
+ }
+
+ @Override
+ public List clientCertificateThumbprints() {
+ return this.inner().clientCertificateThumbprints();
+ }
+
+ @Override
+ public String clusterCodeVersion() {
+ return this.inner().clusterCodeVersion();
+ }
+
+ @Override
+ public String clusterEndpoint() {
+ return this.inner().clusterEndpoint();
+ }
+
+ @Override
+ public String clusterId() {
+ return this.inner().clusterId();
+ }
+
+ @Override
+ public String clusterState() {
+ return this.inner().clusterState();
+ }
+
+ @Override
+ public DiagnosticsStorageAccountConfig diagnosticsStorageAccountConfig() {
+ return this.inner().diagnosticsStorageAccountConfig();
+ }
+
+ @Override
+ public List fabricSettings() {
+ return this.inner().fabricSettings();
+ }
+
+ @Override
+ public String managementEndpoint() {
+ return this.inner().managementEndpoint();
+ }
+
+ @Override
+ public List nodeTypes() {
+ return this.inner().nodeTypes();
+ }
+
+ @Override
+ public ProvisioningState provisioningState() {
+ return this.inner().provisioningState();
+ }
+
+ @Override
+ public String reliabilityLevel() {
+ return this.inner().reliabilityLevel();
+ }
+
+ @Override
+ public CertificateDescription reverseProxyCertificate() {
+ return this.inner().reverseProxyCertificate();
+ }
+
+ @Override
+ public ClusterUpgradePolicy upgradeDescription() {
+ return this.inner().upgradeDescription();
+ }
+
+ @Override
+ public String upgradeMode() {
+ return this.inner().upgradeMode();
+ }
+
+ @Override
+ public String vmImage() {
+ return this.inner().vmImage();
+ }
+
+ @Override
+ public ClusterImpl withManagementEndpoint(String managementEndpoint) {
+ this.inner().withManagementEndpoint(managementEndpoint);
+ return this;
+ }
+
+ @Override
+ public ClusterImpl withAvailableClusterVersions(List availableClusterVersions) {
+ this.inner().withAvailableClusterVersions(availableClusterVersions);
+ return this;
+ }
+
+ @Override
+ public ClusterImpl withAzureActiveDirectory(AzureActiveDirectory azureActiveDirectory) {
+ this.inner().withAzureActiveDirectory(azureActiveDirectory);
+ return this;
+ }
+
+ @Override
+ public ClusterImpl withClusterState(String clusterState) {
+ this.inner().withClusterState(clusterState);
+ return this;
+ }
+
+ @Override
+ public ClusterImpl withDiagnosticsStorageAccountConfig(DiagnosticsStorageAccountConfig diagnosticsStorageAccountConfig) {
+ this.inner().withDiagnosticsStorageAccountConfig(diagnosticsStorageAccountConfig);
+ return this;
+ }
+
+ @Override
+ public ClusterImpl withVmImage(String vmImage) {
+ this.inner().withVmImage(vmImage);
+ return this;
+ }
+
+ @Override
+ public ClusterImpl withApiVersion(String apiVersion) {
+ if (isInCreateMode()) {
+ this.capiVersion = apiVersion;
+ } else {
+ this.uapiVersion = apiVersion;
+ }
+ return this;
+ }
+
+ @Override
+ public ClusterImpl withNodeTypes(List nodeTypes) {
+ if (isInCreateMode()) {
+ this.inner().withNodeTypes(nodeTypes);
+ } else {
+ this.updateParameter.withNodeTypes(nodeTypes);
+ }
+ return this;
+ }
+
+ @Override
+ public ClusterImpl withAddOnFeatures(List addOnFeatures) {
+ if (isInCreateMode()) {
+ this.inner().withAddOnFeatures(addOnFeatures);
+ } else {
+ this.updateParameter.withAddOnFeatures(addOnFeatures);
+ }
+ return this;
+ }
+
+ @Override
+ public ClusterImpl withCertificate(CertificateDescription certificate) {
+ if (isInCreateMode()) {
+ this.inner().withCertificate(certificate);
+ } else {
+ this.updateParameter.withCertificate(certificate);
+ }
+ return this;
+ }
+
+ @Override
+ public ClusterImpl withClientCertificateCommonNames(List clientCertificateCommonNames) {
+ if (isInCreateMode()) {
+ this.inner().withClientCertificateCommonNames(clientCertificateCommonNames);
+ } else {
+ this.updateParameter.withClientCertificateCommonNames(clientCertificateCommonNames);
+ }
+ return this;
+ }
+
+ @Override
+ public ClusterImpl withClientCertificateThumbprints(List clientCertificateThumbprints) {
+ if (isInCreateMode()) {
+ this.inner().withClientCertificateThumbprints(clientCertificateThumbprints);
+ } else {
+ this.updateParameter.withClientCertificateThumbprints(clientCertificateThumbprints);
+ }
+ return this;
+ }
+
+ @Override
+ public ClusterImpl withClusterCodeVersion(String clusterCodeVersion) {
+ if (isInCreateMode()) {
+ this.inner().withClusterCodeVersion(clusterCodeVersion);
+ } else {
+ this.updateParameter.withClusterCodeVersion(clusterCodeVersion);
+ }
+ return this;
+ }
+
+ @Override
+ public ClusterImpl withFabricSettings(List fabricSettings) {
+ if (isInCreateMode()) {
+ this.inner().withFabricSettings(fabricSettings);
+ } else {
+ this.updateParameter.withFabricSettings(fabricSettings);
+ }
+ return this;
+ }
+
+ @Override
+ public ClusterImpl withReliabilityLevel(String reliabilityLevel) {
+ if (isInCreateMode()) {
+ this.inner().withReliabilityLevel(reliabilityLevel);
+ } else {
+ this.updateParameter.withReliabilityLevel(reliabilityLevel);
+ }
+ return this;
+ }
+
+ @Override
+ public ClusterImpl withReverseProxyCertificate(CertificateDescription reverseProxyCertificate) {
+ if (isInCreateMode()) {
+ this.inner().withReverseProxyCertificate(reverseProxyCertificate);
+ } else {
+ this.updateParameter.withReverseProxyCertificate(reverseProxyCertificate);
+ }
+ return this;
+ }
+
+ @Override
+ public ClusterImpl withUpgradeDescription(ClusterUpgradePolicy upgradeDescription) {
+ if (isInCreateMode()) {
+ this.inner().withUpgradeDescription(upgradeDescription);
+ } else {
+ this.updateParameter.withUpgradeDescription(upgradeDescription);
+ }
+ return this;
+ }
+
+ @Override
+ public ClusterImpl withUpgradeMode(String upgradeMode) {
+ if (isInCreateMode()) {
+ this.inner().withUpgradeMode(upgradeMode);
+ } else {
+ this.updateParameter.withUpgradeMode(upgradeMode);
+ }
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/implementation/ClusterInner.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/implementation/ClusterInner.java
new file mode 100644
index 000000000000..fb1a0cb11ddc
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/implementation/ClusterInner.java
@@ -0,0 +1,534 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview.implementation;
+
+import java.util.List;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.ClusterVersionDetails;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.CertificateDescription;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.ClientCertificateThumbprint;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.ClientCertificateCommonName;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.SettingsSectionDescription;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.NodeTypeDescription;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.AzureActiveDirectory;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.ProvisioningState;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.DiagnosticsStorageAccountConfig;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.ClusterUpgradePolicy;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.microsoft.rest.serializer.JsonFlatten;
+import com.microsoft.azure.Resource;
+
+/**
+ * The cluster resource.
+ */
+@JsonFlatten
+public class ClusterInner extends Resource {
+ /**
+ * The Service Fabric runtime versions available for this cluster.
+ */
+ @JsonProperty(value = "properties.availableClusterVersions")
+ private List availableClusterVersions;
+
+ /**
+ * A service generated unique identifier for the cluster resource.
+ */
+ @JsonProperty(value = "properties.clusterId", access = JsonProperty.Access.WRITE_ONLY)
+ private String clusterId;
+
+ /**
+ * Possible values include: 'WaitingForNodes', 'Deploying',
+ * 'BaselineUpgrade', 'UpdatingUserConfiguration',
+ * 'UpdatingUserCertificate', 'UpdatingInfrastructure',
+ * 'EnforcingClusterVersion', 'UpgradeServiceUnreachable', 'AutoScale',
+ * 'Ready'.
+ */
+ @JsonProperty(value = "properties.clusterState")
+ private String clusterState;
+
+ /**
+ * The Azure Resource Provider endpoint. A system service in the cluster
+ * connects to this endpoint.
+ */
+ @JsonProperty(value = "properties.clusterEndpoint", access = JsonProperty.Access.WRITE_ONLY)
+ private String clusterEndpoint;
+
+ /**
+ * The Service Fabric runtime version of the cluster. This property can
+ * only by set the user when **upgradeMode** is set to 'Manual'. To get
+ * list of available Service Fabric versions for new clusters use
+ * [ClusterVersion API](./ClusterVersion.md). To get the list of available
+ * version for existing clusters use **availableClusterVersions**.
+ */
+ @JsonProperty(value = "properties.clusterCodeVersion")
+ private String clusterCodeVersion;
+
+ /**
+ * The certificate to use for securing the cluster. The certificate
+ * provided will be used for node to node security within the cluster, SSL
+ * certificate for cluster management endpoint and default admin client.
+ */
+ @JsonProperty(value = "properties.certificate")
+ private CertificateDescription certificate;
+
+ /**
+ * Possible values include: 'None', 'Bronze', 'Silver', 'Gold', 'Platinum'.
+ */
+ @JsonProperty(value = "properties.reliabilityLevel")
+ private String reliabilityLevel;
+
+ /**
+ * Possible values include: 'Automatic', 'Manual'.
+ */
+ @JsonProperty(value = "properties.upgradeMode")
+ private String upgradeMode;
+
+ /**
+ * The list of client certificates referenced by thumbprint that are
+ * allowed to manage the cluster.
+ */
+ @JsonProperty(value = "properties.clientCertificateThumbprints")
+ private List clientCertificateThumbprints;
+
+ /**
+ * The list of client certificates referenced by common name that are
+ * allowed to manage the cluster.
+ */
+ @JsonProperty(value = "properties.clientCertificateCommonNames")
+ private List clientCertificateCommonNames;
+
+ /**
+ * The list of custom fabric settings to configure the cluster.
+ */
+ @JsonProperty(value = "properties.fabricSettings")
+ private List fabricSettings;
+
+ /**
+ * The server certificate used by reverse proxy.
+ */
+ @JsonProperty(value = "properties.reverseProxyCertificate")
+ private CertificateDescription reverseProxyCertificate;
+
+ /**
+ * The http management endpoint of the cluster.
+ */
+ @JsonProperty(value = "properties.managementEndpoint", required = true)
+ private String managementEndpoint;
+
+ /**
+ * The list of node types in the cluster.
+ */
+ @JsonProperty(value = "properties.nodeTypes", required = true)
+ private List nodeTypes;
+
+ /**
+ * The AAD authentication settings of the cluster.
+ */
+ @JsonProperty(value = "properties.azureActiveDirectory")
+ private AzureActiveDirectory azureActiveDirectory;
+
+ /**
+ * The provisioning state of the cluster resource. Possible values include:
+ * 'Updating', 'Succeeded', 'Failed', 'Canceled'.
+ */
+ @JsonProperty(value = "properties.provisioningState", access = JsonProperty.Access.WRITE_ONLY)
+ private ProvisioningState provisioningState;
+
+ /**
+ * The VM image VMSS has been configured with. Generic names such as
+ * Windows or Linux can be used.
+ */
+ @JsonProperty(value = "properties.vmImage")
+ private String vmImage;
+
+ /**
+ * The storage account information for storing Service Fabric diagnostic
+ * logs.
+ */
+ @JsonProperty(value = "properties.diagnosticsStorageAccountConfig")
+ private DiagnosticsStorageAccountConfig diagnosticsStorageAccountConfig;
+
+ /**
+ * The policy to use when upgrading the cluster.
+ */
+ @JsonProperty(value = "properties.upgradeDescription")
+ private ClusterUpgradePolicy upgradeDescription;
+
+ /**
+ * The list of add-on features to enable in the cluster.
+ */
+ @JsonProperty(value = "properties.addOnFeatures")
+ private List addOnFeatures;
+
+ /**
+ * Get the Service Fabric runtime versions available for this cluster.
+ *
+ * @return the availableClusterVersions value
+ */
+ public List availableClusterVersions() {
+ return this.availableClusterVersions;
+ }
+
+ /**
+ * Set the Service Fabric runtime versions available for this cluster.
+ *
+ * @param availableClusterVersions the availableClusterVersions value to set
+ * @return the ClusterInner object itself.
+ */
+ public ClusterInner withAvailableClusterVersions(List availableClusterVersions) {
+ this.availableClusterVersions = availableClusterVersions;
+ return this;
+ }
+
+ /**
+ * Get a service generated unique identifier for the cluster resource.
+ *
+ * @return the clusterId value
+ */
+ public String clusterId() {
+ return this.clusterId;
+ }
+
+ /**
+ * Get possible values include: 'WaitingForNodes', 'Deploying', 'BaselineUpgrade', 'UpdatingUserConfiguration', 'UpdatingUserCertificate', 'UpdatingInfrastructure', 'EnforcingClusterVersion', 'UpgradeServiceUnreachable', 'AutoScale', 'Ready'.
+ *
+ * @return the clusterState value
+ */
+ public String clusterState() {
+ return this.clusterState;
+ }
+
+ /**
+ * Set possible values include: 'WaitingForNodes', 'Deploying', 'BaselineUpgrade', 'UpdatingUserConfiguration', 'UpdatingUserCertificate', 'UpdatingInfrastructure', 'EnforcingClusterVersion', 'UpgradeServiceUnreachable', 'AutoScale', 'Ready'.
+ *
+ * @param clusterState the clusterState value to set
+ * @return the ClusterInner object itself.
+ */
+ public ClusterInner withClusterState(String clusterState) {
+ this.clusterState = clusterState;
+ return this;
+ }
+
+ /**
+ * Get the Azure Resource Provider endpoint. A system service in the cluster connects to this endpoint.
+ *
+ * @return the clusterEndpoint value
+ */
+ public String clusterEndpoint() {
+ return this.clusterEndpoint;
+ }
+
+ /**
+ * Get the Service Fabric runtime version of the cluster. This property can only by set the user when **upgradeMode** is set to 'Manual'. To get list of available Service Fabric versions for new clusters use [ClusterVersion API](./ClusterVersion.md). To get the list of available version for existing clusters use **availableClusterVersions**.
+ *
+ * @return the clusterCodeVersion value
+ */
+ public String clusterCodeVersion() {
+ return this.clusterCodeVersion;
+ }
+
+ /**
+ * Set the Service Fabric runtime version of the cluster. This property can only by set the user when **upgradeMode** is set to 'Manual'. To get list of available Service Fabric versions for new clusters use [ClusterVersion API](./ClusterVersion.md). To get the list of available version for existing clusters use **availableClusterVersions**.
+ *
+ * @param clusterCodeVersion the clusterCodeVersion value to set
+ * @return the ClusterInner object itself.
+ */
+ public ClusterInner withClusterCodeVersion(String clusterCodeVersion) {
+ this.clusterCodeVersion = clusterCodeVersion;
+ return this;
+ }
+
+ /**
+ * Get the certificate to use for securing the cluster. The certificate provided will be used for node to node security within the cluster, SSL certificate for cluster management endpoint and default admin client.
+ *
+ * @return the certificate value
+ */
+ public CertificateDescription certificate() {
+ return this.certificate;
+ }
+
+ /**
+ * Set the certificate to use for securing the cluster. The certificate provided will be used for node to node security within the cluster, SSL certificate for cluster management endpoint and default admin client.
+ *
+ * @param certificate the certificate value to set
+ * @return the ClusterInner object itself.
+ */
+ public ClusterInner withCertificate(CertificateDescription certificate) {
+ this.certificate = certificate;
+ return this;
+ }
+
+ /**
+ * Get possible values include: 'None', 'Bronze', 'Silver', 'Gold', 'Platinum'.
+ *
+ * @return the reliabilityLevel value
+ */
+ public String reliabilityLevel() {
+ return this.reliabilityLevel;
+ }
+
+ /**
+ * Set possible values include: 'None', 'Bronze', 'Silver', 'Gold', 'Platinum'.
+ *
+ * @param reliabilityLevel the reliabilityLevel value to set
+ * @return the ClusterInner object itself.
+ */
+ public ClusterInner withReliabilityLevel(String reliabilityLevel) {
+ this.reliabilityLevel = reliabilityLevel;
+ return this;
+ }
+
+ /**
+ * Get possible values include: 'Automatic', 'Manual'.
+ *
+ * @return the upgradeMode value
+ */
+ public String upgradeMode() {
+ return this.upgradeMode;
+ }
+
+ /**
+ * Set possible values include: 'Automatic', 'Manual'.
+ *
+ * @param upgradeMode the upgradeMode value to set
+ * @return the ClusterInner object itself.
+ */
+ public ClusterInner withUpgradeMode(String upgradeMode) {
+ this.upgradeMode = upgradeMode;
+ return this;
+ }
+
+ /**
+ * Get the list of client certificates referenced by thumbprint that are allowed to manage the cluster.
+ *
+ * @return the clientCertificateThumbprints value
+ */
+ public List clientCertificateThumbprints() {
+ return this.clientCertificateThumbprints;
+ }
+
+ /**
+ * Set the list of client certificates referenced by thumbprint that are allowed to manage the cluster.
+ *
+ * @param clientCertificateThumbprints the clientCertificateThumbprints value to set
+ * @return the ClusterInner object itself.
+ */
+ public ClusterInner withClientCertificateThumbprints(List clientCertificateThumbprints) {
+ this.clientCertificateThumbprints = clientCertificateThumbprints;
+ return this;
+ }
+
+ /**
+ * Get the list of client certificates referenced by common name that are allowed to manage the cluster.
+ *
+ * @return the clientCertificateCommonNames value
+ */
+ public List clientCertificateCommonNames() {
+ return this.clientCertificateCommonNames;
+ }
+
+ /**
+ * Set the list of client certificates referenced by common name that are allowed to manage the cluster.
+ *
+ * @param clientCertificateCommonNames the clientCertificateCommonNames value to set
+ * @return the ClusterInner object itself.
+ */
+ public ClusterInner withClientCertificateCommonNames(List clientCertificateCommonNames) {
+ this.clientCertificateCommonNames = clientCertificateCommonNames;
+ return this;
+ }
+
+ /**
+ * Get the list of custom fabric settings to configure the cluster.
+ *
+ * @return the fabricSettings value
+ */
+ public List fabricSettings() {
+ return this.fabricSettings;
+ }
+
+ /**
+ * Set the list of custom fabric settings to configure the cluster.
+ *
+ * @param fabricSettings the fabricSettings value to set
+ * @return the ClusterInner object itself.
+ */
+ public ClusterInner withFabricSettings(List fabricSettings) {
+ this.fabricSettings = fabricSettings;
+ return this;
+ }
+
+ /**
+ * Get the server certificate used by reverse proxy.
+ *
+ * @return the reverseProxyCertificate value
+ */
+ public CertificateDescription reverseProxyCertificate() {
+ return this.reverseProxyCertificate;
+ }
+
+ /**
+ * Set the server certificate used by reverse proxy.
+ *
+ * @param reverseProxyCertificate the reverseProxyCertificate value to set
+ * @return the ClusterInner object itself.
+ */
+ public ClusterInner withReverseProxyCertificate(CertificateDescription reverseProxyCertificate) {
+ this.reverseProxyCertificate = reverseProxyCertificate;
+ return this;
+ }
+
+ /**
+ * Get the http management endpoint of the cluster.
+ *
+ * @return the managementEndpoint value
+ */
+ public String managementEndpoint() {
+ return this.managementEndpoint;
+ }
+
+ /**
+ * Set the http management endpoint of the cluster.
+ *
+ * @param managementEndpoint the managementEndpoint value to set
+ * @return the ClusterInner object itself.
+ */
+ public ClusterInner withManagementEndpoint(String managementEndpoint) {
+ this.managementEndpoint = managementEndpoint;
+ return this;
+ }
+
+ /**
+ * Get the list of node types in the cluster.
+ *
+ * @return the nodeTypes value
+ */
+ public List nodeTypes() {
+ return this.nodeTypes;
+ }
+
+ /**
+ * Set the list of node types in the cluster.
+ *
+ * @param nodeTypes the nodeTypes value to set
+ * @return the ClusterInner object itself.
+ */
+ public ClusterInner withNodeTypes(List nodeTypes) {
+ this.nodeTypes = nodeTypes;
+ return this;
+ }
+
+ /**
+ * Get the AAD authentication settings of the cluster.
+ *
+ * @return the azureActiveDirectory value
+ */
+ public AzureActiveDirectory azureActiveDirectory() {
+ return this.azureActiveDirectory;
+ }
+
+ /**
+ * Set the AAD authentication settings of the cluster.
+ *
+ * @param azureActiveDirectory the azureActiveDirectory value to set
+ * @return the ClusterInner object itself.
+ */
+ public ClusterInner withAzureActiveDirectory(AzureActiveDirectory azureActiveDirectory) {
+ this.azureActiveDirectory = azureActiveDirectory;
+ return this;
+ }
+
+ /**
+ * Get the provisioning state of the cluster resource. Possible values include: 'Updating', 'Succeeded', 'Failed', 'Canceled'.
+ *
+ * @return the provisioningState value
+ */
+ public ProvisioningState provisioningState() {
+ return this.provisioningState;
+ }
+
+ /**
+ * Get the VM image VMSS has been configured with. Generic names such as Windows or Linux can be used.
+ *
+ * @return the vmImage value
+ */
+ public String vmImage() {
+ return this.vmImage;
+ }
+
+ /**
+ * Set the VM image VMSS has been configured with. Generic names such as Windows or Linux can be used.
+ *
+ * @param vmImage the vmImage value to set
+ * @return the ClusterInner object itself.
+ */
+ public ClusterInner withVmImage(String vmImage) {
+ this.vmImage = vmImage;
+ return this;
+ }
+
+ /**
+ * Get the storage account information for storing Service Fabric diagnostic logs.
+ *
+ * @return the diagnosticsStorageAccountConfig value
+ */
+ public DiagnosticsStorageAccountConfig diagnosticsStorageAccountConfig() {
+ return this.diagnosticsStorageAccountConfig;
+ }
+
+ /**
+ * Set the storage account information for storing Service Fabric diagnostic logs.
+ *
+ * @param diagnosticsStorageAccountConfig the diagnosticsStorageAccountConfig value to set
+ * @return the ClusterInner object itself.
+ */
+ public ClusterInner withDiagnosticsStorageAccountConfig(DiagnosticsStorageAccountConfig diagnosticsStorageAccountConfig) {
+ this.diagnosticsStorageAccountConfig = diagnosticsStorageAccountConfig;
+ return this;
+ }
+
+ /**
+ * Get the policy to use when upgrading the cluster.
+ *
+ * @return the upgradeDescription value
+ */
+ public ClusterUpgradePolicy upgradeDescription() {
+ return this.upgradeDescription;
+ }
+
+ /**
+ * Set the policy to use when upgrading the cluster.
+ *
+ * @param upgradeDescription the upgradeDescription value to set
+ * @return the ClusterInner object itself.
+ */
+ public ClusterInner withUpgradeDescription(ClusterUpgradePolicy upgradeDescription) {
+ this.upgradeDescription = upgradeDescription;
+ return this;
+ }
+
+ /**
+ * Get the list of add-on features to enable in the cluster.
+ *
+ * @return the addOnFeatures value
+ */
+ public List addOnFeatures() {
+ return this.addOnFeatures;
+ }
+
+ /**
+ * Set the list of add-on features to enable in the cluster.
+ *
+ * @param addOnFeatures the addOnFeatures value to set
+ * @return the ClusterInner object itself.
+ */
+ public ClusterInner withAddOnFeatures(List addOnFeatures) {
+ this.addOnFeatures = addOnFeatures;
+ return this;
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/implementation/ClusterVersionsImpl.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/implementation/ClusterVersionsImpl.java
new file mode 100644
index 000000000000..62f9eaaeb306
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/implementation/ClusterVersionsImpl.java
@@ -0,0 +1,86 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview.implementation;
+
+import com.microsoft.azure.arm.model.implementation.WrapperImpl;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.ClusterVersions;
+import rx.Observable;
+import rx.functions.Func1;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.ClusterCodeVersionsListResult;
+
+class ClusterVersionsImpl extends WrapperImpl implements ClusterVersions {
+ private final ServiceFabricManager manager;
+
+ ClusterVersionsImpl(ServiceFabricManager manager) {
+ super(manager.inner().clusterVersions());
+ this.manager = manager;
+ }
+
+ public ServiceFabricManager manager() {
+ return this.manager;
+ }
+
+ private ClusterCodeVersionsListResultImpl wrapModel(ClusterCodeVersionsListResultInner inner) {
+ return new ClusterCodeVersionsListResultImpl(inner, manager());
+ }
+
+ @Override
+ public Observable getByEnvironmentAsync(String location, String environment, String subscriptionId, String clusterVersion, String apiVersion) {
+ ClusterVersionsInner client = this.inner();
+ return client.getByEnvironmentAsync(location, environment, subscriptionId, clusterVersion, apiVersion)
+ .map(new Func1() {
+ @Override
+ public ClusterCodeVersionsListResult call(ClusterCodeVersionsListResultInner inner) {
+ return new ClusterCodeVersionsListResultImpl(inner, manager());
+ }
+ });
+ }
+
+ @Override
+ public Observable listAsync(String location, String subscriptionId, String apiVersion) {
+ ClusterVersionsInner client = this.inner();
+ return client.listAsync(location, subscriptionId, apiVersion)
+ .map(new Func1() {
+ @Override
+ public ClusterCodeVersionsListResult call(ClusterCodeVersionsListResultInner inner) {
+ return new ClusterCodeVersionsListResultImpl(inner, manager());
+ }
+ });
+ }
+
+ @Override
+ public Observable listByEnvironmentAsync(String location, String environment, String subscriptionId, String apiVersion) {
+ ClusterVersionsInner client = this.inner();
+ return client.listByEnvironmentAsync(location, environment, subscriptionId, apiVersion)
+ .map(new Func1() {
+ @Override
+ public ClusterCodeVersionsListResult call(ClusterCodeVersionsListResultInner inner) {
+ return new ClusterCodeVersionsListResultImpl(inner, manager());
+ }
+ });
+ }
+
+ @Override
+ public Observable getAsync(String location, String subscriptionId, String clusterVersion, String apiVersion) {
+ ClusterVersionsInner client = this.inner();
+ return client.getAsync(location, subscriptionId, clusterVersion, apiVersion)
+ .flatMap(new Func1>() {
+ @Override
+ public Observable call(ClusterCodeVersionsListResultInner inner) {
+ if (inner == null) {
+ return Observable.empty();
+ } else {
+ return Observable.just((ClusterCodeVersionsListResult)wrapModel(inner));
+ }
+ }
+ });
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/implementation/ClusterVersionsInner.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/implementation/ClusterVersionsInner.java
new file mode 100644
index 000000000000..b8d38bcb2bb2
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/implementation/ClusterVersionsInner.java
@@ -0,0 +1,464 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights 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.servicefabric.v2017_07_01_preview.implementation;
+
+import retrofit2.Retrofit;
+import com.google.common.reflect.TypeToken;
+import com.microsoft.azure.CloudException;
+import com.microsoft.rest.ServiceCallback;
+import com.microsoft.rest.ServiceFuture;
+import com.microsoft.rest.ServiceResponse;
+import java.io.IOException;
+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 ClusterVersions.
+ */
+public class ClusterVersionsInner {
+ /** The Retrofit service to perform REST calls. */
+ private ClusterVersionsService service;
+ /** The service client containing this operation class. */
+ private ServiceFabricManagementClientImpl client;
+
+ /**
+ * Initializes an instance of ClusterVersionsInner.
+ *
+ * @param retrofit the Retrofit instance built from a Retrofit Builder.
+ * @param client the instance of the service client containing this operation class.
+ */
+ public ClusterVersionsInner(Retrofit retrofit, ServiceFabricManagementClientImpl client) {
+ this.service = retrofit.create(ClusterVersionsService.class);
+ this.client = client;
+ }
+
+ /**
+ * The interface defining all the services for ClusterVersions to be
+ * used by Retrofit to perform actually REST calls.
+ */
+ interface ClusterVersionsService {
+ @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.management.servicefabric.v2017_07_01_preview.ClusterVersions get" })
+ @GET("subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/clusterVersions/{clusterVersion}")
+ Observable> get(@Path("location") String location, @Path("subscriptionId") String subscriptionId, @Path("clusterVersion") String clusterVersion, @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.servicefabric.v2017_07_01_preview.ClusterVersions getByEnvironment" })
+ @GET("subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/environments/{environment}/clusterVersions/{clusterVersion}")
+ Observable> getByEnvironment(@Path("location") String location, @Path("environment") String environment, @Path("subscriptionId") String subscriptionId, @Path("clusterVersion") String clusterVersion, @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.servicefabric.v2017_07_01_preview.ClusterVersions list" })
+ @GET("subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/clusterVersions")
+ Observable> list(@Path("location") String location, @Path("subscriptionId") String subscriptionId, @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.servicefabric.v2017_07_01_preview.ClusterVersions listByEnvironment" })
+ @GET("subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/environments/{environment}/clusterVersions")
+ Observable> listByEnvironment(@Path("location") String location, @Path("environment") String environment, @Path("subscriptionId") String subscriptionId, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent);
+
+ }
+
+ /**
+ * Get cluster code versions.
+ * Get cluster code versions by location.
+ *
+ * @param location The location for the cluster code versions, this is different from cluster location
+ * @param subscriptionId The customer subscription identifier
+ * @param clusterVersion The cluster code version
+ * @param apiVersion The version of the API.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @throws CloudException thrown if the request is rejected by server
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
+ * @return the ClusterCodeVersionsListResultInner object if successful.
+ */
+ public ClusterCodeVersionsListResultInner get(String location, String subscriptionId, String clusterVersion, String apiVersion) {
+ return getWithServiceResponseAsync(location, subscriptionId, clusterVersion, apiVersion).toBlocking().single().body();
+ }
+
+ /**
+ * Get cluster code versions.
+ * Get cluster code versions by location.
+ *
+ * @param location The location for the cluster code versions, this is different from cluster location
+ * @param subscriptionId The customer subscription identifier
+ * @param clusterVersion The cluster code version
+ * @param apiVersion The version of the API.
+ * @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 getAsync(String location, String subscriptionId, String clusterVersion, String apiVersion, final ServiceCallback serviceCallback) {
+ return ServiceFuture.fromResponse(getWithServiceResponseAsync(location, subscriptionId, clusterVersion, apiVersion), serviceCallback);
+ }
+
+ /**
+ * Get cluster code versions.
+ * Get cluster code versions by location.
+ *
+ * @param location The location for the cluster code versions, this is different from cluster location
+ * @param subscriptionId The customer subscription identifier
+ * @param clusterVersion The cluster code version
+ * @param apiVersion The version of the API.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the ClusterCodeVersionsListResultInner object
+ */
+ public Observable getAsync(String location, String subscriptionId, String clusterVersion, String apiVersion) {
+ return getWithServiceResponseAsync(location, subscriptionId, clusterVersion, apiVersion).map(new Func1, ClusterCodeVersionsListResultInner>() {
+ @Override
+ public ClusterCodeVersionsListResultInner call(ServiceResponse response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * Get cluster code versions.
+ * Get cluster code versions by location.
+ *
+ * @param location The location for the cluster code versions, this is different from cluster location
+ * @param subscriptionId The customer subscription identifier
+ * @param clusterVersion The cluster code version
+ * @param apiVersion The version of the API.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the ClusterCodeVersionsListResultInner object
+ */
+ public Observable> getWithServiceResponseAsync(String location, String subscriptionId, String clusterVersion, String apiVersion) {
+ if (location == null) {
+ throw new IllegalArgumentException("Parameter location is required and cannot be null.");
+ }
+ if (subscriptionId == null) {
+ throw new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.");
+ }
+ if (clusterVersion == null) {
+ throw new IllegalArgumentException("Parameter clusterVersion is required and cannot be null.");
+ }
+ if (apiVersion == null) {
+ throw new IllegalArgumentException("Parameter apiVersion is required and cannot be null.");
+ }
+ return service.get(location, subscriptionId, clusterVersion, apiVersion, this.client.acceptLanguage(), this.client.userAgent())
+ .flatMap(new Func1, Observable>>() {
+ @Override
+ public Observable> call(Response response) {
+ try {
+ ServiceResponse clientResponse = getDelegate(response);
+ return Observable.just(clientResponse);
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ private ServiceResponse getDelegate(Response response) throws CloudException, IOException, IllegalArgumentException {
+ return this.client.restClient().responseBuilderFactory().newInstance(this.client.serializerAdapter())
+ .register(200, new TypeToken() { }.getType())
+ .registerError(CloudException.class)
+ .build(response);
+ }
+
+ /**
+ * Get cluster code versions by environment.
+ * Get cluster code versions by environment.
+ *
+ * @param location The location for the cluster code versions, this is different from cluster location
+ * @param environment Cluster operating system, the default means all. Possible values include: 'Windows', 'Linux'
+ * @param subscriptionId The customer subscription identifier
+ * @param clusterVersion The cluster code version
+ * @param apiVersion The version of the API.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @throws CloudException thrown if the request is rejected by server
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
+ * @return the ClusterCodeVersionsListResultInner object if successful.
+ */
+ public ClusterCodeVersionsListResultInner getByEnvironment(String location, String environment, String subscriptionId, String clusterVersion, String apiVersion) {
+ return getByEnvironmentWithServiceResponseAsync(location, environment, subscriptionId, clusterVersion, apiVersion).toBlocking().single().body();
+ }
+
+ /**
+ * Get cluster code versions by environment.
+ * Get cluster code versions by environment.
+ *
+ * @param location The location for the cluster code versions, this is different from cluster location
+ * @param environment Cluster operating system, the default means all. Possible values include: 'Windows', 'Linux'
+ * @param subscriptionId The customer subscription identifier
+ * @param clusterVersion The cluster code version
+ * @param apiVersion The version of the API.
+ * @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 getByEnvironmentAsync(String location, String environment, String subscriptionId, String clusterVersion, String apiVersion, final ServiceCallback serviceCallback) {
+ return ServiceFuture.fromResponse(getByEnvironmentWithServiceResponseAsync(location, environment, subscriptionId, clusterVersion, apiVersion), serviceCallback);
+ }
+
+ /**
+ * Get cluster code versions by environment.
+ * Get cluster code versions by environment.
+ *
+ * @param location The location for the cluster code versions, this is different from cluster location
+ * @param environment Cluster operating system, the default means all. Possible values include: 'Windows', 'Linux'
+ * @param subscriptionId The customer subscription identifier
+ * @param clusterVersion The cluster code version
+ * @param apiVersion The version of the API.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the ClusterCodeVersionsListResultInner object
+ */
+ public Observable getByEnvironmentAsync(String location, String environment, String subscriptionId, String clusterVersion, String apiVersion) {
+ return getByEnvironmentWithServiceResponseAsync(location, environment, subscriptionId, clusterVersion, apiVersion).map(new Func1, ClusterCodeVersionsListResultInner>() {
+ @Override
+ public ClusterCodeVersionsListResultInner call(ServiceResponse response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * Get cluster code versions by environment.
+ * Get cluster code versions by environment.
+ *
+ * @param location The location for the cluster code versions, this is different from cluster location
+ * @param environment Cluster operating system, the default means all. Possible values include: 'Windows', 'Linux'
+ * @param subscriptionId The customer subscription identifier
+ * @param clusterVersion The cluster code version
+ * @param apiVersion The version of the API.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the ClusterCodeVersionsListResultInner object
+ */
+ public Observable> getByEnvironmentWithServiceResponseAsync(String location, String environment, String subscriptionId, String clusterVersion, String apiVersion) {
+ if (location == null) {
+ throw new IllegalArgumentException("Parameter location is required and cannot be null.");
+ }
+ if (environment == null) {
+ throw new IllegalArgumentException("Parameter environment is required and cannot be null.");
+ }
+ if (subscriptionId == null) {
+ throw new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.");
+ }
+ if (clusterVersion == null) {
+ throw new IllegalArgumentException("Parameter clusterVersion is required and cannot be null.");
+ }
+ if (apiVersion == null) {
+ throw new IllegalArgumentException("Parameter apiVersion is required and cannot be null.");
+ }
+ return service.getByEnvironment(location, environment, subscriptionId, clusterVersion, apiVersion, this.client.acceptLanguage(), this.client.userAgent())
+ .flatMap(new Func1, Observable>>() {
+ @Override
+ public Observable> call(Response response) {
+ try {
+ ServiceResponse clientResponse = getByEnvironmentDelegate(response);
+ return Observable.just(clientResponse);
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ private ServiceResponse getByEnvironmentDelegate(Response response) throws CloudException, IOException, IllegalArgumentException {
+ return this.client.restClient().responseBuilderFactory().newInstance(this.client.serializerAdapter())
+ .register(200, new TypeToken() { }.getType())
+ .registerError(CloudException.class)
+ .build(response);
+ }
+
+ /**
+ * List cluster code versions by location.
+ * List cluster code versions by location.
+ *
+ * @param location The location for the cluster code versions, this is different from cluster location
+ * @param subscriptionId The customer subscription identifier
+ * @param apiVersion The version of the API.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @throws CloudException thrown if the request is rejected by server
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
+ * @return the ClusterCodeVersionsListResultInner object if successful.
+ */
+ public ClusterCodeVersionsListResultInner list(String location, String subscriptionId, String apiVersion) {
+ return listWithServiceResponseAsync(location, subscriptionId, apiVersion).toBlocking().single().body();
+ }
+
+ /**
+ * List cluster code versions by location.
+ * List cluster code versions by location.
+ *
+ * @param location The location for the cluster code versions, this is different from cluster location
+ * @param subscriptionId The customer subscription identifier
+ * @param apiVersion The version of the API.
+ * @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 location, String subscriptionId, String apiVersion, final ServiceCallback serviceCallback) {
+ return ServiceFuture.fromResponse(listWithServiceResponseAsync(location, subscriptionId, apiVersion), serviceCallback);
+ }
+
+ /**
+ * List cluster code versions by location.
+ * List cluster code versions by location.
+ *
+ * @param location The location for the cluster code versions, this is different from cluster location
+ * @param subscriptionId The customer subscription identifier
+ * @param apiVersion The version of the API.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the ClusterCodeVersionsListResultInner object
+ */
+ public Observable listAsync(String location, String subscriptionId, String apiVersion) {
+ return listWithServiceResponseAsync(location, subscriptionId, apiVersion).map(new Func1, ClusterCodeVersionsListResultInner>() {
+ @Override
+ public ClusterCodeVersionsListResultInner call(ServiceResponse response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * List cluster code versions by location.
+ * List cluster code versions by location.
+ *
+ * @param location The location for the cluster code versions, this is different from cluster location
+ * @param subscriptionId The customer subscription identifier
+ * @param apiVersion The version of the API.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the ClusterCodeVersionsListResultInner object
+ */
+ public Observable> listWithServiceResponseAsync(String location, String subscriptionId, String apiVersion) {
+ if (location == null) {
+ throw new IllegalArgumentException("Parameter location is required and cannot be null.");
+ }
+ if (subscriptionId == null) {
+ throw new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.");
+ }
+ if (apiVersion == null) {
+ throw new IllegalArgumentException("Parameter apiVersion is required and cannot be null.");
+ }
+ return service.list(location, subscriptionId, apiVersion, this.client.acceptLanguage(), this.client.userAgent())
+ .flatMap(new Func1, Observable>>() {
+ @Override
+ public Observable> call(Response response) {
+ try {
+ ServiceResponse clientResponse = listDelegate(response);
+ return Observable.just(clientResponse);
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ private ServiceResponse listDelegate(Response response) throws CloudException, IOException, IllegalArgumentException {
+ return this.client.restClient().responseBuilderFactory().newInstance(this.client.serializerAdapter())
+ .register(200, new TypeToken() { }.getType())
+ .registerError(CloudException.class)
+ .build(response);
+ }
+
+ /**
+ * List cluster code versions by environment.
+ * List cluster code versions by environment.
+ *
+ * @param location The location for the cluster code versions, this is different from cluster location
+ * @param environment Cluster operating system, the default means all. Possible values include: 'Windows', 'Linux'
+ * @param subscriptionId The customer subscription identifier
+ * @param apiVersion The version of the API.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @throws CloudException thrown if the request is rejected by server
+ * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
+ * @return the ClusterCodeVersionsListResultInner object if successful.
+ */
+ public ClusterCodeVersionsListResultInner listByEnvironment(String location, String environment, String subscriptionId, String apiVersion) {
+ return listByEnvironmentWithServiceResponseAsync(location, environment, subscriptionId, apiVersion).toBlocking().single().body();
+ }
+
+ /**
+ * List cluster code versions by environment.
+ * List cluster code versions by environment.
+ *
+ * @param location The location for the cluster code versions, this is different from cluster location
+ * @param environment Cluster operating system, the default means all. Possible values include: 'Windows', 'Linux'
+ * @param subscriptionId The customer subscription identifier
+ * @param apiVersion The version of the API.
+ * @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 listByEnvironmentAsync(String location, String environment, String subscriptionId, String apiVersion, final ServiceCallback serviceCallback) {
+ return ServiceFuture.fromResponse(listByEnvironmentWithServiceResponseAsync(location, environment, subscriptionId, apiVersion), serviceCallback);
+ }
+
+ /**
+ * List cluster code versions by environment.
+ * List cluster code versions by environment.
+ *
+ * @param location The location for the cluster code versions, this is different from cluster location
+ * @param environment Cluster operating system, the default means all. Possible values include: 'Windows', 'Linux'
+ * @param subscriptionId The customer subscription identifier
+ * @param apiVersion The version of the API.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the ClusterCodeVersionsListResultInner object
+ */
+ public Observable listByEnvironmentAsync(String location, String environment, String subscriptionId, String apiVersion) {
+ return listByEnvironmentWithServiceResponseAsync(location, environment, subscriptionId, apiVersion).map(new Func1, ClusterCodeVersionsListResultInner>() {
+ @Override
+ public ClusterCodeVersionsListResultInner call(ServiceResponse response) {
+ return response.body();
+ }
+ });
+ }
+
+ /**
+ * List cluster code versions by environment.
+ * List cluster code versions by environment.
+ *
+ * @param location The location for the cluster code versions, this is different from cluster location
+ * @param environment Cluster operating system, the default means all. Possible values include: 'Windows', 'Linux'
+ * @param subscriptionId The customer subscription identifier
+ * @param apiVersion The version of the API.
+ * @throws IllegalArgumentException thrown if parameters fail the validation
+ * @return the observable to the ClusterCodeVersionsListResultInner object
+ */
+ public Observable> listByEnvironmentWithServiceResponseAsync(String location, String environment, String subscriptionId, String apiVersion) {
+ if (location == null) {
+ throw new IllegalArgumentException("Parameter location is required and cannot be null.");
+ }
+ if (environment == null) {
+ throw new IllegalArgumentException("Parameter environment is required and cannot be null.");
+ }
+ if (subscriptionId == null) {
+ throw new IllegalArgumentException("Parameter subscriptionId is required and cannot be null.");
+ }
+ if (apiVersion == null) {
+ throw new IllegalArgumentException("Parameter apiVersion is required and cannot be null.");
+ }
+ return service.listByEnvironment(location, environment, subscriptionId, apiVersion, this.client.acceptLanguage(), this.client.userAgent())
+ .flatMap(new Func1, Observable>>() {
+ @Override
+ public Observable> call(Response response) {
+ try {
+ ServiceResponse clientResponse = listByEnvironmentDelegate(response);
+ return Observable.just(clientResponse);
+ } catch (Throwable t) {
+ return Observable.error(t);
+ }
+ }
+ });
+ }
+
+ private ServiceResponse listByEnvironmentDelegate(Response response) throws CloudException, IOException, IllegalArgumentException {
+ return this.client.restClient().responseBuilderFactory().newInstance(this.client.serializerAdapter())
+ .register(200, new TypeToken() { }.getType())
+ .registerError(CloudException.class)
+ .build(response);
+ }
+
+}
diff --git a/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/implementation/ClustersImpl.java b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/implementation/ClustersImpl.java
new file mode 100644
index 000000000000..cb4f976c113c
--- /dev/null
+++ b/sdk/servicefabric/mgmt-v2017_07_01_preview/src/main/java/com/microsoft/azure/management/servicefabric/v2017_07_01_preview/implementation/ClustersImpl.java
@@ -0,0 +1,105 @@
+/**
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for
+ * license information.
+ *
+ * Code generated by Microsoft (R) AutoRest Code Generator.
+ * def
+ */
+
+package com.microsoft.azure.management.servicefabric.v2017_07_01_preview.implementation;
+
+import com.microsoft.azure.arm.resources.collection.implementation.GroupableResourcesCoreImpl;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.Clusters;
+import com.microsoft.azure.management.servicefabric.v2017_07_01_preview.Cluster;
+import rx.Observable;
+import rx.Completable;
+import rx.functions.Func1;
+import com.microsoft.azure.Page;
+
+class ClustersImpl extends GroupableResourcesCoreImpl implements Clusters {
+ protected ClustersImpl(ServiceFabricManager manager) {
+ super(manager.inner().clusters(), manager);
+ }
+
+ @Override
+ protected Observable getInnerAsync(String resourceGroupName, String name) {
+ return null; // NOP Retrieve by resource group not supported
+ }
+
+ @Override
+ protected Completable deleteInnerAsync(String resourceGroupName, String name) {
+ ClustersInner client = this.inner();
+ return Completable.error(new Throwable("Delete by RG not supported for this resource")); // NOP Delete by RG not supported
+ }
+
+ @Override
+ public ClusterImpl define(String name) {
+ return wrapModel(name);
+ }
+
+ @Override
+ public Completable deleteAsync(String resourceGroupName, String clusterName, String subscriptionId, String apiVersion) {
+ ClustersInner client = this.inner();
+ return client.deleteAsync(resourceGroupName, clusterName, subscriptionId, apiVersion).toCompletable();
+ }
+
+ @Override
+ public Observable getByResourceGroupAsync(String resourceGroupName, String clusterName, String subscriptionId, String apiVersion) {
+ ClustersInner client = this.inner();
+ return client.getByResourceGroupAsync(resourceGroupName, clusterName, subscriptionId, apiVersion)
+ .map(new Func1() {
+ @Override
+ public Cluster call(ClusterInner inner) {
+ return new ClusterImpl(inner.name(), inner, manager());
+ }
+ });
+ }
+
+ @Override
+ public Observable listByResourceGroupAsync(String resourceGroupName, String subscriptionId, String apiVersion) {
+ ClustersInner client = this.inner();
+ return client.listByResourceGroupAsync(resourceGroupName, subscriptionId, apiVersion)
+ .flatMap(new Func1