diff --git a/App_Data/SwaggerSpecs/Microsoft.ServiceFabric/managedapplication.json b/App_Data/SwaggerSpecs/Microsoft.ServiceFabric/managedapplication.json index 1b631f9b..872f83ec 100644 --- a/App_Data/SwaggerSpecs/Microsoft.ServiceFabric/managedapplication.json +++ b/App_Data/SwaggerSpecs/Microsoft.ServiceFabric/managedapplication.json @@ -3,7 +3,7 @@ "info": { "title": "ServiceFabricManagementClient", "description": "Azure Service Fabric Resource Provider API Client", - "version": "2022-01-01" + "version": "2024-09-01-preview" }, "host": "management.azure.com", "schemes": [ @@ -389,6 +389,16 @@ "description": "The request was accepted and the operation will complete asynchronously.", "schema": { "$ref": "#/definitions/ApplicationTypeVersionResource" + }, + "headers": { + "Azure-AsyncOperation": { + "description": "The URL to get the status of an ongoing long-running operation.", + "type": "string" + }, + "Location": { + "description": "The URL to get the status of a completed long-running operation.", + "type": "string" + } } }, "default": { @@ -493,7 +503,17 @@ }, "responses": { "202": { - "description": "The request was accepted and the operation will complete asynchronously." + "description": "The request was accepted and the operation will complete asynchronously.", + "headers": { + "Azure-AsyncOperation": { + "description": "The URL to get the status of an ongoing long-running operation.", + "type": "string" + }, + "Location": { + "description": "The URL to get the status of a completed long-running operation.", + "type": "string" + } + } }, "204": { "description": "The resource was not found." @@ -559,6 +579,187 @@ } } }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/managedClusters/{clusterName}/applications/{applicationName}/fetchUpgradeStatus": { + "post": { + "tags": [ + "Application" + ], + "operationId": "Applications_ReadUpgrade", + "summary": "Get the status of the latest application upgrade.", + "description": "Get the status of the latest application upgrade. It will query the cluster to find the status of the latest application upgrade.", + "parameters": [ + { + "$ref": "#/parameters/subscriptionId" + }, + { + "$ref": "#/parameters/resourceGroupNameParameter" + }, + { + "$ref": "#/parameters/clusterNameParameter" + }, + { + "$ref": "#/parameters/applicationName" + }, + { + "$ref": "#/parameters/api-version" + } + ], + "x-ms-examples": { + "Get an application upgrade": { + "$ref": "./examples/ApplicationActionGetUpgrade_example.json" + } + }, + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "responses": { + "202": { + "description": "The operation was accepted.", + "headers": { + "Azure-AsyncOperation": { + "description": "The URL to get the status of an ongoing long-running operation.", + "type": "string" + }, + "Location": { + "description": "The URL to get the status of a completed long-running operation.", + "type": "string" + } + } + }, + "default": { + "description": "The detailed error response.", + "schema": { + "$ref": "#/definitions/ErrorModel" + } + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/managedClusters/{clusterName}/applications/{applicationName}/startRollback": { + "post": { + "tags": [ + "Application" + ], + "operationId": "Applications_StartRollback", + "summary": "Send a request to start a rollback of the current application upgrade.", + "description": "Send a request to start a rollback of the current application upgrade. This will start rolling back the application to the previous version.", + "parameters": [ + { + "$ref": "#/parameters/subscriptionId" + }, + { + "$ref": "#/parameters/resourceGroupNameParameter" + }, + { + "$ref": "#/parameters/clusterNameParameter" + }, + { + "$ref": "#/parameters/applicationName" + }, + { + "$ref": "#/parameters/api-version" + } + ], + "x-ms-examples": { + "Start an application upgrade rollback": { + "$ref": "./examples/ApplicationActionStartRollback_example.json" + } + }, + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "responses": { + "202": { + "description": "The operation was accepted.", + "headers": { + "Azure-AsyncOperation": { + "description": "The URL to get the status of an ongoing long-running operation.", + "type": "string" + }, + "Location": { + "description": "The URL to get the status of a completed long-running operation.", + "type": "string" + } + } + }, + "default": { + "description": "The detailed error response.", + "schema": { + "$ref": "#/definitions/ErrorModel" + } + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/managedClusters/{clusterName}/applications/{applicationName}/resumeUpgrade": { + "post": { + "tags": [ + "Application" + ], + "operationId": "Applications_ResumeUpgrade", + "summary": "Send a request to resume the current application upgrade.", + "description": "Send a request to resume the current application upgrade. This will resume the application upgrade from where it was paused.", + "parameters": [ + { + "$ref": "#/parameters/subscriptionId" + }, + { + "$ref": "#/parameters/resourceGroupNameParameter" + }, + { + "$ref": "#/parameters/clusterNameParameter" + }, + { + "$ref": "#/parameters/applicationName" + }, + { + "$ref": "#/parameters/api-version" + }, + { + "name": "parameters", + "in": "body", + "description": "The parameters for resuming an application upgrade.", + "required": true, + "schema": { + "$ref": "#/definitions/RuntimeResumeApplicationUpgradeParameters" + }, + "x-ms-parameter-location": "method" + } + ], + "x-ms-examples": { + "Resume upgrade": { + "$ref": "./examples/ApplicationActionResumeUpgrade_example.json" + } + }, + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, + "responses": { + "202": { + "description": "The operation was accepted.", + "headers": { + "Azure-AsyncOperation": { + "description": "The URL to get the status of an ongoing long-running operation.", + "type": "string" + }, + "Location": { + "description": "The URL to get the status of a completed long-running operation.", + "type": "string" + } + } + }, + "default": { + "description": "The detailed error response.", + "schema": { + "$ref": "#/definitions/ErrorModel" + } + } + } + } + }, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/managedclusters/{clusterName}/applications/{applicationName}": { "get": { "tags": [ @@ -661,6 +862,16 @@ "description": "The request was accepted and the operation will complete asynchronously.", "schema": { "$ref": "#/definitions/ApplicationResource" + }, + "headers": { + "Azure-AsyncOperation": { + "description": "The URL to get the status of an ongoing long-running operation.", + "type": "string" + }, + "Location": { + "description": "The URL to get the status of a completed long-running operation.", + "type": "string" + } } }, "default": { @@ -759,7 +970,17 @@ }, "responses": { "202": { - "description": "The request was accepted and the operation will complete asynchronously." + "description": "The request was accepted and the operation will complete asynchronously.", + "headers": { + "Azure-AsyncOperation": { + "description": "The URL to get the status of an ongoing long-running operation.", + "type": "string" + }, + "Location": { + "description": "The URL to get the status of a completed long-running operation.", + "type": "string" + } + } }, "204": { "description": "The resource was not found." @@ -930,6 +1151,16 @@ "description": "The request was accepted and the operation will complete asynchronously.", "schema": { "$ref": "#/definitions/ServiceResource" + }, + "headers": { + "Azure-AsyncOperation": { + "description": "The URL to get the status of an ongoing long-running operation.", + "type": "string" + }, + "Location": { + "description": "The URL to get the status of a completed long-running operation.", + "type": "string" + } } }, "default": { @@ -1034,7 +1265,17 @@ }, "responses": { "202": { - "description": "The request was accepted and the operation will complete asynchronously." + "description": "The request was accepted and the operation will complete asynchronously.", + "headers": { + "Azure-AsyncOperation": { + "description": "The URL to get the status of an ongoing long-running operation.", + "type": "string" + }, + "Location": { + "description": "The URL to get the status of a completed long-running operation.", + "type": "string" + } + } }, "204": { "description": "The resource was not found." @@ -1102,6 +1343,66 @@ } }, "definitions": { + "RuntimeFailureAction": { + "type": "string", + "description": "The compensating action to perform when a Monitored upgrade encounters monitoring policy or health policy violations.\nRollback specifies that the upgrade will start rolling back automatically.\nManual indicates that the upgrade will switch to UnmonitoredManual upgrade mode.\n", + "enum": [ + "Rollback", + "Manual" + ], + "x-ms-enum": { + "name": "FailureAction", + "modelAsString": true, + "values": [ + { + "value": "Rollback", + "description": "The upgrade will start rolling back automatically. The value is 0" + }, + { + "value": "Manual", + "description": "The upgrade will switch to UnmonitoredManual upgrade mode. The value is 1" + } + ] + } + }, + "RuntimeResumeApplicationUpgradeParameters": { + "type": "object", + "properties": { + "upgradeDomainName": { + "description": "The upgrade domain name. Expected to be the next upgrade domain if the application is upgrading.", + "type": "string" + } + }, + "description": "Parameters for Resume Upgrade action. The upgrade domain name must be specified." + }, + "RuntimeUpgradeMode": { + "type": "string", + "description": "The mode used to monitor health during a rolling upgrade. The values are UnmonitoredAuto, UnmonitoredManual, Monitored, and UnmonitoredDeferred.", + "enum": [ + "UnmonitoredAuto", + "UnmonitoredManual", + "Monitored" + ], + "default": "Monitored", + "x-ms-enum": { + "name": "UpgradeMode", + "modelAsString": true, + "values": [ + { + "value": "UnmonitoredAuto", + "description": "The upgrade will proceed automatically without performing any health monitoring. The value is 0" + }, + { + "value": "UnmonitoredManual", + "description": "The upgrade will stop after completing each upgrade domain, giving the opportunity to manually monitor health before proceeding. The value is 1" + }, + { + "value": "Monitored", + "description": "The upgrade will stop after completing each upgrade domain and automatically monitor health before proceeding. The value is 2" + } + ] + } + }, "AddRemoveIncrementalNamedPartitionScalingMechanism": { "type": "object", "description": "Represents a scaling mechanism for adding or removing named partitions of a stateless service. Partition names are in the format '0','1'...'N-1'.", @@ -1230,7 +1531,8 @@ "type": "array", "items": { "$ref": "#/definitions/ApplicationUserAssignedIdentity" - } + }, + "x-ms-identifiers": [] } } }, @@ -1509,6 +1811,9 @@ "items": { "$ref": "#/definitions/ServiceCorrelation" }, + "x-ms-identifiers": [ + "serviceName" + ], "description": "A list that describes the correlation of the service with other services." }, "ForceRestart": { @@ -1522,10 +1827,12 @@ }, "HealthCheckStableDuration": { "type": "string", + "x-ms-format": "duration-constant", "description": "The amount of time that the application or cluster must remain healthy before the upgrade proceeds to the next upgrade domain. It is interpreted as a string representing an ISO 8601 duration with following format \"hh:mm:ss.fff\"." }, "HealthCheckWaitDuration": { "type": "string", + "x-ms-format": "duration-constant", "description": "The amount of time to wait after completing an upgrade domain before applying health policies. It is interpreted as a string representing an ISO 8601 duration with following format \"hh:mm:ss.fff\"." }, "ManagedIdentity": { @@ -1871,6 +2178,7 @@ "items": { "$ref": "#/definitions/ScalingPolicy" }, + "x-ms-identifiers": [], "description": "Scaling policies for this service." }, "ScalingTrigger": { @@ -1986,6 +2294,7 @@ "items": { "$ref": "#/definitions/ServiceLoadMetric" }, + "x-ms-identifiers": [], "description": "The service load metrics is given as an array of ServiceLoadMetric objects." }, "ServiceLoadMetricWeight": { @@ -2069,6 +2378,7 @@ "items": { "$ref": "#/definitions/ServicePlacementPolicy" }, + "x-ms-identifiers": [], "description": "A list that describes the correlation of the service with other services." }, "ServicePlacementPolicy": { @@ -2272,6 +2582,10 @@ } ] } + }, + "serviceDnsName": { + "type": "string", + "description": "Dns name used for the service. If this is specified, then the DNS name can be used to return the IP addresses of service endpoints for application layer protocols (e.g., HTTP).\nWhen updating serviceDnsName, old name may be temporarily resolvable. However, rely on new name.\nWhen removing serviceDnsName, removed name may temporarily be resolvable. Do not rely on the name being unresolvable.\n" } } }, @@ -2661,7 +2975,7 @@ "api-version": { "name": "api-version", "in": "query", - "description": "The version of the Service Fabric resource provider API. This is a required parameter and it's value must be \"2022-01-01\" for this specification.", + "description": "The version of the Service Fabric resource provider API. This is a required parameter and it's value must be \"2024-09-01-preview\" for this specification.", "required": true, "type": "string", "x-ms-parameter-location": "client" diff --git a/App_Data/SwaggerSpecs/Microsoft.ServiceFabric/managedcluster.json b/App_Data/SwaggerSpecs/Microsoft.ServiceFabric/managedcluster.json index bd94d733..60f75b90 100644 --- a/App_Data/SwaggerSpecs/Microsoft.ServiceFabric/managedcluster.json +++ b/App_Data/SwaggerSpecs/Microsoft.ServiceFabric/managedcluster.json @@ -3,7 +3,7 @@ "info": { "title": "ServiceFabricManagementClient", "description": "Azure Service Fabric Resource Provider API Client", - "version": "2022-01-01" + "version": "2024-09-01-preview" }, "host": "management.azure.com", "schemes": [ @@ -34,7 +34,7 @@ } ], "paths": { - "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/managedClusters": { + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/managedClusters": { "get": { "operationId": "ManagedClusters_ListByResourceGroup", "summary": "Gets the list of Service Fabric cluster resources created in the specified resource group.", @@ -213,6 +213,16 @@ "description": "The request was accepted and the operation will complete asynchronously.", "schema": { "$ref": "#/definitions/ManagedCluster" + }, + "headers": { + "Azure-AsyncOperation": { + "description": "The URL to get the status of an ongoing long-running operation.", + "type": "string" + }, + "Location": { + "description": "The URL to get the status of a completed long-running operation.", + "type": "string" + } } }, "default": { @@ -306,7 +316,17 @@ }, "responses": { "202": { - "description": "The request was accepted and the operation will complete asynchronously." + "description": "The request was accepted and the operation will complete asynchronously.", + "headers": { + "Azure-AsyncOperation": { + "description": "The URL to get the status of an ongoing long-running operation.", + "type": "string" + }, + "Location": { + "description": "The URL to get the status of a completed long-running operation.", + "type": "string" + } + } }, "204": { "description": "The resource was not found." @@ -323,6 +343,132 @@ } } }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/managedClusters/{clusterName}/getazresiliencystatus": { + "post": { + "tags": [ + "managedAzResiliencyStatus" + ], + "summary": "Action to get Az Resiliency Status of all the Base resources constituting Service Fabric Managed Clusters.", + "description": "Action to get Az Resiliency Status of all the Base resources constituting Service Fabric Managed Clusters.", + "operationId": "managedAzResiliencyStatus_Get", + "parameters": [ + { + "$ref": "#/parameters/resourceGroupNameParameter" + }, + { + "$ref": "#/parameters/clusterNameParameter" + }, + { + "$ref": "#/parameters/api-version" + }, + { + "$ref": "#/parameters/subscriptionId" + } + ], + "x-ms-examples": { + "Az Resiliency status of Base Resources": { + "$ref": "./examples/managedAzResiliencyStatusGet_example.json" + } + }, + "responses": { + "200": { + "description": "The operation completed successfully.", + "schema": { + "$ref": "#/definitions/ManagedAzResiliencyStatus" + } + }, + "default": { + "description": "The detailed error response.", + "schema": { + "$ref": "#/definitions/ErrorModel" + } + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/managedClusters/{clusterName}/getMaintenanceWindowStatus": { + "post": { + "tags": [ + "managedMaintenanceWindowStatus" + ], + "summary": "Action to get Maintenance Window Status of the Service Fabric Managed Clusters.", + "description": "Action to get Maintenance Window Status of the Service Fabric Managed Clusters.", + "operationId": "managedMaintenanceWindowStatus_Get", + "parameters": [ + { + "$ref": "#/parameters/resourceGroupNameParameter" + }, + { + "$ref": "#/parameters/clusterNameParameter" + }, + { + "$ref": "#/parameters/api-version" + }, + { + "$ref": "#/parameters/subscriptionId" + } + ], + "x-ms-examples": { + "Maintenance Window Status": { + "$ref": "./examples/ManagedMaintenanceWindowStatusGet_example.json" + } + }, + "responses": { + "200": { + "description": "The operation completed successfully.", + "schema": { + "$ref": "#/definitions/ManagedMaintenanceWindowStatus" + } + }, + "default": { + "description": "The detailed error response.", + "schema": { + "$ref": "#/definitions/ErrorModel" + } + } + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/managedClusters/{clusterName}/applyMaintenanceWindow": { + "post": { + "tags": [ + "managedApplyMaintenanceWindow" + ], + "summary": "Action to Apply Maintenance window on the Service Fabric Managed Clusters, right now. Any pending update will be applied.", + "description": "Action to Apply Maintenance window on the Service Fabric Managed Clusters, right now. Any pending update will be applied.", + "operationId": "managedApplyMaintenanceWindow_Post", + "parameters": [ + { + "$ref": "#/parameters/resourceGroupNameParameter" + }, + { + "$ref": "#/parameters/clusterNameParameter" + }, + { + "$ref": "#/parameters/api-version" + }, + { + "$ref": "#/parameters/subscriptionId" + } + ], + "x-ms-examples": { + "Maintenance Window Status": { + "$ref": "./examples/ManagedApplyMaintenanceWindowPost_example.json" + } + }, + "responses": { + "200": { + "description": "The operation completed successfully." + }, + "default": { + "description": "The detailed error response.", + "schema": { + "$ref": "#/definitions/ErrorModel" + } + } + } + } + }, "/subscriptions/{subscriptionId}/providers/Microsoft.ServiceFabric/locations/{location}/managedClusterVersions/{clusterVersion}": { "get": { "operationId": "ManagedClusterVersion_Get", @@ -659,7 +805,13 @@ "description": "OK. The request has succeeded." }, "202": { - "description": "Accepted. The request is still running." + "description": "Accepted. The request is still running.", + "headers": { + "Location": { + "description": "The URL to get the status of a completed long-running operation.", + "type": "string" + } + } }, "204": { "description": "No Content. For Delete operation results." @@ -723,7 +875,25 @@ "DnsService", "BackupRestoreService", "ResourceMonitorService" - ] + ], + "x-ms-enum": { + "name": "ManagedClusterAddOnFeature", + "modelAsString": true, + "values": [ + { + "value": "DnsService", + "description": "Dns service" + }, + { + "value": "BackupRestoreService", + "description": "Backup and restore service" + }, + { + "value": "ResourceMonitorService", + "description": "Resource monitor service" + } + ] + } }, "ApplicationTypeVersionsCleanupPolicy": { "type": "object", @@ -740,6 +910,38 @@ }, "description": "The policy used to clean up unused versions. When the policy is not specified explicitly, the default unused application versions to keep will be 3." }, + "AutoGeneratedDomainNameLabelScope": { + "type": "string", + "enum": [ + "TenantReuse", + "SubscriptionReuse", + "ResourceGroupReuse", + "NoReuse" + ], + "x-ms-enum": { + "name": "AutoGeneratedDomainNameLabelScope", + "modelAsString": true, + "values": [ + { + "value": "TenantReuse", + "description": "TenantReuse allows for the same hash to be created if the resource is created in the same Tenant with the same resource name." + }, + { + "value": "SubscriptionReuse", + "description": "SubscriptionReuse allows for the same hash to be created if the resource is created in the same Subscription with the same resource name." + }, + { + "value": "ResourceGroupReuse", + "description": "ResourceGroupReuse allows for the same hash to be created if the resource is created in the same Resource Group with the same resource name." + }, + { + "value": "NoReuse", + "description": "NoReuse will create a new hash regardless of the Subscription, Resource Group, Tenant and Resource name." + } + ] + }, + "description": "This enum is the entrypoint to using a certificate from a public CA for your cluster. This property was introduced to solve the\ndomain squatting problem with new domains. A domain name will be generated in the following format: ....\nThe hash portion comes from Azure DNS' Deterministic Name Library. The library creates a hash using the cluster's Tenant, Subscription, Resource Group\nand Resource Name using the AutoGeneratedDomainNameLabelScope/reuse policy chosen.\n" + }, "AzureActiveDirectory": { "type": "object", "properties": { @@ -783,6 +985,67 @@ }, "description": "Client certificate definition." }, + "ClusterHealthPolicy": { + "type": "object", + "required": [ + "maxPercentUnhealthyNodes", + "maxPercentUnhealthyApplications" + ], + "description": "Defines a health policy used to evaluate the health of the cluster or of a cluster node.\n", + "properties": { + "maxPercentUnhealthyNodes": { + "type": "integer", + "format": "int32", + "description": "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.\n\nThe percentage represents the maximum tolerated percentage of nodes that can be unhealthy before the cluster is considered in error.\nIf the percentage is respected but there is at least one unhealthy node, the health is evaluated as Warning.\nThe percentage is calculated by dividing the number of unhealthy nodes over the total number of nodes in the cluster.\nThe computation rounds up to tolerate one failure on small numbers of nodes. Default percentage is zero.\n\nIn large clusters, some nodes will always be down or out for repairs, so this percentage should be configured to tolerate that.\n", + "default": 0, + "minimum": 0, + "maximum": 100 + }, + "maxPercentUnhealthyApplications": { + "type": "integer", + "format": "int32", + "description": "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.\n\nThe percentage represents the maximum tolerated percentage of applications that can be unhealthy before the cluster is considered in error.\nIf the percentage is respected but there is at least one unhealthy application, the health is evaluated as Warning.\nThis is calculated by dividing the number of unhealthy applications over the total number of application instances in the cluster, excluding applications of application types that are included in the ApplicationTypeHealthPolicyMap.\nThe computation rounds up to tolerate one failure on small numbers of applications. Default percentage is zero.\n", + "default": 0, + "minimum": 0, + "maximum": 100 + } + } + }, + "ClusterMonitoringPolicy": { + "type": "object", + "description": "Describes the monitoring policies for the cluster upgrade.", + "required": [ + "healthCheckWaitDuration", + "healthCheckStableDuration", + "healthCheckRetryTimeout", + "upgradeTimeout", + "upgradeDomainTimeout" + ], + "properties": { + "healthCheckWaitDuration": { + "type": "string", + "x-ms-format": "duration-constant", + "description": "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." + }, + "healthCheckStableDuration": { + "type": "string", + "x-ms-format": "duration-constant", + "description": "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." + }, + "healthCheckRetryTimeout": { + "type": "string", + "description": "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." + }, + "upgradeTimeout": { + "type": "string", + "description": "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." + }, + "upgradeDomainTimeout": { + "type": "string", + "description": "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." + } + } + }, "ClusterState": { "type": "string", "description": "The current state of the cluster.\n", @@ -852,6 +1115,36 @@ }, "description": "Indicates when new cluster runtime version upgrades will be applied after they are released. By default is Wave0." }, + "ClusterUpgradeDeltaHealthPolicy": { + "type": "object", + "description": "Describes the delta health policies for the cluster upgrade.", + "required": [ + "maxPercentDeltaUnhealthyNodes" + ], + "properties": { + "maxPercentDeltaUnhealthyNodes": { + "type": "integer", + "format": "int32", + "description": "The maximum allowed percentage of nodes health degradation allowed during cluster upgrades.\nThe 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.\nThe check is performed after every upgrade domain upgrade completion to make sure the global state of the cluster is within tolerated limits.\n", + "minimum": 0, + "maximum": 100 + }, + "maxPercentUpgradeDomainDeltaUnhealthyNodes": { + "type": "integer", + "format": "int32", + "description": "The maximum allowed percentage of upgrade domain nodes health degradation allowed during cluster upgrades.\nThe 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.\nThe 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.\n", + "minimum": 0, + "maximum": 100 + }, + "maxPercentDeltaUnhealthyApplications": { + "type": "integer", + "format": "int32", + "description": "The maximum allowed percentage of applications health degradation allowed during cluster upgrades.\nThe 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.\nThe 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.\nNOTE: This value will overwrite the value specified in properties.UpgradeDescription.HealthPolicy.MaxPercentUnhealthyApplications\n", + "minimum": 0, + "maximum": 100 + } + } + }, "ClusterUpgradeMode": { "type": "string", "description": "The upgrade mode of the cluster when new Service Fabric runtime version is available.\n", @@ -875,23 +1168,31 @@ ] } }, - "IPTag": { + "ClusterUpgradePolicy": { "type": "object", - "required": [ - "ipTagType", - "tag" - ], "properties": { - "ipTagType": { - "type": "string", - "description": "The IP tag type." + "forceRestart": { + "type": "boolean", + "description": "If true, then processes are forcefully restarted during upgrade even when the code version has not changed (the upgrade only changes configuration or data)." }, - "tag": { + "healthPolicy": { + "$ref": "#/definitions/ClusterHealthPolicy", + "description": "The cluster health policy defines a health policy used to evaluate the health of the cluster during a cluster upgrade." + }, + "deltaHealthPolicy": { + "$ref": "#/definitions/ClusterUpgradeDeltaHealthPolicy", + "description": "The cluster delta health policy defines a health policy used to evaluate the health of the cluster during a cluster upgrade." + }, + "monitoringPolicy": { + "$ref": "#/definitions/ClusterMonitoringPolicy", + "description": "The cluster monitoring policy describes the parameters for monitoring an upgrade in Monitored mode." + }, + "upgradeReplicaSetCheckTimeout": { "type": "string", - "description": "The value of the IP tag." + "description": "The maximum amount of time to block processing of an upgrade domain and prevent loss of availability when there are unexpected issues.\nWhen this timeout expires, processing of the upgrade domain will proceed regardless of availability loss issues.\nThe 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.\nThis value must be between 00:00:00 and 49710.06:28:15 (unsigned 32 bit integer for seconds)\n" } }, - "description": "IPTag associated with the object." + "description": "Describes the policy used when upgrading the cluster." }, "LoadBalancingRule": { "type": "object", @@ -994,7 +1295,10 @@ }, "ManagedCluster": { "type": "object", - "description": "The manged cluster resource\n", + "required": [ + "sku" + ], + "description": "The managed cluster resource\n", "allOf": [ { "$ref": "#/definitions/Resource" @@ -1126,6 +1430,7 @@ "items": { "$ref": "#/definitions/LoadBalancingRule" }, + "x-ms-identifiers": [], "description": "Load balancing rules that are applied to the public load balancer of the cluster." }, "allowRdpAccess": { @@ -1137,6 +1442,7 @@ "items": { "$ref": "#/definitions/NetworkSecurityRule" }, + "x-ms-identifiers": [], "description": "Custom Network Security Rules that are applied to the Virtual Network of the cluster." }, "clients": { @@ -1144,6 +1450,7 @@ "items": { "$ref": "#/definitions/ClientCertificate" }, + "x-ms-identifiers": [], "description": "Client certificates that are allowed to manage the cluster." }, "azureActiveDirectory": { @@ -1155,6 +1462,7 @@ "items": { "$ref": "#/definitions/SettingsSectionDescription" }, + "x-ms-identifiers": [], "description": "The list of custom fabric settings to configure the cluster." }, "provisioningState": { @@ -1182,7 +1490,7 @@ }, "enableAutoOSUpgrade": { "type": "boolean", - "description": "Setting this to true enables automatic OS upgrade for the node types that are created using any platform OS image with version 'latest'. The default value for this setting is false." + "description": "Enables automatic OS upgrade for node types created using OS images with version 'latest'. The default value for this setting is false." }, "zonalResiliency": { "type": "boolean", @@ -1204,8 +1512,9 @@ "ipTags": { "type": "array", "items": { - "$ref": "#/definitions/IPTag" + "$ref": "#/definitions/IpTag" }, + "x-ms-identifiers": [], "description": "The list of IP tags associated with the default public IP address of the cluster." }, "ipv6Address": { @@ -1222,6 +1531,7 @@ "items": { "$ref": "#/definitions/Subnet" }, + "x-ms-identifiers": [], "description": "Auxiliary subnets for the cluster." }, "serviceEndpoints": { @@ -1229,7 +1539,74 @@ "items": { "$ref": "#/definitions/ServiceEndpoint" }, + "x-ms-identifiers": [], "description": "Service endpoints for subnets in the cluster." + }, + "zonalUpdateMode": { + "$ref": "#/definitions/ZonalUpdateMode", + "description": "Indicates the update mode for Cross Az clusters." + }, + "useCustomVnet": { + "type": "boolean", + "description": "For new clusters, this parameter indicates that it uses Bring your own VNet, but the subnet is specified at node type level; and for such clusters, the subnetId property is required for node types." + }, + "publicIPPrefixId": { + "type": "string", + "format": "arm-id", + "x-ms-arm-id-details": { + "allowedResources": [ + { + "type": "Microsoft.Network/publicIPPrefixes" + } + ] + }, + "description": "Specify the resource id of a public IPv4 prefix that the load balancer will allocate a public IPv4 address from. This setting cannot be changed once the cluster is created." + }, + "publicIPv6PrefixId": { + "type": "string", + "format": "arm-id", + "x-ms-arm-id-details": { + "allowedResources": [ + { + "type": "Microsoft.Network/publicIPPrefixes" + } + ] + }, + "description": "Specify the resource id of a public IPv6 prefix that the load balancer will allocate a public IPv6 address from. This setting cannot be changed once the cluster is created." + }, + "ddosProtectionPlanId": { + "type": "string", + "format": "arm-id", + "x-ms-arm-id-details": { + "allowedResources": [ + { + "type": "Microsoft.Network/ddosProtectionPlans" + } + ] + }, + "description": "Specify the resource id of a DDoS network protection plan that will be associated with the virtual network of the cluster." + }, + "upgradeDescription": { + "$ref": "#/definitions/ClusterUpgradePolicy", + "description": "The policy to use when upgrading the cluster." + }, + "httpGatewayTokenAuthConnectionPort": { + "type": "integer", + "format": "int32", + "description": "The port used for token-auth based HTTPS connections to the cluster. Cannot be set to the same port as HttpGatewayEndpoint." + }, + "enableHttpGatewayExclusiveAuthMode": { + "type": "boolean", + "description": "If true, token-based authentication is not allowed on the HttpGatewayEndpoint. This is required to support TLS versions 1.3 and above. If token-based authentication is used, HttpGatewayTokenAuthConnectionPort must be defined." + }, + "autoGeneratedDomainNameLabelScope": { + "$ref": "#/definitions/AutoGeneratedDomainNameLabelScope", + "description": "This property is the entry point to using a public CA cert for your cluster cert. It specifies the level of reuse allowed for the custom FQDN created, matching the subject of the public CA cert." + }, + "allocatedOutboundPorts": { + "type": "integer", + "format": "int32", + "description": "The number of outbound ports allocated for SNAT for each node in the backend pool of the default load balancer. The default value is 0 which provides dynamic port allocation based on pool size." } }, "description": "Describes the managed cluster resource properties." @@ -1308,12 +1685,111 @@ }, "description": "Describes the result of the request to list Managed VM Sizes for Service Fabric Managed Clusters." }, + "ManagedAzResiliencyStatus": { + "type": "object", + "properties": { + "baseResourceStatus": { + "type": "array", + "description": "List of Managed VM Sizes for Service Fabric Managed Clusters.", + "items": { + "$ref": "#/definitions/ResourceAzStatus" + }, + "x-ms-identifiers": [] + }, + "isClusterZoneResilient": { + "type": "boolean", + "description": "URL to get the next set of Managed VM Sizes if there are any.", + "readOnly": true + } + }, + "description": "Describes the result of the request to list Managed VM Sizes for Service Fabric Managed Clusters." + }, + "ManagedMaintenanceWindowStatus": { + "type": "object", + "properties": { + "isWindowEnabled": { + "type": "boolean", + "description": "If maintenance window is enabled on this cluster.", + "readOnly": true + }, + "isRegionReady": { + "type": "boolean", + "description": "Indicates if the region is ready to configure maintenance windows.", + "readOnly": true + }, + "isWindowActive": { + "type": "boolean", + "description": "If maintenance window is active.", + "readOnly": true + }, + "canApplyUpdates": { + "type": "boolean", + "description": "If updates can be applied.", + "readOnly": true + }, + "lastWindowStatusUpdateAtUTC": { + "type": "string", + "format": "date-time", + "description": "Last window update time in UTC.", + "readOnly": true + }, + "lastWindowStartTimeUTC": { + "type": "string", + "format": "date-time", + "description": "Last window start time in UTC.", + "readOnly": true + }, + "lastWindowEndTimeUTC": { + "type": "string", + "format": "date-time", + "description": "Last window end time in UTC.", + "readOnly": true + } + }, + "description": "Describes the maintenance window status of the Service Fabric Managed Cluster." + }, + "ResourceAzStatus": { + "type": "object", + "properties": { + "resourceName": { + "type": "string", + "description": "VM Size properties.", + "readOnly": true + }, + "resourceType": { + "type": "string", + "description": "VM Size id.", + "readOnly": true + }, + "isZoneResilient": { + "type": "boolean", + "description": "VM Size name.", + "readOnly": true + }, + "details": { + "type": "string", + "description": "Zone resiliency status details for the resource.", + "readOnly": true + } + }, + "description": "Describes Az Resiliency status of Base resources" + }, "OsType": { "type": "string", "description": "Cluster operating system, the default will be Windows", "enum": [ "Windows" - ] + ], + "x-ms-enum": { + "name": "OsType", + "modelAsString": true, + "values": [ + { + "value": "Windows", + "description": "Indicates os is Windows." + } + ] + } }, "ServiceEndpoint": { "type": "object", @@ -1426,6 +1902,28 @@ }, "description": "VM Sizes properties." }, + "ZonalUpdateMode": { + "type": "string", + "description": "Indicates the update mode for Cross Az clusters.", + "enum": [ + "Standard", + "Fast" + ], + "x-ms-enum": { + "name": "ZonalUpdateMode", + "modelAsString": true, + "values": [ + { + "value": "Standard", + "description": "The cluster will use 5 upgrade domains for Cross Az Node types." + }, + { + "value": "Fast", + "description": "The cluster will use a maximum of 3 upgrade domains per zone instead of 5 for Cross Az Node types for faster deployments." + } + ] + } + }, "AvailableOperationDisplay": { "type": "object", "properties": { @@ -1472,6 +1970,24 @@ }, "description": "The error details." }, + "IpTag": { + "type": "object", + "required": [ + "ipTagType", + "tag" + ], + "properties": { + "ipTagType": { + "type": "string", + "description": "IP tag type. Example: FirstPartyUsage." + }, + "tag": { + "type": "string", + "description": "IP tag associated with the public IP. Example: SQL, Storage etc." + } + }, + "description": "The IP tag associated with the public IP address." + }, "ManagedResourceProvisioningState": { "type": "string", "description": "The provisioning state of the managed resource.", @@ -1613,7 +2129,8 @@ "description": "List of operations supported by the Service Fabric resource provider.", "items": { "$ref": "#/definitions/OperationResult" - } + }, + "x-ms-identifiers": [] }, "nextLink": { "type": "string", @@ -1731,7 +2248,10 @@ "description": "The collection of parameters in the section.", "items": { "$ref": "#/definitions/SettingsParameterDescription" - } + }, + "x-ms-identifiers": [ + "name" + ] } }, "description": "Describes a section in the fabric settings of the cluster." @@ -1774,7 +2294,7 @@ "api-version": { "name": "api-version", "in": "query", - "description": "The version of the Service Fabric resource provider API. This is a required parameter and it's value must be \"2022-01-01\" for this specification.", + "description": "The version of the Service Fabric resource provider API. This is a required parameter and it's value must be \"2024-09-01-preview\" for this specification.", "required": true, "type": "string", "x-ms-parameter-location": "client" @@ -1804,11 +2324,17 @@ "enum": [ "Windows" ], + "x-ms-parameter-location": "method", "x-ms-enum": { "name": "ManagedClusterVersionEnvironment", - "modelAsString": true - }, - "x-ms-parameter-location": "method" + "modelAsString": true, + "values": [ + { + "value": "Windows", + "description": "Windows." + } + ] + } }, "locationForClusterCodeVersions": { "name": "location", diff --git a/App_Data/SwaggerSpecs/Microsoft.ServiceFabric/nodetype.json b/App_Data/SwaggerSpecs/Microsoft.ServiceFabric/nodetype.json index 7133decc..ef0a0781 100644 --- a/App_Data/SwaggerSpecs/Microsoft.ServiceFabric/nodetype.json +++ b/App_Data/SwaggerSpecs/Microsoft.ServiceFabric/nodetype.json @@ -3,7 +3,7 @@ "info": { "title": "ServiceFabricManagementClient", "description": "Azure Service Fabric Resource Provider API Client", - "version": "2022-01-01" + "version": "2024-09-01-preview" }, "host": "management.azure.com", "schemes": [ @@ -34,7 +34,7 @@ } ], "paths": { - "/subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/managedClusters/{clusterName}/nodeTypes": { + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ServiceFabric/managedClusters/{clusterName}/nodeTypes": { "get": { "operationId": "NodeTypes_ListByManagedClusters", "summary": "Gets the list of Node types of the specified managed cluster.", @@ -126,7 +126,17 @@ }, "responses": { "202": { - "description": "The request was accepted and the operation will complete asynchronously." + "description": "The request was accepted and the operation will complete asynchronously.", + "headers": { + "Azure-AsyncOperation": { + "description": "The URL to get the status of an ongoing long-running operation.", + "type": "string" + }, + "Location": { + "description": "The URL to get the status of a completed long-running operation.", + "type": "string" + } + } }, "200": { "description": "The operation completed successfully." @@ -178,6 +188,9 @@ "x-ms-examples": { "Reimage nodes": { "$ref": "./examples/ReimageNodes_example.json" + }, + "Reimage all nodes By upgrade domain": { + "$ref": "./examples/ReimageNodes_UD_example.json" } }, "x-ms-long-running-operation": true, @@ -186,7 +199,17 @@ }, "responses": { "202": { - "description": "The request was accepted and the operation will complete asynchronously." + "description": "The request was accepted and the operation will complete asynchronously.", + "headers": { + "Azure-AsyncOperation": { + "description": "The URL to get the status of an ongoing long-running operation.", + "type": "string" + }, + "Location": { + "description": "The URL to get the status of a completed long-running operation.", + "type": "string" + } + } }, "200": { "description": "The operation completed successfully." @@ -246,7 +269,17 @@ }, "responses": { "202": { - "description": "The request was accepted and the operation will complete asynchronously." + "description": "The request was accepted and the operation will complete asynchronously.", + "headers": { + "Azure-AsyncOperation": { + "description": "The URL to get the status of an ongoing long-running operation.", + "type": "string" + }, + "Location": { + "description": "The URL to get the status of a completed long-running operation.", + "type": "string" + } + } }, "200": { "description": "The operation completed successfully." @@ -400,6 +433,18 @@ }, "Put an stateless node type with temporary disk for service fabric": { "$ref": "./examples/NodeTypePutOperationStateless_example.json" + }, + "Put node type with dedicated hosts": { + "$ref": "./examples/NodeTypePutOperationDedicatedHost_example.json" + }, + "Put node type with custom vm image": { + "$ref": "./examples/NodeTypePutOperationCustomImage_example.json" + }, + "Put node type with shared galleries custom vm image": { + "$ref": "./examples/NodeTypePutOperationCustomSharedGalleriesImage_example.json" + }, + "Put node type with vm image plan ": { + "$ref": "./examples/NodeTypePutOperationVmImagePlan_example.json" } }, "x-ms-long-running-operation": true, @@ -417,6 +462,16 @@ "description": "The request was accepted and the operation will complete asynchronously.", "schema": { "$ref": "#/definitions/NodeType" + }, + "headers": { + "Azure-AsyncOperation": { + "description": "The URL to get the status of an ongoing long-running operation.", + "type": "string" + }, + "Location": { + "description": "The URL to get the status of a completed long-running operation.", + "type": "string" + } } }, "default": { @@ -469,6 +524,10 @@ "$ref": "./examples/NodeTypePatchOperationAutoScale_example.json" } }, + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + }, "responses": { "200": { "description": "The operation completed successfully.", @@ -476,6 +535,19 @@ "$ref": "#/definitions/NodeType" } }, + "202": { + "description": "The request was accepted and the operation will complete asynchronously.", + "headers": { + "Azure-AsyncOperation": { + "description": "The URL to get the status of an ongoing long-running operation.", + "type": "string" + }, + "Location": { + "description": "The URL to get the status of a completed long-running operation.", + "type": "string" + } + } + }, "default": { "description": "The detailed error response.", "schema": { @@ -519,7 +591,17 @@ }, "responses": { "202": { - "description": "The request was accepted and the operation will complete asynchronously." + "description": "The request was accepted and the operation will complete asynchronously.", + "headers": { + "Azure-AsyncOperation": { + "description": "The URL to get the status of an ongoing long-running operation.", + "type": "string" + }, + "Location": { + "description": "The URL to get the status of a completed long-running operation.", + "type": "string" + } + } }, "204": { "description": "The resource was not found." @@ -538,6 +620,38 @@ } }, "definitions": { + "AdditionalNetworkInterfaceConfiguration": { + "type": "object", + "required": [ + "name", + "ipConfigurations" + ], + "properties": { + "name": { + "type": "string", + "description": "Name of the network interface." + }, + "enableAcceleratedNetworking": { + "type": "boolean", + "description": "Specifies whether the network interface is accelerated networking-enabled." + }, + "dscpConfiguration": { + "$ref": "#/definitions/SubResource", + "description": "Specifies the DSCP configuration to apply to the network interface." + }, + "ipConfigurations": { + "type": "array", + "items": { + "$ref": "#/definitions/IpConfiguration" + }, + "x-ms-identifiers": [ + "name" + ], + "description": "Specifies the IP configurations of the network interface." + } + }, + "description": "Specifies the settings for a network interface to attach to the node type." + }, "DiskType": { "type": "string", "description": "Managed data disk type. IOPS and throughput are given by the disk size, to see more information go to https://docs.microsoft.com/en-us/azure/virtual-machines/disks-types.\n", @@ -566,6 +680,28 @@ ] } }, + "EvictionPolicyType": { + "type": "string", + "description": "Specifies the eviction policy for virtual machines in a SPOT node type.", + "enum": [ + "Delete", + "Deallocate" + ], + "x-ms-enum": { + "name": "EvictionPolicyType", + "modelAsString": true, + "values": [ + { + "value": "Delete", + "description": "Eviction policy will be Delete for SPOT vms." + }, + { + "value": "Deallocate", + "description": "Eviction policy will be Deallocate for SPOT vms." + } + ] + } + }, "FrontendConfiguration": { "type": "object", "properties": { @@ -575,11 +711,25 @@ }, "loadBalancerBackendAddressPoolId": { "type": "string", + "format": "arm-id", "description": "The resource Id of the Load Balancer backend address pool that the VM instances of the node type are associated with. The format of the resource Id is '/subscriptions//resourceGroups//providers/Microsoft.Network/loadBalancers//backendAddressPools/'." }, "loadBalancerInboundNatPoolId": { "type": "string", + "format": "arm-id", "description": "The resource Id of the Load Balancer inbound NAT pool that the VM instances of the node type are associated with. The format of the resource Id is '/subscriptions//resourceGroups//providers/Microsoft.Network/loadBalancers//inboundNatPools/'." + }, + "applicationGatewayBackendAddressPoolId": { + "type": "string", + "format": "arm-id", + "x-ms-arm-id-details": { + "allowedResources": [ + { + "type": "Microsoft.Network/applicationGateways/backendAddressPools" + } + ] + }, + "description": "The resource Id of application gateway backend address pool. The format of the resource Id is '/subscriptions//resourceGroups//providers/Microsoft.Network/applicationGateways//backendAddressPools/'." } }, "description": "Describes the frontend configurations for the node type." @@ -607,6 +757,107 @@ ] } }, + "IpConfiguration": { + "type": "object", + "required": [ + "name" + ], + "description": "Specifies an IP configuration of the network interface.", + "properties": { + "name": { + "type": "string", + "description": "Name of the network interface." + }, + "applicationGatewayBackendAddressPools": { + "type": "array", + "items": { + "$ref": "#/definitions/SubResource" + }, + "description": "Specifies an array of references to backend address pools of application gateways. A node type can reference backend address pools of multiple application gateways. Multiple node types cannot use the same application gateway." + }, + "loadBalancerBackendAddressPools": { + "type": "array", + "items": { + "$ref": "#/definitions/SubResource" + }, + "description": "Specifies an array of references to backend address pools of load balancers. A node type can reference backend address pools of one public and one internal load balancer. Multiple node types cannot use the same basic sku load balancer.\t" + }, + "loadBalancerInboundNatPools": { + "type": "array", + "items": { + "$ref": "#/definitions/SubResource" + }, + "description": "Specifies an array of references to inbound Nat pools of the load balancers. A node type can reference inbound nat pools of one public and one internal load balancer. Multiple node types cannot use the same basic sku load balancer." + }, + "subnet": { + "$ref": "#/definitions/SubResource", + "description": "Specifies the subnet of the network interface." + }, + "privateIPAddressVersion": { + "type": "string", + "description": "Specifies whether the IP configuration's private IP is IPv4 or IPv6. Default is IPv4.", + "enum": [ + "IPv4", + "IPv6" + ], + "default": "IPv4", + "x-ms-enum": { + "name": "privateIPAddressVersion", + "modelAsString": true, + "values": [ + { + "value": "IPv4" + }, + { + "value": "IPv6" + } + ] + } + }, + "publicIPAddressConfiguration": { + "type": "object", + "required": [ + "name" + ], + "description": "The public IP address configuration of the network interface.", + "properties": { + "name": { + "type": "string", + "description": "Name of the network interface." + }, + "ipTags": { + "type": "array", + "items": { + "$ref": "#/definitions/IpTag" + }, + "x-ms-identifiers": [], + "description": "Specifies the list of IP tags associated with the public IP address." + }, + "publicIPAddressVersion": { + "type": "string", + "description": "Specifies whether the IP configuration's public IP is IPv4 or IPv6. Default is IPv4.", + "enum": [ + "IPv4", + "IPv6" + ], + "default": "IPv4", + "x-ms-enum": { + "name": "publicIPAddressVersion", + "modelAsString": true, + "values": [ + { + "value": "IPv4" + }, + { + "value": "IPv6" + } + ] + } + } + } + } + } + }, "ManagedProxyResource": { "type": "object", "properties": { @@ -665,9 +916,6 @@ }, "NodeTypeActionParameters": { "type": "object", - "required": [ - "nodes" - ], "properties": { "nodes": { "description": "List of node names from the node type.", @@ -679,9 +927,31 @@ "force": { "description": "Force the action to go through.", "type": "boolean" + }, + "updateType": { + "type": "string", + "description": "Specifies the way the operation will be performed.", + "enum": [ + "Default", + "ByUpgradeDomain" + ], + "x-ms-enum": { + "name": "updateType", + "modelAsString": true, + "values": [ + { + "value": "Default", + "description": "The operation will proceed in all specified nodes at the same time." + }, + { + "value": "ByUpgradeDomain", + "description": "The operation will proceed one upgrade domain at a time, checking the health in between each to continue." + } + ] + } } }, - "description": "Parameters for Node type action." + "description": "Parameters for Node type action. If nodes are not specified on the parameters, the operation will be performed in all nodes of the node type one upgrade domain at a time." }, "NodeTypeProperties": { "type": "object", @@ -765,7 +1035,10 @@ "description": "The secrets to install in the virtual machines.", "items": { "$ref": "#/definitions/VaultSecretGroup" - } + }, + "x-ms-identifiers": [ + "sourceVault" + ] }, "vmExtensions": { "type": "array", @@ -773,7 +1046,10 @@ "description": "Set of extensions that should be installed onto the virtual machines.", "items": { "$ref": "#/definitions/VMSSExtension" - } + }, + "x-ms-identifiers": [ + "name" + ] }, "vmManagedIdentity": { "$ref": "#/definitions/VmManagedIdentity", @@ -794,6 +1070,7 @@ "items": { "$ref": "#/definitions/FrontendConfiguration" }, + "x-ms-identifiers": [], "description": "Indicates the node type uses its own frontend configurations instead of the default one for the cluster. This setting can only be specified for non-primary node types and can not be added or removed after the node type is created." }, "networkSecurityRules": { @@ -801,6 +1078,7 @@ "items": { "$ref": "#/definitions/NetworkSecurityRule" }, + "x-ms-identifiers": [], "description": "The Network Security Rules for this node type. This setting can only be specified for node types that are configured with frontend configurations." }, "additionalDataDisks": { @@ -808,6 +1086,9 @@ "items": { "$ref": "#/definitions/VmssDataDisk" }, + "x-ms-identifiers": [ + "lun" + ], "description": "Additional managed data disks." }, "enableEncryptionAtHost": { @@ -835,6 +1116,191 @@ "enableOverProvisioning": { "type": "boolean", "description": "Specifies whether the node type should be overprovisioned. It is only allowed for stateless node types." + }, + "zones": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Specifies the availability zones where the node type would span across. If the cluster is not spanning across availability zones, initiates az migration for the cluster." + }, + "isSpotVM": { + "type": "boolean", + "description": "Indicates whether the node type will be Spot Virtual Machines. Azure will allocate the VMs if there is capacity available and the VMs can be evicted at any time." + }, + "hostGroupId": { + "type": "string", + "description": "Specifies the full host group resource Id. This property is used for deploying on azure dedicated hosts." + }, + "useEphemeralOSDisk": { + "type": "boolean", + "description": "Indicates whether to use ephemeral os disk. The sku selected on the vmSize property needs to support this feature." + }, + "spotRestoreTimeout": { + "type": "string", + "description": "Indicates the time duration after which the platform will not try to restore the VMSS SPOT instances specified as ISO 8601." + }, + "evictionPolicy": { + "$ref": "#/definitions/EvictionPolicyType", + "description": "Specifies the eviction policy for virtual machines in a SPOT node type. Default is Delete." + }, + "vmImageResourceId": { + "type": "string", + "format": "arm-id", + "x-ms-arm-id-details": { + "allowedResources": [ + { + "type": "Microsoft.Compute/images" + }, + { + "type": "Microsoft.Compute/galleries/images" + }, + { + "type": "Microsoft.Compute/galleries/images/versions" + } + ] + }, + "description": "Indicates the resource id of the vm image. This parameter is used for custom vm image." + }, + "subnetId": { + "type": "string", + "format": "arm-id", + "x-ms-arm-id-details": { + "allowedResources": [ + { + "type": "Microsoft.Network/virtualNetworks/subnets" + } + ] + }, + "description": "Indicates the resource id of the subnet for the node type." + }, + "vmSetupActions": { + "type": "array", + "items": { + "$ref": "#/definitions/VmSetupAction" + }, + "description": "Specifies the actions to be performed on the vms before bootstrapping the service fabric runtime." + }, + "securityType": { + "type": "string", + "description": "Specifies the security type of the nodeType. Only Standard and TrustedLaunch are currently supported", + "enum": [ + "TrustedLaunch", + "Standard" + ], + "x-ms-enum": { + "name": "securityType", + "modelAsString": true, + "values": [ + { + "value": "TrustedLaunch", + "description": "Trusted Launch is a security type that secures generation 2 virtual machines." + }, + { + "value": "Standard", + "description": "Standard is the default security type for all machines." + } + ] + } + }, + "secureBootEnabled": { + "type": "boolean", + "description": "Specifies whether secure boot should be enabled on the nodeType. Can only be used with TrustedLaunch SecurityType" + }, + "enableNodePublicIP": { + "type": "boolean", + "description": "Specifies whether each node is allocated its own public IPv4 address. This is only supported on secondary node types with custom Load Balancers." + }, + "enableNodePublicIPv6": { + "type": "boolean", + "description": "Specifies whether each node is allocated its own public IPv6 address. This is only supported on secondary node types with custom Load Balancers." + }, + "vmSharedGalleryImageId": { + "type": "string", + "format": "arm-id", + "x-ms-arm-id-details": { + "allowedResources": [ + { + "type": "Microsoft.Compute/sharedGalleries/images" + }, + { + "type": "Microsoft.Compute/sharedGalleries/images/versions" + } + ] + }, + "description": "Indicates the resource id of the vm shared galleries image. This parameter is used for custom vm image." + }, + "natGatewayId": { + "type": "string", + "format": "arm-id", + "x-ms-arm-id-details": { + "allowedResources": [ + { + "type": "Microsoft.Network/natGateways" + } + ] + }, + "description": "Specifies the resource id of a NAT Gateway to attach to the subnet of this node type. Node type must use custom load balancer." + }, + "natConfigurations": { + "type": "array", + "items": { + "$ref": "#/definitions/NodeTypeNatConfig" + }, + "x-ms-identifiers": [], + "description": "Specifies the NAT configuration on default public Load Balancer for the node type. This is only supported for node types use the default public Load Balancer." + }, + "vmImagePlan": { + "$ref": "#/definitions/VmImagePlan", + "description": "Specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can use a marketplace image from an API, you must enable the image for programmatic use. In the Azure portal, find the marketplace image that you want to use and then click Want to deploy programmatically, Get Started ->. Enter any required information and then click Save." + }, + "serviceArtifactReferenceId": { + "type": "string", + "format": "arm-id", + "x-ms-arm-id-details": { + "allowedResources": [ + { + "type": "Microsoft.Compute/galleries/serviceArtifacts/vmArtifactsProfiles" + } + ] + }, + "description": "Specifies the service artifact reference id used to set same image version for all virtual machines in the scale set when using 'latest' image version." + }, + "dscpConfigurationId": { + "type": "string", + "format": "arm-id", + "x-ms-arm-id-details": { + "allowedResources": [ + { + "type": "Microsoft.Network/dscpConfigurations" + } + ] + }, + "description": "Specifies the resource id of the DSCP configuration to apply to the node type network interface." + }, + "additionalNetworkInterfaceConfigurations": { + "type": "array", + "items": { + "$ref": "#/definitions/AdditionalNetworkInterfaceConfiguration" + }, + "x-ms-identifiers": [ + "name" + ], + "description": "Specifies the settings for any additional secondary network interfaces to attach to the node type." + }, + "computerNamePrefix": { + "type": "string", + "description": "Specifies the computer name prefix. Limited to 9 characters. If specified, allows for a longer name to be specified for the node type name." + }, + "vmApplications": { + "type": "array", + "items": { + "$ref": "#/definitions/VmApplication" + }, + "x-ms-identifiers": [ + "name" + ], + "description": "Specifies the gallery applications that should be made available to the underlying VMSS." } }, "description": "Describes a node type in the cluster, each node type represents sub set of nodes in the cluster." @@ -857,6 +1323,33 @@ }, "description": "Node type list results" }, + "NodeTypeNatConfig": { + "type": "object", + "properties": { + "backendPort": { + "type": "integer", + "format": "int32", + "minimum": 1, + "maximum": 65535, + "description": "The internal port for the NAT configuration." + }, + "frontendPortRangeStart": { + "type": "integer", + "format": "int32", + "minimum": 1, + "maximum": 65534, + "description": "The port range start for the external endpoint." + }, + "frontendPortRangeEnd": { + "type": "integer", + "format": "int32", + "minimum": 1, + "maximum": 65534, + "description": "The port range end for the external endpoint." + } + }, + "description": "Provides information about NAT configuration on the default public Load Balancer for the node type." + }, "NodeTypeUpdateParameters": { "type": "object", "properties": { @@ -1001,7 +1494,8 @@ "description": "The list of available node type SKUs.", "items": { "$ref": "#/definitions/NodeTypeAvailableSku" - } + }, + "x-ms-identifiers": [] }, "nextLink": { "type": "string", @@ -1030,7 +1524,7 @@ "properties": { "certificateUrl": { "type": "string", - "description": "This is the URL of a certificate that has been uploaded to Key Vault as a secret. For adding a secret to the Key Vault, see [Add a key or secret to the key vault](https://docs.microsoft.com/azure/key-vault/key-vault-get-started/#add). In this case, your certificate needs to be It is the Base64 encoding of the following JSON Object which is encoded in UTF-8:

{
\"data\":\"\",
\"dataType\":\"pfx\",
\"password\":\"\"
}" + "description": "This is the URL of a certificate that has been uploaded to Key Vault as a secret. For adding a secret to the Key Vault, see [Add a key or secret to the key vault](https://docs.microsoft.com/azure/key-vault/key-vault-get-started/#add)." }, "certificateStore": { "type": "string", @@ -1055,11 +1549,77 @@ "items": { "$ref": "#/definitions/VaultCertificate" }, + "x-ms-identifiers": [], "description": "The list of key vault references in SourceVault which contain certificates." } }, "description": "Specifies set of certificates that should be installed onto the virtual machines." }, + "VmApplication": { + "type": "object", + "required": [ + "packageReferenceId" + ], + "properties": { + "configurationReference": { + "format": "uri", + "type": "string", + "description": "Optional, Specifies the uri to an azure blob that will replace the default configuration for the package if provided." + }, + "enableAutomaticUpgrade": { + "type": "boolean", + "description": "If set to true, when a new Gallery Application version is available in PIR/SIG, it will be automatically updated for the underlying VMSS." + }, + "order": { + "type": "integer", + "format": "int32", + "description": "Optional, Specifies the order in which the packages have to be installed." + }, + "packageReferenceId": { + "type": "string", + "format": "arm-id", + "x-ms-arm-id-details": { + "allowedResources": [ + { + "type": "Microsoft.Compute/galleries/applications/versions" + } + ] + }, + "description": "Specifies the GalleryApplicationVersion resource id on the form of /subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroupName}/providers/Microsoft.Compute/galleries/{galleryName}/applications/{application}/versions/{version}." + }, + "vmGalleryTags": { + "type": "string", + "description": "Optional, Specifies a passthrough value for more generic context. Accepts a JSON-formatted string e.g. '{\"Tag1\":\"Value1\",\"Tag2\":\"Value2\"}'." + }, + "treatFailureAsDeploymentFailure": { + "type": "boolean", + "description": "Optional, If true, any failure for any operation in the VmApplication will fail the deployment." + } + }, + "description": "Specifies the gallery application that should be made available to the underlying VMSS." + }, + "VmImagePlan": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "The plan ID." + }, + "product": { + "type": "string", + "description": "Specifies the product of the image from the marketplace. This is the same value as Offer under the imageReference element." + }, + "promotionCode": { + "type": "string", + "description": "The promotion code." + }, + "publisher": { + "type": "string", + "description": "The publisher ID." + } + }, + "description": "Specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can use a marketplace image from an API, you must enable the image for programmatic use. In the Azure portal, find the marketplace image that you want to use and then click Want to deploy programmatically, Get Started ->. Enter any required information and then click Save." + }, "VmManagedIdentity": { "type": "object", "properties": { @@ -1105,6 +1665,28 @@ }, "description": "Managed data disk description." }, + "VmSetupAction": { + "type": "string", + "description": "action to be performed on the vms before bootstrapping the service fabric runtime.", + "enum": [ + "EnableContainers", + "EnableHyperV" + ], + "x-ms-enum": { + "name": "VmSetupAction", + "modelAsString": true, + "values": [ + { + "value": "EnableContainers", + "description": "Enable windows containers feature." + }, + { + "value": "EnableHyperV", + "description": "Enables windows HyperV feature." + } + ] + } + }, "VMSSExtension": { "type": "object", "required": [ @@ -1175,10 +1757,35 @@ "enableAutomaticUpgrade": { "type": "boolean", "description": "Indicates whether the extension should be automatically upgraded by the platform if there is a newer version of the extension available." + }, + "setupOrder": { + "type": "array", + "items": { + "$ref": "#/definitions/VmssExtensionSetupOrder" + }, + "x-ms-identifiers": [], + "description": "Indicates the setup order for the extension." } }, "description": "Describes the properties of a Virtual Machine Scale Set Extension." }, + "VmssExtensionSetupOrder": { + "type": "string", + "description": "Vm extension setup order.\n", + "enum": [ + "BeforeSFRuntime" + ], + "x-ms-enum": { + "name": "VmssExtensionSetupOrder", + "modelAsString": true, + "values": [ + { + "value": "BeforeSFRuntime", + "description": "Indicates that the vm extension should run before the service fabric runtime starts." + } + ] + } + }, "AvailableOperationDisplay": { "type": "object", "properties": { @@ -1245,6 +1852,24 @@ }, "description": "The error details." }, + "IpTag": { + "type": "object", + "required": [ + "ipTagType", + "tag" + ], + "properties": { + "ipTagType": { + "type": "string", + "description": "IP tag type. Example: FirstPartyUsage." + }, + "tag": { + "type": "string", + "description": "IP tag associated with the public IP. Example: SQL, Storage etc." + } + }, + "description": "The IP tag associated with the public IP address." + }, "ManagedResourceProvisioningState": { "type": "string", "description": "The provisioning state of the managed resource.", @@ -1442,7 +2067,7 @@ "api-version": { "name": "api-version", "in": "query", - "description": "The version of the Service Fabric resource provider API. This is a required parameter and it's value must be \"2022-01-01\" for this specification.", + "description": "The version of the Service Fabric resource provider API. This is a required parameter and it's value must be \"2024-09-01-preview\" for this specification.", "required": true, "type": "string", "x-ms-parameter-location": "client"