diff --git a/App_Data/SwaggerSpecs/Microsoft.Batch/BatchManagement.json b/App_Data/SwaggerSpecs/Microsoft.Batch/BatchManagement.json index 1a537f8..41a3845 100644 --- a/App_Data/SwaggerSpecs/Microsoft.Batch/BatchManagement.json +++ b/App_Data/SwaggerSpecs/Microsoft.Batch/BatchManagement.json @@ -1,11 +1,9 @@ { "swagger": "2.0", "info": { - "title": "BatchManagement", - "version": "2018-12-01", - "x-ms-code-generation-settings": { - "name": "BatchManagementClient" - } + "title": "BatchManagementClient", + "description": "The Batch Management Client.", + "version": "2021-06-01" }, "host": "management.azure.com", "schemes": [ @@ -43,8 +41,21 @@ ], "operationId": "BatchAccount_Create", "x-ms-examples": { - "BatchAccountCreate_Default": { "$ref": "./examples/BatchAccountCreate_Default.json" }, - "BatchAccountCreate_BYOS": { "$ref": "./examples/BatchAccountCreate_BYOS.json" } + "BatchAccountCreate_Default": { + "$ref": "./examples/BatchAccountCreate_Default.json" + }, + "BatchAccountCreate_BYOS": { + "$ref": "./examples/BatchAccountCreate_BYOS.json" + }, + "PrivateBatchAccountCreate": { + "$ref": "./examples/PrivateBatchAccountCreate.json" + }, + "BatchAccountCreate_SystemAssignedIdentity": { + "$ref": "./examples/BatchAccountCreate_SystemAssignedIdentity.json" + }, + "BatchAccountCreate_UserAssignedIdentity": { + "$ref": "./examples/BatchAccountCreate_UserAssignedIdentity.json" + } }, "description": "Creates a new Batch account with the specified parameters. Existing accounts cannot be updated with this API and should instead be updated with the Update Batch Account API.", "parameters": [ @@ -56,7 +67,7 @@ "in": "path", "required": true, "type": "string", - "pattern": "^[-\\w\\._]+$", + "pattern": "^[a-z0-9]+$", "minLength": 3, "maxLength": 24, "description": "A name for the Batch account which must be unique within the region. Batch account names must be between 3 and 24 characters in length and must use only numbers and lowercase letters. This name is used as part of the DNS name that is used to access the Batch service in the region in which the account is created. For example: http://accountname.region.batch.azure.com/." @@ -105,7 +116,10 @@ } } }, - "x-ms-long-running-operation": true + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + } }, "patch": { "tags": [ @@ -113,7 +127,9 @@ ], "operationId": "BatchAccount_Update", "x-ms-examples": { - "BatchAccountUpdate": { "$ref": "./examples/BatchAccountUpdate.json" } + "BatchAccountUpdate": { + "$ref": "./examples/BatchAccountUpdate.json" + } }, "description": "Updates the properties of an existing Batch account.", "parameters": [ @@ -160,7 +176,9 @@ ], "operationId": "BatchAccount_Delete", "x-ms-examples": { - "BatchAccountDelete": { "$ref": "./examples/BatchAccountDelete.json" } + "BatchAccountDelete": { + "$ref": "./examples/BatchAccountDelete.json" + } }, "description": "Deletes the specified Batch account.", "parameters": [ @@ -205,7 +223,10 @@ } } }, - "x-ms-long-running-operation": true + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + } }, "get": { "tags": [ @@ -213,7 +234,12 @@ ], "operationId": "BatchAccount_Get", "x-ms-examples": { - "BatchAccountGet": { "$ref": "./examples/BatchAccountGet.json" } + "BatchAccountGet": { + "$ref": "./examples/BatchAccountGet.json" + }, + "PrivateBatchAccountGet": { + "$ref": "./examples/PrivateBatchAccountGet.json" + } }, "description": "Gets information about the specified Batch account.", "parameters": [ @@ -253,7 +279,9 @@ ], "operationId": "BatchAccount_List", "x-ms-examples": { - "BatchAccountList": { "$ref": "./examples/BatchAccountList.json" } + "BatchAccountList": { + "$ref": "./examples/BatchAccountList.json" + } }, "description": "Gets information about the Batch accounts associated with the subscription.", "parameters": [ @@ -290,7 +318,9 @@ ], "operationId": "BatchAccount_ListByResourceGroup", "x-ms-examples": { - "BatchAccountListByResourceGroup": { "$ref": "./examples/BatchAccountListByResourceGroup.json" } + "BatchAccountListByResourceGroup": { + "$ref": "./examples/BatchAccountListByResourceGroup.json" + } }, "description": "Gets information about the Batch accounts associated with the specified resource group.", "parameters": [ @@ -330,9 +360,11 @@ ], "operationId": "BatchAccount_SynchronizeAutoStorageKeys", "x-ms-examples": { - "BatchAccountSynchronizeAutoStorageKeys": { "$ref": "./examples/BatchAccountSynchronizeAutoStorageKeys.json" } + "BatchAccountSynchronizeAutoStorageKeys": { + "$ref": "./examples/BatchAccountSynchronizeAutoStorageKeys.json" + } }, - "description": "Synchronizes access keys for the auto-storage account configured for the specified Batch account.", + "description": "Synchronizes access keys for the auto-storage account configured for the specified Batch account, only if storage key authentication is being used.", "parameters": [ { "$ref": "#/parameters/ResourceGroupNameParameter" @@ -367,9 +399,12 @@ ], "operationId": "BatchAccount_RegenerateKey", "x-ms-examples": { - "BatchAccountRegenerateKey": { "$ref": "./examples/BatchAccountRegenerateKey.json" } + "BatchAccountRegenerateKey": { + "$ref": "./examples/BatchAccountRegenerateKey.json" + } }, - "description": "Regenerates the specified account key for the Batch account.", + "summary": "Regenerates the specified account key for the Batch account.", + "description": "This operation applies only to Batch accounts with allowedAuthenticationModes containing 'SharedKey'. If the Batch account doesn't contain 'SharedKey' in its allowedAuthenticationMode, clients cannot use shared keys to authenticate, and must use another allowedAuthenticationModes instead. In this case, regenerating the keys will fail.", "parameters": [ { "$ref": "#/parameters/ResourceGroupNameParameter" @@ -416,10 +451,12 @@ ], "operationId": "BatchAccount_GetKeys", "x-ms-examples": { - "BatchAccountGetKeys": { "$ref": "./examples/BatchAccountGetKeys.json" } + "BatchAccountGetKeys": { + "$ref": "./examples/BatchAccountGetKeys.json" + } }, "summary": "Gets the account keys for the specified Batch account.", - "description": "This operation applies only to Batch accounts created with a poolAllocationMode of 'BatchService'. If the Batch account was created with a poolAllocationMode of 'UserSubscription', clients cannot use access to keys to authenticate, and must use Azure Active Directory instead. In this case, getting the keys will fail.", + "description": "This operation applies only to Batch accounts with allowedAuthenticationModes containing 'SharedKey'. If the Batch account doesn't contain 'SharedKey' in its allowedAuthenticationMode, clients cannot use shared keys to authenticate, and must use another allowedAuthenticationModes instead. In this case, getting the keys will fail.", "parameters": [ { "$ref": "#/parameters/ResourceGroupNameParameter" @@ -457,9 +494,11 @@ ], "operationId": "ApplicationPackage_Activate", "x-ms-examples": { - "ApplicationPackageActivate": { "$ref": "./examples/ApplicationPackageActivate.json" } + "ApplicationPackageActivate": { + "$ref": "./examples/ApplicationPackageActivate.json" + } }, - "description": "Activates the specified application package.", + "description": "Activates the specified application package. This should be done after the `ApplicationPackage` was created and uploaded. This needs to be done before an `ApplicationPackage` can be used on Pools or Tasks.", "parameters": [ { "$ref": "#/parameters/ResourceGroupNameParameter" @@ -512,7 +551,9 @@ ], "operationId": "Application_Create", "x-ms-examples": { - "ApplicationCreate": { "$ref": "./examples/ApplicationCreate.json" } + "ApplicationCreate": { + "$ref": "./examples/ApplicationCreate.json" + } }, "description": "Adds an application to the specified Batch account.", "parameters": [ @@ -562,7 +603,9 @@ ], "operationId": "Application_Delete", "x-ms-examples": { - "ApplicationDelete": { "$ref": "./examples/ApplicationDelete.json" } + "ApplicationDelete": { + "$ref": "./examples/ApplicationDelete.json" + } }, "description": "Deletes an application.", "parameters": [ @@ -603,7 +646,9 @@ ], "operationId": "Application_Get", "x-ms-examples": { - "ApplicationGet": { "$ref": "./examples/ApplicationGet.json" } + "ApplicationGet": { + "$ref": "./examples/ApplicationGet.json" + } }, "description": "Gets information about the specified application.", "parameters": [ @@ -644,7 +689,9 @@ ], "operationId": "Application_Update", "x-ms-examples": { - "ApplicationUpdate": { "$ref": "./examples/ApplicationUpdate.json" } + "ApplicationUpdate": { + "$ref": "./examples/ApplicationUpdate.json" + } }, "description": "Updates settings for the specified application.", "parameters": [ @@ -696,9 +743,11 @@ ], "operationId": "ApplicationPackage_Create", "x-ms-examples": { - "ApplicationPackageCreate": { "$ref": "./examples/ApplicationPackageCreate.json" } + "ApplicationPackageCreate": { + "$ref": "./examples/ApplicationPackageCreate.json" + } }, - "description": "Creates an application package record.", + "description": "Creates an application package record. The record contains a storageUrl where the package should be uploaded to. Once it is uploaded the `ApplicationPackage` needs to be activated using `ApplicationPackageActive` before it can be used. If the auto storage account was configured to use storage keys, the URL returned will contain a SAS.", "parameters": [ { "$ref": "#/parameters/ResourceGroupNameParameter" @@ -749,7 +798,9 @@ ], "operationId": "ApplicationPackage_Delete", "x-ms-examples": { - "ApplicationPackageDelete": { "$ref": "./examples/ApplicationPackageDelete.json" } + "ApplicationPackageDelete": { + "$ref": "./examples/ApplicationPackageDelete.json" + } }, "description": "Deletes an application package record and its associated binary file.", "parameters": [ @@ -793,7 +844,9 @@ ], "operationId": "ApplicationPackage_Get", "x-ms-examples": { - "ApplicationPackageGet": { "$ref": "./examples/ApplicationPackageGet.json" } + "ApplicationPackageGet": { + "$ref": "./examples/ApplicationPackageGet.json" + } }, "description": "Gets information about the specified application package.", "parameters": [ @@ -839,7 +892,9 @@ ], "operationId": "Application_List", "x-ms-examples": { - "ApplicationList": { "$ref": "./examples/ApplicationList.json" } + "ApplicationList": { + "$ref": "./examples/ApplicationList.json" + } }, "description": "Lists all of the applications in the specified account.", "parameters": [ @@ -890,7 +945,9 @@ ], "operationId": "ApplicationPackage_List", "x-ms-examples": { - "ApplicationList": { "$ref": "./examples/ApplicationPackageList.json" } + "ApplicationPackageList": { + "$ref": "./examples/ApplicationPackageList.json" + } }, "description": "Lists all of the application packages in the specified application.", "parameters": [ @@ -944,7 +1001,9 @@ ], "operationId": "Location_GetQuotas", "x-ms-examples": { - "LocationGetQuotas": { "$ref": "./examples/LocationGetQuotas.json" } + "LocationGetQuotas": { + "$ref": "./examples/LocationGetQuotas.json" + } }, "description": "Gets the Batch service quotas for the specified subscription at the given location.", "parameters": [ @@ -978,6 +1037,128 @@ } } }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Batch/locations/{locationName}/virtualMachineSkus": { + "get": { + "tags": [ + "Location" + ], + "operationId": "Location_ListSupportedVirtualMachineSkus", + "x-ms-examples": { + "LocationListVirtualMachineSkus": { + "$ref": "./examples/LocationListVirtualMachineSkus.json" + } + }, + "description": "Gets the list of Batch supported Virtual Machine VM sizes available at the given location.", + "parameters": [ + { + "name": "locationName", + "in": "path", + "required": true, + "type": "string", + "description": "The region for which to retrieve Batch service supported SKUs." + }, + { + "name": "maxresults", + "in": "query", + "required": false, + "type": "integer", + "format": "int32", + "description": "The maximum number of items to return in the response." + }, + { + "name": "$filter", + "in": "query", + "required": false, + "type": "string", + "description": "OData filter expression. Valid properties for filtering are \"familyName\"." + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "The operation was successful. The response contains the Batch service supported virtual machine vm sizes for the subscription in the specified location.", + "schema": { + "$ref": "#/definitions/SupportedSkusResult" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/CloudError" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/providers/Microsoft.Batch/locations/{locationName}/cloudServiceSkus": { + "get": { + "tags": [ + "Location" + ], + "operationId": "Location_ListSupportedCloudServiceSkus", + "x-ms-examples": { + "LocationListCloudServiceSkus": { + "$ref": "./examples/LocationListCloudServiceSkus.json" + } + }, + "description": "Gets the list of Batch supported Cloud Service VM sizes available at the given location.", + "parameters": [ + { + "name": "locationName", + "in": "path", + "required": true, + "type": "string", + "description": "The region for which to retrieve Batch service supported SKUs." + }, + { + "name": "maxresults", + "in": "query", + "required": false, + "type": "integer", + "format": "int32", + "description": "The maximum number of items to return in the response." + }, + { + "name": "$filter", + "in": "query", + "required": false, + "type": "string", + "description": "OData filter expression. Valid properties for filtering are \"familyName\"." + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "The operation was successful. The response contains the Batch service supported Cloud Service VM sizes for the subscription in the specified location.", + "schema": { + "$ref": "#/definitions/SupportedSkusResult" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/CloudError" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, "/providers/Microsoft.Batch/operations": { "get": { "tags": [ @@ -1014,8 +1195,12 @@ "operationId": "Location_CheckNameAvailability", "description": "Checks whether the Batch account name is available in the specified region.", "x-ms-examples": { - "LocationCheckNameAvailability_Available": { "$ref": "./examples/LocationCheckNameAvailability_Available.json" }, - "LocationCheckNameAvailability_AlreadyExists": { "$ref": "./examples/LocationCheckNameAvailability_AlreadyExists.json" } + "LocationCheckNameAvailability_Available": { + "$ref": "./examples/LocationCheckNameAvailability_Available.json" + }, + "LocationCheckNameAvailability_AlreadyExists": { + "$ref": "./examples/LocationCheckNameAvailability_AlreadyExists.json" + } }, "parameters": [ { @@ -1065,8 +1250,12 @@ "operationId": "Certificate_ListByBatchAccount", "description": "Lists all of the certificates in the specified account.", "x-ms-examples": { - "ListCertificates": { "$ref": "./examples/CertificateList.json" }, - "ListCertificates - Filter and Select": { "$ref": "./examples/CertificateListWithFilter.json" } + "ListCertificates": { + "$ref": "./examples/CertificateList.json" + }, + "ListCertificates - Filter and Select": { + "$ref": "./examples/CertificateListWithFilter.json" + } }, "parameters": [ { @@ -1131,9 +1320,15 @@ "operationId": "Certificate_Create", "description": "Creates a new certificate inside the specified account.", "x-ms-examples": { - "CreateCertificate - Minimal Pfx": { "$ref": "./examples/CertificateCreate_Minimal.json" }, - "CreateCertificate - Minimal Cer": { "$ref": "./examples/CertificateCreate_MinimalCer.json" }, - "CreateCertificate - Full": { "$ref": "./examples/CertificateCreate_Full.json" } + "CreateCertificate - Minimal Pfx": { + "$ref": "./examples/CertificateCreate_Minimal.json" + }, + "CreateCertificate - Minimal Cer": { + "$ref": "./examples/CertificateCreate_MinimalCer.json" + }, + "CreateCertificate - Full": { + "$ref": "./examples/CertificateCreate_Full.json" + } }, "parameters": [ { @@ -1194,8 +1389,7 @@ "$ref": "#/definitions/CloudError" } } - }, - "x-ms-long-running-operation": true + } }, "patch": { "tags": [ @@ -1204,7 +1398,9 @@ "operationId": "Certificate_Update", "description": "Updates the properties of an existing certificate.", "x-ms-examples": { - "UpdateCertificate": { "$ref": "./examples/CertificateUpdate.json" } + "UpdateCertificate": { + "$ref": "./examples/CertificateUpdate.json" + } }, "parameters": [ { @@ -1267,7 +1463,9 @@ "operationId": "Certificate_Delete", "description": "Deletes the specified certificate.", "x-ms-examples": { - "CertificateDelete": { "$ref": "./examples/CertificateDelete.json" } + "CertificateDelete": { + "$ref": "./examples/CertificateDelete.json" + } }, "parameters": [ { @@ -1290,9 +1488,6 @@ "200": { "description": "The operation was successful." }, - "204": { - "description": "The operation was successful." - }, "202": { "description": "The operation will be completed asynchronously.", "headers": { @@ -1307,6 +1502,9 @@ } } }, + "204": { + "description": "The operation was successful." + }, "default": { "description": "Error response describing why the operation failed.", "schema": { @@ -1314,7 +1512,10 @@ } } }, - "x-ms-long-running-operation": true + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + } }, "get": { "tags": [ @@ -1323,8 +1524,12 @@ "operationId": "Certificate_Get", "description": "Gets information about the specified certificate.", "x-ms-examples": { - "Get Certificate": { "$ref": "./examples/CertificateGet.json" }, - "Get Certificate with Deletion Error": { "$ref": "./examples/CertificateGetWithDeletionError.json" } + "Get Certificate": { + "$ref": "./examples/CertificateGet.json" + }, + "Get Certificate with Deletion Error": { + "$ref": "./examples/CertificateGetWithDeletionError.json" + } }, "parameters": [ { @@ -1374,7 +1579,9 @@ "summary": "Cancels a failed deletion of a certificate from the specified account.", "description": "If you try to delete a certificate that is being used by a pool or compute node, the status of the certificate changes to deleteFailed. If you decide that you want to continue using the certificate, you can use this operation to set the status of the certificate back to active. If you intend to delete the certificate, you do not need to run this operation after the deletion failed. You must make sure that the certificate is not being used by any resources, and then you can try again to delete the certificate.", "x-ms-examples": { - "CertificateCancelDeletion": { "$ref": "./examples/CertificateCancelDeletion.json" } + "CertificateCancelDeletion": { + "$ref": "./examples/CertificateCancelDeletion.json" + } }, "parameters": [ { @@ -1415,24 +1622,31 @@ } } }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/pools": { + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/privateLinkResources": { "get": { "tags": [ - "Pool" + "PrivateLinkResource" ], - "operationId": "Pool_ListByBatchAccount", - "description": "Lists all of the pools in the specified account.", + "operationId": "PrivateLinkResource_ListByBatchAccount", + "description": "Lists all of the private link resources in the specified account.", "x-ms-examples": { - "ListPool": { "$ref": "./examples/PoolList.json" }, - "ListPoolWithFilter": { "$ref": "./examples/PoolListWithFilter.json" } + "ListPrivateLinkResource": { + "$ref": "./examples/PrivateLinkResourcesList.json" + } }, "parameters": [ + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, { "$ref": "#/parameters/ResourceGroupNameParameter" }, { "$ref": "#/parameters/AccountNameParameter" }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, { "name": "maxresults", "in": "query", @@ -1440,33 +1654,13 @@ "type": "integer", "format": "int32", "description": "The maximum number of items to return in the response." - }, - { - "name": "$select", - "in": "query", - "required": false, - "type": "string", - "description": "Comma separated list of properties that should be returned. e.g. \"properties/provisioningState\". Only top level properties under properties/ are valid for selection." - }, - { - "name": "$filter", - "in": "query", - "required": false, - "type": "string", - "description": "OData filter expression. Valid properties for filtering are:\n\n name\n properties/allocationState\n properties/allocationStateTransitionTime\n properties/creationTime\n properties/provisioningState\n properties/provisioningStateTransitionTime\n properties/lastModified\n properties/vmSize\n properties/interNodeCommunication\n properties/scaleSettings/autoScale\n properties/scaleSettings/fixedScale" - }, - { - "$ref": "#/parameters/ApiVersionParameter" - }, - { - "$ref": "#/parameters/SubscriptionIdParameter" } ], "responses": { "200": { - "description": "The operation was successful. The response contains a list of certificates associated with the account.", + "description": "The operation was successful. The response contains a list of private link resources associated with the account.", "schema": { - "$ref": "#/definitions/ListPoolsResult" + "$ref": "#/definitions/ListPrivateLinkResourcesResult" } }, "default": { @@ -1481,71 +1675,40 @@ } } }, - "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/pools/{poolName}": { - "put": { + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/privateLinkResources/{privateLinkResourceName}": { + "get": { "tags": [ - "Pool" + "PrivateLinkResource" ], - "operationId": "Pool_Create", - "description": "Creates a new pool inside the specified account.", + "operationId": "PrivateLinkResource_Get", + "description": "Gets information about the specified private link resource.", "x-ms-examples": { - "CreatePool - Minimal CloudServiceConfiguration": { "$ref": "./examples/PoolCreate_MinimalCloudServiceConfiguration.json" }, - "CreatePool - Minimal VirtualMachineConfiguration": { "$ref": "./examples/PoolCreate_MinimalVirtualMachineConfiguration.json" }, - "CreatePool - Full Example": { "$ref": "./examples/PoolCreate_FullExample.json" }, - "CreatePool - Custom Image": { "$ref": "./examples/PoolCreate_CustomImage.json" }, - "CreatePool - Full VirtualMachineConfiguration": { "$ref": "./examples/PoolCreate_VirtualMachineConfiguration.json" } + "GetPrivateLinkResource": { + "$ref": "./examples/PrivateLinkResourceGet.json" + } }, "parameters": [ { - "$ref": "#/parameters/ResourceGroupNameParameter" - }, - { - "$ref": "#/parameters/AccountNameParameter" - }, - { - "$ref": "#/parameters/PoolNameParameter" + "$ref": "#/parameters/SubscriptionIdParameter" }, { - "name": "parameters", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/Pool" - }, - "description": "Additional parameters for pool creation." + "$ref": "#/parameters/ResourceGroupNameParameter" }, { - "name": "If-Match", - "in": "header", - "required": false, - "type": "string", - "description": "The entity state (ETag) version of the pool to update. A value of \"*\" can be used to apply the operation only if the pool already exists. If omitted, this operation will always be applied." + "$ref": "#/parameters/AccountNameParameter" }, { - "name": "If-None-Match", - "in": "header", - "required": false, - "type": "string", - "description": "Set to '*' to allow a new pool to be created, but to prevent updating an existing pool. Other values will be ignored." + "$ref": "#/parameters/PrivateLinkResourceNameParameter" }, { "$ref": "#/parameters/ApiVersionParameter" - }, - { - "$ref": "#/parameters/SubscriptionIdParameter" } ], "responses": { "200": { - "description": "The operation was successful. The response contains the pool entity.", + "description": "The operation was successful. The response contains the private link resource.", "schema": { - "$ref": "#/definitions/Pool" - }, - "headers": { - "ETag": { - "description": "The ETag HTTP response header. This is an opaque string. You can use it to detect whether the resource has changed between requests. In particular, you can pass the ETag to one of the If-Match or If-None-Match headers.", - "type": "string" - } + "$ref": "#/definitions/PrivateLinkResource" } }, "default": { @@ -1554,39 +1717,392 @@ "$ref": "#/definitions/CloudError" } } - }, - "x-ms-long-running-operation": true - }, - "patch": { + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/privateEndpointConnections": { + "get": { "tags": [ - "Pool" + "PrivateEndpointConnection" ], - "operationId": "Pool_Update", - "description": "Updates the properties of an existing pool.", + "operationId": "PrivateEndpointConnection_ListByBatchAccount", + "description": "Lists all of the private endpoint connections in the specified account.", "x-ms-examples": { - "UpdatePool - Resize Pool": { "$ref": "./examples/PoolUpdate_ResizePool.json" }, - "UpdatePool - Enable Autoscale": { "$ref": "./examples/PoolUpdate_EnableAutoScale.json" }, - "UpdatePool - Remove Start Task": { "$ref": "./examples/PoolUpdate_RemoveStartTask.json" }, - "UpdatePool - Other Properties": { "$ref": "./examples/PoolUpdate_OtherProperties.json" } + "ListPrivateEndpointConnections": { + "$ref": "./examples/PrivateEndpointConnectionsList.json" + } }, "parameters": [ { - "$ref": "#/parameters/ResourceGroupNameParameter" + "$ref": "#/parameters/SubscriptionIdParameter" }, { - "$ref": "#/parameters/AccountNameParameter" + "$ref": "#/parameters/ResourceGroupNameParameter" }, { - "$ref": "#/parameters/PoolNameParameter" + "$ref": "#/parameters/AccountNameParameter" }, { - "name": "parameters", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/Pool" - }, - "description": "Pool properties that should be updated. Properties that are supplied will be updated, any property not supplied will be unchanged." + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "name": "maxresults", + "in": "query", + "required": false, + "type": "integer", + "format": "int32", + "description": "The maximum number of items to return in the response." + } + ], + "responses": { + "200": { + "description": "The operation was successful. The response contains a list of private link resources associated with the account.", + "schema": { + "$ref": "#/definitions/ListPrivateEndpointConnectionsResult" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/CloudError" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/privateEndpointConnections/{privateEndpointConnectionName}": { + "get": { + "tags": [ + "PrivateEndpointConnection" + ], + "operationId": "PrivateEndpointConnection_Get", + "description": "Gets information about the specified private endpoint connection.", + "x-ms-examples": { + "GetPrivateEndpointConnection": { + "$ref": "./examples/PrivateEndpointConnectionGet.json" + } + }, + "parameters": [ + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/AccountNameParameter" + }, + { + "$ref": "#/parameters/PrivateEndpointConnectionNameParameter" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + } + ], + "responses": { + "200": { + "description": "The operation was successful. The response contains the private endpoint connection.", + "schema": { + "$ref": "#/definitions/PrivateEndpointConnection" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/CloudError" + } + } + } + }, + "patch": { + "tags": [ + "PrivateEndpointConnection" + ], + "operationId": "PrivateEndpointConnection_Update", + "description": "Updates the properties of an existing private endpoint connection.", + "x-ms-examples": { + "UpdatePrivateEndpointConnection": { + "$ref": "./examples/PrivateEndpointConnectionUpdate.json" + } + }, + "parameters": [ + { + "$ref": "#/parameters/SubscriptionIdParameter" + }, + { + "$ref": "#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/AccountNameParameter" + }, + { + "$ref": "#/parameters/PrivateEndpointConnectionNameParameter" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "name": "parameters", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/PrivateEndpointConnection" + }, + "description": "PrivateEndpointConnection properties that should be updated. Properties that are supplied will be updated, any property not supplied will be unchanged." + }, + { + "name": "If-Match", + "in": "header", + "required": false, + "type": "string", + "description": "The state (ETag) version of the private endpoint connection to update. This value can be omitted or set to \"*\" to apply the operation unconditionally." + } + ], + "responses": { + "200": { + "description": "The operation was successful. The response contains the PrivateEndpointConnection.", + "schema": { + "$ref": "#/definitions/PrivateEndpointConnection" + } + }, + "202": { + "description": "The operation was accepted and will be performed in the background.", + "headers": { + "Location": { + "description": "The URL of the resource used to check the status of the asynchronous operation.", + "type": "string" + }, + "Retry-After": { + "description": "Suggested delay to check the status of the asynchronous operation. The value is an integer that represents the seconds.", + "type": "integer", + "format": "int32" + } + } + }, + "204": { + "description": "The operation was successful." + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/CloudError" + } + } + }, + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "azure-async-operation" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/pools": { + "get": { + "tags": [ + "Pool" + ], + "operationId": "Pool_ListByBatchAccount", + "description": "Lists all of the pools in the specified account.", + "x-ms-examples": { + "ListPool": { + "$ref": "./examples/PoolList.json" + }, + "ListPoolWithFilter": { + "$ref": "./examples/PoolListWithFilter.json" + } + }, + "parameters": [ + { + "$ref": "#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/AccountNameParameter" + }, + { + "name": "maxresults", + "in": "query", + "required": false, + "type": "integer", + "format": "int32", + "description": "The maximum number of items to return in the response." + }, + { + "name": "$select", + "in": "query", + "required": false, + "type": "string", + "description": "Comma separated list of properties that should be returned. e.g. \"properties/provisioningState\". Only top level properties under properties/ are valid for selection." + }, + { + "name": "$filter", + "in": "query", + "required": false, + "type": "string", + "description": "OData filter expression. Valid properties for filtering are:\n\n name\n properties/allocationState\n properties/allocationStateTransitionTime\n properties/creationTime\n properties/provisioningState\n properties/provisioningStateTransitionTime\n properties/lastModified\n properties/vmSize\n properties/interNodeCommunication\n properties/scaleSettings/autoScale\n properties/scaleSettings/fixedScale" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "The operation was successful. The response contains a list of certificates associated with the account.", + "schema": { + "$ref": "#/definitions/ListPoolsResult" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/CloudError" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/pools/{poolName}": { + "put": { + "tags": [ + "Pool" + ], + "operationId": "Pool_Create", + "description": "Creates a new pool inside the specified account.", + "x-ms-examples": { + "CreatePool - Minimal CloudServiceConfiguration": { + "$ref": "./examples/PoolCreate_MinimalCloudServiceConfiguration.json" + }, + "CreatePool - Minimal VirtualMachineConfiguration": { + "$ref": "./examples/PoolCreate_MinimalVirtualMachineConfiguration.json" + }, + "CreatePool - Full CloudServiceConfiguration": { + "$ref": "./examples/PoolCreate_CloudServiceConfiguration.json" + }, + "CreatePool - Custom Image": { + "$ref": "./examples/PoolCreate_SharedImageGallery.json" + }, + "CreatePool - Public IPs": { + "$ref": "./examples/PoolCreate_PublicIPs.json" + }, + "CreatePool - Full VirtualMachineConfiguration": { + "$ref": "./examples/PoolCreate_VirtualMachineConfiguration.json" + }, + "CreatePool - No public IP": { + "$ref": "./examples/PoolCreate_NoPublicIPAddresses.json" + }, + "CreatePool - UserAssignedIdentities": { + "$ref": "./examples/PoolCreate_UserAssignedIdentities.json" + }, + "CreatePool - VirtualMachineConfiguration Extensions": { + "$ref": "./examples/PoolCreate_VirtualMachineConfiguration_Extensions.json" + } + }, + "parameters": [ + { + "$ref": "#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/AccountNameParameter" + }, + { + "$ref": "#/parameters/PoolNameParameter" + }, + { + "name": "parameters", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/Pool" + }, + "description": "Additional parameters for pool creation." + }, + { + "name": "If-Match", + "in": "header", + "required": false, + "type": "string", + "description": "The entity state (ETag) version of the pool to update. A value of \"*\" can be used to apply the operation only if the pool already exists. If omitted, this operation will always be applied." + }, + { + "name": "If-None-Match", + "in": "header", + "required": false, + "type": "string", + "description": "Set to '*' to allow a new pool to be created, but to prevent updating an existing pool. Other values will be ignored." + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "The operation was successful. The response contains the pool entity.", + "schema": { + "$ref": "#/definitions/Pool" + }, + "headers": { + "ETag": { + "description": "The ETag HTTP response header. This is an opaque string. You can use it to detect whether the resource has changed between requests. In particular, you can pass the ETag to one of the If-Match or If-None-Match headers.", + "type": "string" + } + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/CloudError" + } + } + } + }, + "patch": { + "tags": [ + "Pool" + ], + "operationId": "Pool_Update", + "description": "Updates the properties of an existing pool.", + "x-ms-examples": { + "UpdatePool - Resize Pool": { + "$ref": "./examples/PoolUpdate_ResizePool.json" + }, + "UpdatePool - Enable Autoscale": { + "$ref": "./examples/PoolUpdate_EnableAutoScale.json" + }, + "UpdatePool - Remove Start Task": { + "$ref": "./examples/PoolUpdate_RemoveStartTask.json" + }, + "UpdatePool - Other Properties": { + "$ref": "./examples/PoolUpdate_OtherProperties.json" + } + }, + "parameters": [ + { + "$ref": "#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/AccountNameParameter" + }, + { + "$ref": "#/parameters/PoolNameParameter" + }, + { + "name": "parameters", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/Pool" + }, + "description": "Pool properties that should be updated. Properties that are supplied will be updated, any property not supplied will be unchanged." }, { "name": "If-Match", @@ -1630,7 +2146,9 @@ "operationId": "Pool_Delete", "description": "Deletes the specified pool.", "x-ms-examples": { - "DeletePool": { "$ref": "./examples/PoolDelete.json" } + "DeletePool": { + "$ref": "./examples/PoolDelete.json" + } }, "parameters": [ { @@ -1653,9 +2171,6 @@ "200": { "description": "The operation was successful." }, - "204": { - "description": "The operation was successful." - }, "202": { "description": "The operation will be completed asynchronously.", "headers": { @@ -1670,6 +2185,9 @@ } } }, + "204": { + "description": "The operation was successful." + }, "default": { "description": "Error response describing why the operation failed.", "schema": { @@ -1677,7 +2195,10 @@ } } }, - "x-ms-long-running-operation": true + "x-ms-long-running-operation": true, + "x-ms-long-running-operation-options": { + "final-state-via": "location" + } }, "get": { "tags": [ @@ -1686,7 +2207,12 @@ "operationId": "Pool_Get", "description": "Gets information about the specified pool.", "x-ms-examples": { - "GetPool": { "$ref": "./examples/PoolGet.json" } + "GetPool": { + "$ref": "./examples/PoolGet.json" + }, + "GetPool - VirtualMachineConfiguration Extensions": { + "$ref": "./examples/PoolGet_VirtualMachineConfiguration_Extensions.json" + } }, "parameters": [ { @@ -1735,7 +2261,9 @@ "operationId": "Pool_DisableAutoScale", "description": "Disables automatic scaling for a pool.", "x-ms-examples": { - "Disable AutoScale": { "$ref": "./examples/PoolDisableAutoScale.json" } + "Disable AutoScale": { + "$ref": "./examples/PoolDisableAutoScale.json" + } }, "parameters": [ { @@ -1785,7 +2313,9 @@ "summary": "Stops an ongoing resize operation on the pool.", "description": "This does not restore the pool to its previous state before the resize operation: it only stops any further changes being made, and the pool maintains its current state. After stopping, the pool stabilizes at the number of nodes it was at when the stop operation was done. During the stop operation, the pool allocation state changes first to stopping and then to steady. A resize operation need not be an explicit resize pool request; this API can also be used to halt the initial sizing of the pool when it is created.", "x-ms-examples": { - "StopPoolResize": { "$ref": "./examples/PoolStopResize.json" } + "StopPoolResize": { + "$ref": "./examples/PoolStopResize.json" + } }, "parameters": [ { @@ -1825,14 +2355,96 @@ } } } + }, + "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Batch/batchAccounts/{accountName}/outboundNetworkDependenciesEndpoints": { + "get": { + "tags": [ + "BatchAccount" + ], + "operationId": "BatchAccount_ListOutboundNetworkDependenciesEndpoints", + "description": "Lists the endpoints that a Batch Compute Node under this Batch Account may call as part of Batch service administration. If you are deploying a Pool inside of a virtual network that you specify, you must make sure your network allows outbound access to these endpoints. Failure to allow access to these endpoints may cause Batch to mark the affected nodes as unusable. For more information about creating a pool inside of a virtual network, see https://docs.microsoft.com/en-us/azure/batch/batch-virtual-network.", + "x-ms-examples": { + "ListOutboundNetworkDependencies": { + "$ref": "./examples/BatchAccountListOutboundNetworkDependenciesEndpoints.json" + } + }, + "parameters": [ + { + "$ref": "#/parameters/ResourceGroupNameParameter" + }, + { + "$ref": "#/parameters/AccountNameParameter" + }, + { + "$ref": "#/parameters/ApiVersionParameter" + }, + { + "$ref": "#/parameters/SubscriptionIdParameter" + } + ], + "responses": { + "200": { + "description": "The operation was successful. The response contains a list of outbound network dependencies.", + "schema": { + "$ref": "#/definitions/OutboundEnvironmentEndpointCollection" + } + }, + "default": { + "description": "Error response describing why the operation failed.", + "schema": { + "$ref": "#/definitions/CloudError" + } + } + }, + "x-ms-pageable": { + "nextLinkName": "nextLink" + } + } } }, "definitions": { "AutoStorageBaseProperties": { + "type": "object", "properties": { "storageAccountId": { "type": "string", + "format": "arm-id", + "x-ms-arm-id-details": { + "allowedResources": [ + { + "type": "Microsoft.Storage/storageAccounts" + } + ] + }, "description": "The resource ID of the storage account to be used for auto-storage account." + }, + "authenticationMode": { + "type": "string", + "description": "The authentication mode which the Batch service will use to manage the auto-storage account.", + "default": "StorageKeys", + "enum": [ + "StorageKeys", + "BatchAccountManagedIdentity" + ], + "x-ms-enum": { + "name": "AutoStorageAuthenticationMode", + "modelAsString": false, + "values": [ + { + "value": "StorageKeys", + "description": "The Batch service will authenticate requests to auto-storage using storage account keys." + }, + { + "value": "BatchAccountManagedIdentity", + "description": "The Batch service will authenticate requests to auto-storage using the managed identity assigned to the Batch account." + } + ] + } + }, + "nodeIdentityReference": { + "title": "The reference to the user assigned identity which compute nodes will use to access auto-storage.", + "description": "The identity referenced here must be assigned to pools which have compute nodes that need access to auto-storage.", + "$ref": "#/definitions/ComputeNodeIdentityReference" } }, "required": [ @@ -1841,15 +2453,30 @@ "description": "The properties related to the auto-storage account." }, "BatchAccountUpdateProperties": { + "type": "object", "properties": { "autoStorage": { "$ref": "#/definitions/AutoStorageBaseProperties", "description": "The properties related to the auto-storage account." + }, + "encryption": { + "title": "The encryption configuration for the Batch account.", + "description": "Configures how customer data is encrypted inside the Batch account. By default, accounts are encrypted using a Microsoft managed key. For additional control, a customer-managed key can be used instead.", + "$ref": "#/definitions/EncryptionProperties" + }, + "allowedAuthenticationModes": { + "x-nullable": true, + "type": "array", + "items": { + "$ref": "#/definitions/AuthenticationMode" + }, + "description": "List of allowed authentication modes for the Batch account that can be used to authenticate with the data plane. This does not affect authentication with the control plane." } }, "description": "The properties of a Batch account." }, "BatchAccountCreateProperties": { + "type": "object", "properties": { "autoStorage": { "$ref": "#/definitions/AutoStorageBaseProperties", @@ -1863,11 +2490,57 @@ "keyVaultReference": { "$ref": "#/definitions/KeyVaultReference", "description": "A reference to the Azure key vault associated with the Batch account." + }, + "publicNetworkAccess": { + "title": "The network access type for accessing Azure Batch account.", + "description": "If not specified, the default value is 'enabled'.", + "$ref": "#/definitions/PublicNetworkAccessType" + }, + "encryption": { + "title": "The encryption configuration for the Batch account.", + "description": "Configures how customer data is encrypted inside the Batch account. By default, accounts are encrypted using a Microsoft managed key. For additional control, a customer-managed key can be used instead.", + "$ref": "#/definitions/EncryptionProperties" + }, + "allowedAuthenticationModes": { + "x-nullable": true, + "type": "array", + "items": { + "$ref": "#/definitions/AuthenticationMode" + }, + "description": "List of allowed authentication modes for the Batch account that can be used to authenticate with the data plane. This does not affect authentication with the control plane." } }, "description": "The properties of a Batch account." }, + "AuthenticationMode": { + "type": "string", + "description": "The authentication mode for the Batch account.", + "enum": [ + "SharedKey", + "AAD", + "TaskAuthenticationToken" + ], + "x-ms-enum": { + "name": "AuthenticationMode", + "modelAsString": false, + "values": [ + { + "value": "SharedKey", + "description": "The authentication mode using shared keys." + }, + { + "value": "AAD", + "description": "The authentication mode using Azure Active Directory." + }, + { + "value": "TaskAuthenticationToken", + "description": "The authentication mode using task authentication tokens." + } + ] + } + }, "BatchAccountCreateParameters": { + "type": "object", "properties": { "location": { "type": "string", @@ -1884,6 +2557,10 @@ "x-ms-client-flatten": true, "$ref": "#/definitions/BatchAccountCreateProperties", "description": "The properties of the Batch account." + }, + "identity": { + "$ref": "#/definitions/BatchAccountIdentity", + "description": "The identity of the Batch account." } }, "required": [ @@ -1892,9 +2569,18 @@ "description": "Parameters supplied to the Create operation." }, "KeyVaultReference": { + "type": "object", "properties": { "id": { "type": "string", + "format": "arm-id", + "x-ms-arm-id-details": { + "allowedResources": [ + { + "type": "Microsoft.KeyVault/vaults" + } + ] + }, "description": "The resource ID of the Azure key vault associated with the Batch account." }, "url": { @@ -1909,6 +2595,7 @@ "description": "Identifies the Azure key vault associated with a Batch account." }, "AutoStorageProperties": { + "type": "object", "properties": { "lastKeySync": { "type": "string", @@ -1926,7 +2613,80 @@ ], "description": "Contains information about the auto-storage account associated with a Batch account." }, + "VirtualMachineFamilyCoreQuota": { + "type": "object", + "properties": { + "name": { + "readOnly": true, + "x-nullable": false, + "type": "string", + "description": "The Virtual Machine family name." + }, + "coreQuota": { + "readOnly": true, + "x-nullable": false, + "type": "integer", + "format": "int32", + "description": "The core quota for the VM family for the Batch account." + } + }, + "description": "A VM Family and its associated core quota for the Batch account." + }, + "BatchAccountIdentity": { + "type": "object", + "properties": { + "principalId": { + "readOnly": true, + "type": "string", + "description": "The principal id of the Batch account. This property will only be provided for a system assigned identity." + }, + "tenantId": { + "readOnly": true, + "type": "string", + "description": "The tenant id associated with the Batch account. This property will only be provided for a system assigned identity." + }, + "type": { + "type": "string", + "description": "The type of identity used for the Batch account.", + "enum": [ + "SystemAssigned", + "UserAssigned", + "None" + ], + "x-ms-enum": { + "name": "ResourceIdentityType", + "modelAsString": false, + "values": [ + { + "value": "SystemAssigned", + "description": "Batch account has a system assigned identity with it." + }, + { + "value": "UserAssigned", + "description": "Batch account has user assigned identities with it." + }, + { + "value": "None", + "description": "Batch account has no identity associated with it. Setting `None` in update account will remove existing identities." + } + ] + } + }, + "userAssignedIdentities": { + "type": "object", + "description": "The list of user identities associated with the Batch account.", + "additionalProperties": { + "$ref": "#/definitions/UserAssignedIdentities" + } + } + }, + "description": "The identity of the Batch account, if configured. This is used when the user specifies 'Microsoft.KeyVault' as their Batch account encryption configuration or when `ManagedIdentity` is selected as the auto-storage authentication mode.", + "required": [ + "type" + ] + }, "BatchAccountProperties": { + "type": "object", "properties": { "accountEndpoint": { "type": "string", @@ -1988,48 +2748,105 @@ "readOnly": true, "$ref": "#/definitions/KeyVaultReference" }, + "publicNetworkAccess": { + "readOnly": true, + "x-nullable": true, + "title": "The network interface type for accessing Azure Batch service and Batch account operations.", + "description": "If not specified, the default value is 'enabled'.", + "$ref": "#/definitions/PublicNetworkAccessType" + }, + "privateEndpointConnections": { + "readOnly": true, + "x-nullable": true, + "type": "array", + "items": { + "$ref": "#/definitions/PrivateEndpointConnection" + }, + "description": "List of private endpoint connections associated with the Batch account" + }, "autoStorage": { "title": "The properties and status of any auto-storage account associated with the Batch account.", "readOnly": true, "$ref": "#/definitions/AutoStorageProperties" }, + "encryption": { + "title": "The encryption configuration for the Batch account.", + "description": "Configures how customer data is encrypted inside the Batch account. By default, accounts are encrypted using a Microsoft managed key. For additional control, a customer-managed key can be used instead.", + "readOnly": true, + "$ref": "#/definitions/EncryptionProperties" + }, "dedicatedCoreQuota": { "readOnly": true, - "x-nullable": false, + "x-nullable": true, "type": "integer", "format": "int32", - "title": "The dedicated core quota for this Batch account." + "title": "The dedicated core quota for the Batch account.", + "description": "For accounts with PoolAllocationMode set to UserSubscription, quota is managed on the subscription so this value is not returned." }, "lowPriorityCoreQuota": { "readOnly": true, - "x-nullable": false, + "x-nullable": true, "type": "integer", "format": "int32", - "title": "The low-priority core quota for this Batch account." + "title": "The low-priority core quota for the Batch account.", + "description": "For accounts with PoolAllocationMode set to UserSubscription, quota is managed on the subscription so this value is not returned." + }, + "dedicatedCoreQuotaPerVMFamily": { + "readOnly": true, + "x-nullable": true, + "type": "array", + "items": { + "$ref": "#/definitions/VirtualMachineFamilyCoreQuota" + }, + "x-ms-identifiers": [ + "name" + ], + "description": "A list of the dedicated core quota per Virtual Machine family for the Batch account. For accounts with PoolAllocationMode set to UserSubscription, quota is managed on the subscription so this value is not returned." + }, + "dedicatedCoreQuotaPerVMFamilyEnforced": { + "readOnly": true, + "x-nullable": false, + "type": "boolean", + "title": "A value indicating whether core quotas per Virtual Machine family are enforced for this account", + "description": "Batch is transitioning its core quota system for dedicated cores to be enforced per Virtual Machine family. During this transitional phase, the dedicated core quota per Virtual Machine family may not yet be enforced. If this flag is false, dedicated core quota is enforced via the old dedicatedCoreQuota property on the account and does not consider Virtual Machine family. If this flag is true, dedicated core quota is enforced via the dedicatedCoreQuotaPerVMFamily property on the account, and the old dedicatedCoreQuota does not apply." }, "poolQuota": { "readOnly": true, "x-nullable": false, "type": "integer", "format": "int32", - "title": "The pool quota for this Batch account." + "title": "The pool quota for the Batch account." }, "activeJobAndJobScheduleQuota": { "readOnly": true, "x-nullable": false, "type": "integer", "format": "int32", - "title": "The active job and job schedule quota for this Batch account." + "title": "The active job and job schedule quota for the Batch account." + }, + "allowedAuthenticationModes": { + "readOnly": true, + "x-nullable": false, + "type": "array", + "items": { + "$ref": "#/definitions/AuthenticationMode" + }, + "description": "List of allowed authentication modes for the Batch account that can be used to authenticate with the data plane. This does not affect authentication with the control plane." } }, "description": "Account specific properties." }, "BatchAccount": { + "type": "object", "properties": { "properties": { "x-ms-client-flatten": true, "$ref": "#/definitions/BatchAccountProperties", "description": "The properties associated with the account." + }, + "identity": { + "$ref": "#/definitions/BatchAccountIdentity", + "description": "The identity of the Batch account." } }, "allOf": [ @@ -2040,6 +2857,7 @@ "description": "Contains information about an Azure Batch account." }, "BatchAccountUpdateParameters": { + "type": "object", "properties": { "tags": { "type": "object", @@ -2052,11 +2870,16 @@ "x-ms-client-flatten": true, "$ref": "#/definitions/BatchAccountUpdateProperties", "description": "The properties of the account." + }, + "identity": { + "$ref": "#/definitions/BatchAccountIdentity", + "description": "The identity of the Batch account." } }, "description": "Parameters for updating an Azure Batch account." }, "BatchAccountListResult": { + "type": "object", "properties": { "value": { "type": "array", @@ -2072,7 +2895,50 @@ }, "description": "Values returned by the List operation." }, + "EncryptionProperties": { + "type": "object", + "properties": { + "keySource": { + "type": "string", + "description": "Type of the key source.", + "enum": [ + "Microsoft.Batch", + "Microsoft.KeyVault" + ], + "x-ms-enum": { + "name": "KeySource", + "modelAsString": false, + "values": [ + { + "value": "Microsoft.Batch", + "description": "Batch creates and manages the encryption keys used to protect the account data." + }, + { + "value": "Microsoft.KeyVault", + "description": "The encryption keys used to protect the account data are stored in an external key vault. If this is set then the Batch Account identity must be set to `SystemAssigned` and a valid Key Identifier must also be supplied under the keyVaultProperties." + } + ] + } + }, + "keyVaultProperties": { + "$ref": "#/definitions/KeyVaultProperties", + "description": "Additional details when using Microsoft.KeyVault" + } + }, + "description": "Configures how customer data is encrypted inside the Batch account. By default, accounts are encrypted using a Microsoft managed key. For additional control, a customer-managed key can be used instead." + }, + "KeyVaultProperties": { + "type": "object", + "properties": { + "keyIdentifier": { + "type": "string", + "description": "Full path to the versioned secret. Example https://mykeyvault.vault.azure.net/keys/testkey/6e34a81fef704045975661e297a4c053. To be usable the following prerequisites must be met:\n\n The Batch Account has a System Assigned identity\n The account identity has been granted Key/Get, Key/Unwrap and Key/Wrap permissions\n The KeyVault has soft-delete and purge protection enabled" + } + }, + "description": "KeyVault configuration when using an encryption KeySource of Microsoft.KeyVault." + }, "BatchAccountRegenerateKeyParameters": { + "type": "object", "properties": { "keyName": { "type": "string", @@ -2103,6 +2969,7 @@ "description": "Parameters supplied to the RegenerateKey operation." }, "BatchAccountKeys": { + "type": "object", "properties": { "accountName": { "type": "string", @@ -2123,6 +2990,7 @@ "description": "A set of Azure Batch account keys." }, "ActivateApplicationPackageParameters": { + "type": "object", "properties": { "format": { "type": "string", @@ -2135,6 +3003,7 @@ "description": "Parameters for an activating an application package." }, "Application": { + "type": "object", "properties": { "properties": { "x-ms-client-flatten": true, @@ -2150,6 +3019,7 @@ "description": "Contains information about an application in a Batch account." }, "ApplicationProperties": { + "type": "object", "properties": { "displayName": { "type": "string", @@ -2167,6 +3037,7 @@ "description": "The properties associated with the Application." }, "ApplicationPackage": { + "type": "object", "properties": { "properties": { "x-ms-client-flatten": true, @@ -2182,6 +3053,7 @@ "description": "An application package which represents a particular version of an application." }, "ApplicationPackageProperties": { + "type": "object", "properties": { "state": { "type": "string", @@ -2232,6 +3104,7 @@ "description": "Properties of an application package" }, "ListApplicationsResult": { + "type": "object", "properties": { "value": { "type": "array", @@ -2248,6 +3121,7 @@ "description": "The result of performing list applications." }, "ListApplicationPackagesResult": { + "type": "object", "properties": { "value": { "type": "array", @@ -2264,6 +3138,7 @@ "description": "The result of performing list application packages." }, "BatchLocationQuota": { + "type": "object", "properties": { "accountQuota": { "type": "integer", @@ -2275,6 +3150,7 @@ "description": "Quotas associated with a Batch region for a particular subscription." }, "Resource": { + "type": "object", "properties": { "id": { "readOnly": true, @@ -2309,6 +3185,7 @@ "x-ms-azure-resource": true }, "ProxyResource": { + "type": "object", "properties": { "id": { "readOnly": true, @@ -2334,6 +3211,29 @@ "description": "A definition of an Azure resource.", "x-ms-azure-resource": true }, + "PublicNetworkAccessType": { + "type": "string", + "description": "The network access type for operating on the resources in the Batch account.", + "default": "Enabled", + "enum": [ + "Enabled", + "Disabled" + ], + "x-ms-enum": { + "name": "PublicNetworkAccessType", + "modelAsString": false, + "values": [ + { + "value": "Enabled", + "description": "Enables connectivity to Azure Batch through public DNS." + }, + { + "value": "Disabled", + "description": "Disables public connectivity and enables private connectivity to Azure Batch Service through private endpoint resource." + } + ] + } + }, "PoolAllocationMode": { "type": "string", "description": "The allocation mode for creating pools in the Batch account.", @@ -2357,15 +3257,17 @@ } }, "CertificateBaseProperties": { + "description": "Base certificate properties.", + "type": "object", "properties": { "thumbprintAlgorithm": { "type": "string", - "title": "The algorithm of the certificate thumbprint", + "title": "The algorithm of the certificate thumbprint.", "description": "This must match the first portion of the certificate name. Currently required to be 'SHA1'." }, "thumbprint": { "type": "string", - "title": "The thumbprint of the certificate", + "title": "The thumbprint of the certificate.", "description": "This must match the thumbprint from the name." }, "format": { @@ -2394,6 +3296,7 @@ } }, "CertificateProperties": { + "type": "object", "properties": { "provisioningState": { "type": "string", @@ -2485,6 +3388,7 @@ "description": "Certificate properties." }, "CertificateCreateOrUpdateProperties": { + "type": "object", "allOf": [ { "$ref": "#/definitions/CertificateBaseProperties" @@ -2499,13 +3403,16 @@ "password": { "type": "string", "title": "The password to access the certificate's private key.", - "description": "This is required if the certificate format is pfx and must be omitted if the certificate format is cer." + "description": "This must not be specified if the certificate format is Cer." } }, "description": "Certificate properties for create operations", - "required": [ "data" ] + "required": [ + "data" + ] }, "Certificate": { + "type": "object", "properties": { "properties": { "x-ms-client-flatten": true, @@ -2521,6 +3428,7 @@ "description": "Contains information about a certificate." }, "CertificateCreateOrUpdateParameters": { + "type": "object", "properties": { "properties": { "x-ms-client-flatten": true, @@ -2536,6 +3444,7 @@ "description": "Contains information about a certificate." }, "ListCertificatesResult": { + "type": "object", "properties": { "value": { "type": "array", @@ -2552,6 +3461,7 @@ "description": "Values returned by the List operation." }, "DeleteCertificateError": { + "type": "object", "properties": { "code": { "type": "string", @@ -2570,18 +3480,199 @@ "items": { "$ref": "#/definitions/DeleteCertificateError" }, + "x-ms-identifiers": [ + "message", + "target" + ], "description": "A list of additional details about the error." } }, - "required": [ "code", "message" ], + "required": [ + "code", + "message" + ], "description": "An error response from the Batch service." }, + "PrivateLinkResource": { + "type": "object", + "properties": { + "properties": { + "x-ms-client-flatten": true, + "$ref": "#/definitions/PrivateLinkResourceProperties", + "description": "The properties associated with the private link resource." + } + }, + "allOf": [ + { + "$ref": "#/definitions/ProxyResource" + } + ], + "description": "Contains information about a private link resource." + }, + "PrivateLinkResourceProperties": { + "type": "object", + "properties": { + "groupId": { + "type": "string", + "title": "The group id of the private link resource.", + "description": "The group id is used to establish the private link connection.", + "readOnly": true + }, + "requiredMembers": { + "type": "array", + "items": { + "type": "string" + }, + "title": "The list of required members that are used to establish the private link connection.", + "readOnly": true + }, + "requiredZoneNames": { + "type": "array", + "items": { + "type": "string" + }, + "title": "The list of required zone names for the private DNS resource name", + "readOnly": true + } + }, + "description": "Private link resource properties." + }, + "PrivateEndpointConnection": { + "type": "object", + "properties": { + "properties": { + "x-ms-client-flatten": true, + "$ref": "#/definitions/PrivateEndpointConnectionProperties", + "description": "The properties associated with the private endpoint connection." + } + }, + "allOf": [ + { + "$ref": "#/definitions/ProxyResource" + } + ], + "description": "Contains information about a private link resource." + }, + "PrivateEndpointConnectionProperties": { + "type": "object", + "properties": { + "provisioningState": { + "type": "string", + "readOnly": true, + "x-nullable": false, + "title": "The provisioning state of the private endpoint connection.", + "enum": [ + "Succeeded", + "Updating", + "Failed" + ], + "x-ms-enum": { + "name": "PrivateEndpointConnectionProvisioningState", + "modelAsString": false, + "values": [ + { + "value": "Succeeded", + "description": "The connection status is final and is ready for use if Status is Approved." + }, + { + "value": "Updating", + "description": "The user has requested that the connection status be updated, but the update operation has not yet completed. You may not reference the connection when connecting the Batch account." + }, + { + "value": "Failed", + "description": "The user requested that the connection be updated and it failed. You may retry the update operation." + } + ] + } + }, + "privateEndpoint": { + "$ref": "#/definitions/PrivateEndpoint", + "title": "The ARM resource identifier of the private endpoint." + }, + "privateLinkServiceConnectionState": { + "$ref": "#/definitions/PrivateLinkServiceConnectionState", + "title": "The private link service connection state of the private endpoint connection." + } + }, + "description": "Private endpoint connection properties." + }, + "PrivateEndpoint": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "The ARM resource identifier of the private endpoint. This is of the form /subscriptions/{subscription}/resourceGroups/{group}/providers/Microsoft.Network/privateEndpoints/{privateEndpoint}.", + "readOnly": true + } + }, + "description": "The private endpoint of the private endpoint connection." + }, + "PrivateLinkServiceConnectionState": { + "type": "object", + "properties": { + "status": { + "$ref": "#/definitions/PrivateLinkServiceConnectionStatus", + "title": "The status for the private endpoint connection of Batch account" + }, + "description": { + "type": "string", + "title": "Description of the private Connection state" + }, + "actionRequired": { + "type": "string", + "title": "Action required on the private connection state", + "readOnly": true + } + }, + "required": [ + "status" + ], + "description": "The private link service connection state of the private endpoint connection" + }, + "PrivateLinkServiceConnectionStatus": { + "type": "string", + "title": "The status of the Batch private endpoint connection", + "enum": [ + "Approved", + "Pending", + "Rejected", + "Disconnected" + ], + "x-ms-enum": { + "name": "PrivateLinkServiceConnectionStatus", + "modelAsString": false, + "values": [ + { + "value": "Approved", + "description": "The private endpoint connection is approved and can be used to access Batch account" + }, + { + "value": "Pending", + "description": "The private endpoint connection is pending and cannot be used to access Batch account" + }, + { + "value": "Rejected", + "description": "The private endpoint connection is rejected and cannot be used to access Batch account" + }, + { + "value": "Disconnected", + "description": "The private endpoint connection is disconnected and cannot be used to access Batch account" + } + ] + } + }, "Pool": { + "type": "object", "properties": { "properties": { "x-ms-client-flatten": true, "$ref": "#/definitions/PoolProperties", "description": "The properties associated with the pool." + }, + "identity": { + "title": "The type of identity used for the Batch Pool.", + "description": "The type of identity used for the Batch Pool.", + "$ref": "#/definitions/BatchPoolIdentity" } }, "allOf": [ @@ -2592,6 +3683,7 @@ "description": "Contains information about a pool." }, "PoolProperties": { + "type": "object", "properties": { "displayName": { "type": "string", @@ -2677,7 +3769,7 @@ "vmSize": { "type": "string", "title": "The size of virtual machines in the pool. All VMs in a pool are the same size.", - "description": "For information about available sizes of virtual machines for Cloud Services pools (pools created with cloudServiceConfiguration), see Sizes for Cloud Services (http://azure.microsoft.com/documentation/articles/cloud-services-sizes-specs/). Batch supports all Cloud Services VM sizes except ExtraSmall. For information about available VM sizes for pools using images from the Virtual Machines Marketplace (pools created with virtualMachineConfiguration) see Sizes for Virtual Machines (Linux) (https://azure.microsoft.com/documentation/articles/virtual-machines-linux-sizes/) or Sizes for Virtual Machines (Windows) (https://azure.microsoft.com/documentation/articles/virtual-machines-windows-sizes/). Batch supports all Azure VM sizes except STANDARD_A0 and those with premium storage (STANDARD_GS, STANDARD_DS, and STANDARD_DSV2 series)." + "description": "For information about available sizes of virtual machines for Cloud Services pools (pools created with cloudServiceConfiguration), see Sizes for Cloud Services (https://azure.microsoft.com/documentation/articles/cloud-services-sizes-specs/). Batch supports all Cloud Services VM sizes except ExtraSmall. For information about available VM sizes for pools using images from the Virtual Machines Marketplace (pools created with virtualMachineConfiguration) see Sizes for Virtual Machines (Linux) (https://azure.microsoft.com/documentation/articles/virtual-machines-linux-sizes/) or Sizes for Virtual Machines (Windows) (https://azure.microsoft.com/documentation/articles/virtual-machines-windows-sizes/). Batch supports all Azure VM sizes except STANDARD_A0 and those with premium storage (STANDARD_GS, STANDARD_DS, and STANDARD_DSV2 series)." }, "deploymentConfiguration": { "$ref": "#/definitions/DeploymentConfiguration", @@ -2693,7 +3785,7 @@ "currentLowPriorityNodes": { "type": "integer", "format": "int32", - "title": "The number of low priority compute nodes currently in the pool.", + "title": "The number of low-priority compute nodes currently in the pool.", "readOnly": true }, "scaleSettings": { @@ -2733,20 +3825,25 @@ "$ref": "#/definitions/NetworkConfiguration", "title": "The network configuration for the pool." }, - "maxTasksPerNode": { + "taskSlotsPerNode": { "type": "integer", "format": "int32", - "title": "The maximum number of tasks that can run concurrently on a single compute node in the pool." + "title": "The number of task slots that can be used to run concurrent tasks on a single compute node in the pool.", + "description": "The default value is 1. The maximum value is the smaller of 4 times the number of cores of the vmSize of the pool or 256." }, "taskSchedulingPolicy": { "$ref": "#/definitions/TaskSchedulingPolicy", - "title": "How tasks are distributed across compute nodes in a pool." + "title": "How tasks are distributed across compute nodes in a pool.", + "description": "If not specified, the default is spread." }, "userAccounts": { "type": "array", "items": { "$ref": "#/definitions/UserAccount" }, + "x-ms-identifiers": [ + "name" + ], "title": "The list of user accounts to be created on each node in the pool." }, "metadata": { @@ -2754,6 +3851,9 @@ "items": { "$ref": "#/definitions/MetadataItem" }, + "x-ms-identifiers": [ + "name" + ], "title": "A list of name-value pairs associated with the pool as metadata.", "description": "The Batch service does not assign any meaning to metadata; it is solely for the use of user code." }, @@ -2776,7 +3876,7 @@ "$ref": "#/definitions/ApplicationPackageReference" }, "title": "The list of application packages to be installed on each compute node in the pool.", - "description": "Changes to application packages affect all new compute nodes joining the pool, but do not affect compute nodes that are already in the pool until they are rebooted or reimaged." + "description": "Changes to application package references affect all new compute nodes joining the pool, but do not affect compute nodes that are already in the pool until they are rebooted or reimaged. There is a maximum of 10 application package references on any given pool." }, "applicationLicenses": { "type": "array", @@ -2790,11 +3890,59 @@ "$ref": "#/definitions/ResizeOperationStatus", "title": "Contains details about the current or last completed resize operation.", "readOnly": true + }, + "mountConfiguration": { + "type": "array", + "items": { + "$ref": "#/definitions/MountConfiguration" + }, + "x-ms-identifiers": [], + "title": "A list of file systems to mount on each node in the pool.", + "description": "This supports Azure Files, NFS, CIFS/SMB, and Blobfuse." } }, "description": "Pool properties." }, + "BatchPoolIdentity": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "The type of identity used for the Batch Pool.", + "enum": [ + "UserAssigned", + "None" + ], + "x-ms-enum": { + "name": "PoolIdentityType", + "modelAsString": false, + "values": [ + { + "value": "UserAssigned", + "description": "Batch pool has user assigned identities with it." + }, + { + "value": "None", + "description": "Batch pool has no identity associated with it. Setting `None` in update pool will remove existing identities." + } + ] + } + }, + "userAssignedIdentities": { + "type": "object", + "description": "The list of user identities associated with the Batch pool.", + "additionalProperties": { + "$ref": "#/definitions/UserAssignedIdentities" + } + } + }, + "description": "The identity of the Batch pool, if configured. If the pool identity is updated during update an existing pool, only the new vms which are created after the pool shrinks to 0 will have the updated identities", + "required": [ + "type" + ] + }, "DeploymentConfiguration": { + "type": "object", "properties": { "cloudServiceConfiguration": { "$ref": "#/definitions/CloudServiceConfiguration", @@ -2810,6 +3958,7 @@ "title": "Deployment configuration properties." }, "ScaleSettings": { + "type": "object", "properties": { "fixedScale": { "$ref": "#/definitions/FixedScaleSettings", @@ -2826,6 +3975,7 @@ "description": "Defines the desired size of the pool. This can either be 'fixedScale' where the requested targetDedicatedNodes is specified, or 'autoScale' which defines a formula which is periodically reevaluated. If this property is not specified, the pool will have a fixed scale with 0 targetDedicatedNodes." }, "AutoScaleSettings": { + "type": "object", "properties": { "formula": { "type": "string", @@ -2842,10 +3992,13 @@ "description": "If omitted, the default value is 15 minutes (PT15M)." } }, - "required": [ "formula" ], + "required": [ + "formula" + ], "title": "AutoScale settings for the pool." }, "FixedScaleSettings": { + "type": "object", "properties": { "resizeTimeout": { "type": "string", @@ -2857,13 +4010,13 @@ "type": "integer", "format": "int32", "title": "The desired number of dedicated compute nodes in the pool.", - "description": "At least one of targetDedicatedNodes, targetLowPriority nodes must be set." + "description": "At least one of targetDedicatedNodes, targetLowPriorityNodes must be set." }, "targetLowPriorityNodes": { "type": "integer", "format": "int32", "title": "The desired number of low-priority compute nodes in the pool.", - "description": "At least one of targetDedicatedNodes, targetLowPriority nodes must be set." + "description": "At least one of targetDedicatedNodes, targetLowPriorityNodes must be set." }, "nodeDeallocationOption": { "title": "Determines what to do with a node and its running task(s) if the pool size is decreasing.", @@ -2906,6 +4059,7 @@ } }, "CertificateReference": { + "type": "object", "properties": { "id": { "type": "string", @@ -2955,7 +4109,7 @@ "values": [ { "value": "StartTask", - "description": "The certificate should be visible to the user account under which the start task is run." + "description": "The certificate should be visible to the user account under which the start task is run. Note that if AutoUser Scope is Pool for both the StartTask and a Task, this certificate will be visible to the Task as well." }, { "value": "Task", @@ -2971,10 +4125,13 @@ "title": "Which user accounts on the compute node should have access to the private data of the certificate." } }, - "required": [ "id" ], + "required": [ + "id" + ], "title": "A reference to a certificate to be installed on compute nodes in a pool. This must exist inside the same account as the pool." }, "ApplicationPackageReference": { + "type": "object", "properties": { "id": { "type": "string", @@ -2987,9 +4144,12 @@ } }, "title": "Link to an application package inside the batch account", - "required": [ "id" ] + "required": [ + "id" + ] }, "ResizeError": { + "type": "object", "properties": { "code": { "type": "string", @@ -3004,13 +4164,18 @@ "items": { "$ref": "#/definitions/ResizeError" }, + "x-ms-identifiers": [], "title": "Additional details about the error." } }, "title": "An error that occurred when resizing a pool.", - "required": [ "code", "message" ] + "required": [ + "code", + "message" + ] }, "AutoScaleRunError": { + "type": "object", "properties": { "code": { "type": "string", @@ -3025,13 +4190,18 @@ "items": { "$ref": "#/definitions/AutoScaleRunError" }, + "x-ms-identifiers": [], "title": "Additional details about the error." } }, "title": "An error that occurred when autoscaling a pool.", - "required": [ "code", "message" ] + "required": [ + "code", + "message" + ] }, "AutoScaleRun": { + "type": "object", "properties": { "evaluationTime": { "type": "string", @@ -3048,10 +4218,13 @@ "title": "Details of the error encountered evaluating the autoscale formula on the pool, if the evaluation was unsuccessful." } }, - "required": [ "evaluationTime" ], + "required": [ + "evaluationTime" + ], "title": "The results and errors from an execution of a pool autoscale formula." }, "VirtualMachineConfiguration": { + "type": "object", "properties": { "imageReference": { "$ref": "#/definitions/ImageReference", @@ -3072,6 +4245,9 @@ "items": { "$ref": "#/definitions/DataDisk" }, + "x-ms-identifiers": [ + "lun" + ], "title": "The configuration for data disks attached to the compute nodes in the pool.", "description": "This property must be specified if the compute nodes in the pool need to have empty data disks attached to them." }, @@ -3084,18 +4260,44 @@ "$ref": "#/definitions/ContainerConfiguration", "title": "The container configuration for the pool.", "description": "If specified, setup is performed on each node in the pool to allow tasks to run in containers. All regular tasks and job manager tasks run on this pool must specify the containerSettings property, and all other tasks may specify it." + }, + "diskEncryptionConfiguration": { + "$ref": "#/definitions/DiskEncryptionConfiguration", + "title": "The disk encryption configuration for the pool.", + "description": "If specified, encryption is performed on each node in the pool during node provisioning." + }, + "nodePlacementConfiguration": { + "$ref": "#/definitions/NodePlacementConfiguration", + "title": "The node placement configuration for the pool.", + "description": "This configuration will specify rules on how nodes in the pool will be physically allocated." + }, + "extensions": { + "type": "array", + "items": { + "$ref": "#/definitions/VMExtension" + }, + "x-ms-identifiers": [ + "name", + "type" + ], + "title": "The virtual machine extension for the pool.", + "description": "If specified, the extensions mentioned in this configuration will be installed on each node." + }, + "osDisk": { + "$ref": "#/definitions/OSDisk", + "title": "Settings for the operating system disk of the Virtual Machine.", + "description": "Contains configuration for ephemeral OSDisk settings." } }, - "required": [ "imageReference", "nodeAgentSkuId" ], + "required": [ + "imageReference", + "nodeAgentSkuId" + ], "title": "The configuration for compute nodes in a pool based on the Azure Virtual Machines infrastructure." }, "ContainerRegistry": { + "type": "object", "properties": { - "registryServer": { - "type": "string", - "title": "The registry URL.", - "description": "If omitted, the default is \"docker.io\"." - }, "username": { "type": "string", "x-ms-client-name": "userName", @@ -3104,12 +4306,58 @@ "password": { "type": "string", "title": "The password to log into the registry server." + }, + "registryServer": { + "type": "string", + "title": "The registry URL.", + "description": "If omitted, the default is \"docker.io\"." + }, + "identityReference": { + "title": "The reference to the user assigned identity to use to access an Azure Container Registry instead of username and password.", + "$ref": "#/definitions/ComputeNodeIdentityReference" } }, - "required": [ "username", "password" ], "title": "A private container registry." }, + "DiskEncryptionConfiguration": { + "type": "object", + "properties": { + "targets": { + "type": "array", + "items": { + "type": "string", + "x-nullable": false, + "title": "The disks to encrypt on each compute node.", + "description": "If omitted, no disks on the compute nodes in the pool will be encrypted.", + "enum": [ + "OsDisk", + "TemporaryDisk" + ], + "x-ms-enum": { + "name": "DiskEncryptionTarget", + "modelAsString": false, + "values": [ + { + "value": "OsDisk", + "description": "The OS Disk on the compute node is encrypted.", + "name": "OsDisk" + }, + { + "value": "TemporaryDisk", + "description": "The temporary disk on the compute node is encrypted. On Linux this encryption applies to other partitions (such as those on mounted data disks) when encryption occurs at boot time.", + "name": "TemporaryDisk" + } + ] + } + }, + "title": "The list of disk targets Batch Service will encrypt on the compute node", + "description": "On Linux pool, only \"TemporaryDisk\" is supported; on Windows pool, \"OsDisk\" and \"TemporaryDisk\" must be specified." + } + }, + "description": "The disk encryption configuration applied on compute nodes in the pool. Disk encryption configuration is not supported on Linux pool created with Virtual Machine Image or Shared Image Gallery Image." + }, "ContainerConfiguration": { + "type": "object", "properties": { "type": { "type": "string", @@ -3141,14 +4389,104 @@ "items": { "$ref": "#/definitions/ContainerRegistry" }, + "x-ms-identifiers": [ + "registryServers" + ], "title": "Additional private registries from which containers can be pulled.", "description": "If any images must be downloaded from a private registry which requires credentials, then those credentials must be provided here." } }, - "required": [ "type" ], + "required": [ + "type" + ], "title": "The configuration for container-enabled pools." }, + "NodePlacementPolicyType": { + "type": "string", + "title": "The placement policy for allocating nodes in the pool.", + "description": "The default value is regional.", + "enum": [ + "Regional", + "Zonal" + ], + "x-ms-enum": { + "name": "NodePlacementPolicyType", + "modelAsString": false, + "values": [ + { + "value": "Regional", + "description": "All nodes in the pool will be allocated in the same region." + }, + { + "value": "Zonal", + "description": "Nodes in the pool will be spread across different zones with best effort balancing.", + "name": "Zonal" + } + ] + } + }, + "NodePlacementConfiguration": { + "title": "Node placement configuration for batch pools.", + "description": "Allocation configuration used by Batch Service to provision the nodes.", + "type": "object", + "properties": { + "policy": { + "$ref": "#/definitions/NodePlacementPolicyType", + "title": "Node placement Policy type on Batch Pools.", + "description": "Allocation policy used by Batch Service to provision the nodes. If not specified, Batch will use the regional policy." + } + } + }, + "VMExtension": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "The name of the virtual machine extension." + }, + "publisher": { + "type": "string", + "title": "The name of the extension handler publisher." + }, + "type": { + "type": "string", + "title": "The type of the extensions." + }, + "typeHandlerVersion": { + "type": "string", + "title": "The version of script handler." + }, + "autoUpgradeMinorVersion": { + "type": "boolean", + "description": "Indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed, however, the extension will not upgrade minor versions unless redeployed, even with this property set to true." + }, + "settings": { + "type": "object", + "title": "JSON formatted public settings for the extension." + }, + "protectedSettings": { + "x-ms-secret": true, + "type": "object", + "description": "The extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all. " + }, + "provisionAfterExtensions": { + "type": "array", + "items": { + "type": "string" + }, + "title": "The collection of extension names.", + "description": "Collection of extension names after which this extension needs to be provisioned." + } + }, + "required": [ + "name", + "publisher", + "type" + ], + "title": "The configuration for virtual machine extensions." + }, "WindowsConfiguration": { + "type": "object", "properties": { "enableAutomaticUpdates": { "type": "boolean", @@ -3159,6 +4497,7 @@ "title": "Windows operating system settings to apply to the virtual machine." }, "ImageReference": { + "type": "object", "properties": { "publisher": { "type": "string", @@ -3173,7 +4512,7 @@ "sku": { "type": "string", "title": "The SKU of the Azure Virtual Machines Marketplace image.", - "description": "For example, 14.04.0-LTS or 2012-R2-Datacenter." + "description": "For example, 18.04-LTS or 2019-Datacenter." }, "version": { "type": "string", @@ -3182,19 +4521,20 @@ }, "id": { "type": "string", - "title": "The ARM resource identifier of the virtual machine image. Computes nodes of the pool will be created using this custom image. This is of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Compute/images/{imageName}", - "description": "This property is mutually exclusive with other properties. The virtual machine image must be in the same region and subscription as the Azure Batch account. For information about the firewall settings for Batch node agent to communicate with Batch service see https://docs.microsoft.com/en-us/azure/batch/batch-api-basics#virtual-network-vnet-and-firewall-configuration ." + "title": "The ARM resource identifier of the Shared Image Gallery Image. Compute Nodes in the Pool will be created using this Image Id. This is of the form /subscriptions/{subscriptionId}/resourceGroups/{resourceGroup}/providers/Microsoft.Compute/galleries/{galleryName}/images/{imageDefinitionName}/versions/{versionId}.", + "description": "This property is mutually exclusive with other properties. The Shared Image Gallery image must have replicas in the same region as the Azure Batch account. For information about the firewall settings for the Batch node agent to communicate with the Batch service see https://docs.microsoft.com/en-us/azure/batch/batch-api-basics#virtual-network-vnet-and-firewall-configuration." } }, "title": "A reference to an Azure Virtual Machines Marketplace image or the Azure Image resource of a custom Virtual Machine. To get the list of all imageReferences verified by Azure Batch, see the 'List supported node agent SKUs' operation." }, "DataDisk": { + "type": "object", "properties": { "lun": { "type": "integer", "format": "int32", "title": "The logical unit number.", - "description": "The lun is used to uniquely identify each data disk. If attaching multiple disks, each should have a distinct lun." + "description": "The lun is used to uniquely identify each data disk. If attaching multiple disks, each should have a distinct lun. The value must be between 0 and 63, inclusive." }, "caching": { "$ref": "#/definitions/CachingType", @@ -3216,9 +4556,10 @@ "lun", "diskSizeGB" ], - "description": "Data Disk settings which will be used by the data disks associated to Compute Nodes in the pool." + "description": "Settings which will be used by the data disks associated to Compute Nodes in the Pool. When using attached data disks, you need to mount and format the disks from within a VM to use them." }, "TaskSchedulingPolicy": { + "type": "object", "properties": { "nodeFillType": { "type": "string", @@ -3237,16 +4578,19 @@ }, { "value": "Pack", - "description": "As many tasks as possible (maxTasksPerNode) should be assigned to each node in the pool before any tasks are assigned to the next node in the pool." + "description": "As many tasks as possible (taskSlotsPerNode) should be assigned to each node in the pool before any tasks are assigned to the next node in the pool." } ] } } }, - "required": [ "nodeFillType" ], + "required": [ + "nodeFillType" + ], "title": "Specifies how tasks should be distributed across compute nodes." }, "LinuxUserConfiguration": { + "type": "object", "properties": { "uid": { "type": "integer", @@ -3269,6 +4613,7 @@ "title": "Properties used to create a user account on a Linux node." }, "WindowsUserConfiguration": { + "type": "object", "properties": { "loginMode": { "type": "string", @@ -3297,6 +4642,7 @@ "title": "Properties used to create a user account on a Windows node." }, "UserAccount": { + "type": "object", "properties": { "name": { "type": "string", @@ -3322,10 +4668,14 @@ "$ref": "#/definitions/WindowsUserConfiguration" } }, - "required": [ "name", "password" ], + "required": [ + "name", + "password" + ], "title": "Properties used to create a user on an Azure Batch node." }, "StartTask": { + "type": "object", "properties": { "commandLine": { "type": "string", @@ -3337,6 +4687,9 @@ "items": { "$ref": "#/definitions/ResourceFile" }, + "x-ms-identifiers": [ + "httpUrl" + ], "title": "A list of files that the Batch service will download to the compute node before running the command line." }, "environmentSettings": { @@ -3344,6 +4697,9 @@ "items": { "$ref": "#/definitions/EnvironmentSetting" }, + "x-ms-identifiers": [ + "name" + ], "title": "A list of environment variable settings for the start task." }, "userIdentity": { @@ -3360,7 +4716,7 @@ "waitForSuccess": { "type": "boolean", "title": "Whether the Batch service should wait for the start task to complete successfully (that is, to exit with exit code 0) before scheduling any tasks on the compute node.", - "description": "If true and the start task fails on a compute node, the Batch service retries the start task up to its maximum retry count (maxTaskRetryCount). If the task has still not completed successfully after all retries, then the Batch service marks the compute node unusable, and will not schedule tasks to it. This condition can be detected via the node state and scheduling error detail. If false, the Batch service will not wait for the start task to complete. In this case, other tasks can start executing on the compute node while the start task is still running; and even if the start task fails, new tasks will continue to be scheduled on the node. The default is false." + "description": "If true and the start task fails on a compute node, the Batch service retries the start task up to its maximum retry count (maxTaskRetryCount). If the task has still not completed successfully after all retries, then the Batch service marks the compute node unusable, and will not schedule tasks to it. This condition can be detected via the node state and scheduling error detail. If false, the Batch service will not wait for the start task to complete. In this case, other tasks can start executing on the compute node while the start task is still running; and even if the start task fails, new tasks will continue to be scheduled on the node. The default is true." }, "containerSettings": { "$ref": "#/definitions/TaskContainerSettings", @@ -3368,9 +4724,11 @@ "description": "When this is specified, all directories recursively below the AZ_BATCH_NODE_ROOT_DIR (the root of Azure Batch directories on the node) are mapped into the container, all task environment variables are mapped into the container, and the task command line is executed in the container." } }, - "title": "A task which is run when a compute node joins a pool in the Azure Batch service, or when the compute node is rebooted or reimaged." + "title": "A task which is run when a compute node joins a pool in the Azure Batch service, or when the compute node is rebooted or reimaged.", + "description": "In some cases the start task may be re-run even though the node was not rebooted. Due to this, start tasks should be idempotent and exit gracefully if the setup they're performing has already been done. Special care should be taken to avoid start tasks which create breakaway process or install/launch services from the start task working directory, as this will block Batch from being able to re-run the start task." }, "TaskContainerSettings": { + "type": "object", "properties": { "containerRunOptions": { "type": "string", @@ -3386,12 +4744,37 @@ "$ref": "#/definitions/ContainerRegistry", "title": "The private registry which contains the container image.", "description": "This setting can be omitted if was already provided at pool creation." + }, + "workingDirectory": { + "type": "string", + "title": "A flag to indicate where the container task working directory is. The default is 'taskWorkingDirectory'.", + "enum": [ + "TaskWorkingDirectory", + "ContainerImageDefault" + ], + "x-ms-enum": { + "name": "ContainerWorkingDirectory", + "modelAsString": false, + "values": [ + { + "value": "TaskWorkingDirectory", + "description": "Use the standard Batch service task working directory, which will contain the Task resource files populated by Batch." + }, + { + "value": "ContainerImageDefault", + "description": "Using container image defined working directory. Beware that this directory will not contain the resource files downloaded by Batch." + } + ] + } } }, - "required": [ "imageName" ], + "required": [ + "imageName" + ], "title": "The container settings for a task." }, "ResourceFile": { + "type": "object", "properties": { "autoStorageContainerName": { "type": "string", @@ -3401,12 +4784,12 @@ "storageContainerUrl": { "type": "string", "title": "The URL of the blob container within Azure Blob Storage.", - "description": "The autoStorageContainerName, storageContainerUrl and httpUrl properties are mutually exclusive and one of them must be specified. This URL must be readable and listable using anonymous access; that is, the Batch service does not present any credentials when downloading the blob. There are two ways to get such a URL for a blob in Azure storage: include a Shared Access Signature (SAS) granting read and list permissions on the blob, or set the ACL for the blob or its container to allow public access." + "description": "The autoStorageContainerName, storageContainerUrl and httpUrl properties are mutually exclusive and one of them must be specified. This URL must be readable and listable from compute nodes. There are three ways to get such a URL for a container in Azure storage: include a Shared Access Signature (SAS) granting read and list permissions on the container, use a managed identity with read and list permissions, or set the ACL for the container to allow public access." }, "httpUrl": { "type": "string", "title": "The URL of the file to download.", - "description": "The autoStorageContainerName, storageContainerUrl and httpUrl properties are mutually exclusive and one of them must be specified. If the URL is Azure Blob Storage, it must be readable using anonymous access; that is, the Batch service does not present any credentials when downloading the blob. There are two ways to get such a URL for a blob in Azure storage: include a Shared Access Signature (SAS) granting read permissions on the blob, or set the ACL for the blob or its container to allow public access." + "description": "The autoStorageContainerName, storageContainerUrl and httpUrl properties are mutually exclusive and one of them must be specified. If the URL points to Azure Blob Storage, it must be readable from compute nodes. There are three ways to get such a URL for a blob in Azure storage: include a Shared Access Signature (SAS) granting read permissions on the blob, use a managed identity with read permission, or set the ACL for the blob or its container to allow public access." }, "blobPrefix": { "type": "string", @@ -3422,11 +4805,16 @@ "type": "string", "title": "The file permission mode attribute in octal format.", "description": "This property applies only to files being downloaded to Linux compute nodes. It will be ignored if it is specified for a resourceFile which will be downloaded to a Windows node. If this property is not specified for a Linux node, then a default value of 0770 is applied to the file." + }, + "identityReference": { + "title": "The reference to the user assigned identity to use to access Azure Blob Storage specified by storageContainerUrl or httpUrl", + "$ref": "#/definitions/ComputeNodeIdentityReference" } }, "title": "A single file or multiple files to be downloaded to a compute node." }, "EnvironmentSetting": { + "type": "object", "properties": { "name": { "type": "string", @@ -3437,10 +4825,13 @@ "title": "The value of the environment variable." } }, - "required": [ "name" ], + "required": [ + "name" + ], "title": "An environment variable to be set on a task process." }, "UserIdentity": { + "type": "object", "properties": { "userName": { "type": "string", @@ -3456,12 +4847,39 @@ "title": "The definition of the user identity under which the task is run.", "description": "Specify either the userName or autoUser property, but not both." }, + "UserAssignedIdentities": { + "type": "object", + "description": "The list of associated user identities.", + "properties": { + "principalId": { + "readOnly": true, + "type": "string", + "description": "The principal id of user assigned identity." + }, + "clientId": { + "readOnly": true, + "type": "string", + "description": "The client id of user assigned identity." + } + } + }, + "ComputeNodeIdentityReference": { + "type": "object", + "properties": { + "resourceId": { + "type": "string", + "description": "The ARM resource id of the user assigned identity." + } + }, + "description": "The reference to a user assigned identity associated with the Batch pool which a compute node will use." + }, "AutoUserSpecification": { + "type": "object", "properties": { "scope": { "type": "string", "title": "The scope for the auto user", - "description": "The default value is task.", + "description": "The default value is Pool. If the pool is running Windows a value of Task should be specified if stricter isolation between tasks is required. For example, if the task mutates the registry in a way which could impact other tasks, or if certificates have been specified on the pool which should not be accessible by normal tasks but should be accessible by start tasks.", "enum": [ "Task", "Pool" @@ -3483,7 +4901,7 @@ }, "elevationLevel": { "title": "The elevation level of the auto user.", - "description": "nonAdmin - The auto user is a standard user without elevated access. admin - The auto user is a user with elevated access and operates with full Administrator permissions. The default value is nonAdmin.", + "description": "The default value is nonAdmin.", "$ref": "#/definitions/ElevationLevel" } }, @@ -3553,19 +4971,106 @@ "value": "ReadOnly", "description": "The caching mode for the disk is read only." }, - { - "value": "ReadWrite", - "description": "The caching mode for the disk is read and write." - } - ] - } + { + "value": "ReadWrite", + "description": "The caching mode for the disk is read and write." + } + ] + } + }, + "DiffDiskPlacement": { + "type": "string", + "title": "Specifies the ephemeral disk placement for operating system disk for all VMs in the pool.", + "description": "This property can be used by user in the request to choose which location the operating system should be in. e.g., cache disk space for Ephemeral OS disk provisioning. For more information on Ephemeral OS disk size requirements, please refer to Ephemeral OS disk size requirements for Windows VMs at https://docs.microsoft.com/en-us/azure/virtual-machines/windows/ephemeral-os-disks#size-requirements and Linux VMs at https://docs.microsoft.com/en-us/azure/virtual-machines/linux/ephemeral-os-disks#size-requirements", + "enum": [ + "CacheDisk" + ], + "x-ms-enum": { + "name": "DiffDiskPlacement", + "modelAsString": false, + "values": [ + { + "value": "CacheDisk", + "description": "The Ephemeral OS Disk is stored on the VM cache.", + "name": "CacheDisk" + } + ] + } + }, + "DiffDiskSettings": { + "type": "object", + "properties": { + "placement": { + "$ref": "#/definitions/DiffDiskPlacement", + "title": "Specifies the ephemeral disk placement for operating system disk for all VMs in the pool.", + "description": "This property can be used by user in the request to choose which location the operating system should be in. e.g., cache disk space for Ephemeral OS disk provisioning. For more information on Ephemeral OS disk size requirements, please refer to Ephemeral OS disk size requirements for Windows VMs at https://docs.microsoft.com/en-us/azure/virtual-machines/windows/ephemeral-os-disks#size-requirements and Linux VMs at https://docs.microsoft.com/en-us/azure/virtual-machines/linux/ephemeral-os-disks#size-requirements." + } + }, + "title": "Specifies the ephemeral Disk Settings for the operating system disk used by the virtual machine." + }, + "OSDisk": { + "type": "object", + "properties": { + "ephemeralOSDiskSettings": { + "$ref": "#/definitions/DiffDiskSettings", + "title": "Specifies the ephemeral Disk Settings for the operating system disk used by the virtual machine." + } + }, + "title": "Settings for the operating system disk of the virtual machine." + }, + "IPAddressProvisioningType": { + "type": "string", + "title": "The provisioning type for Public IP Addresses for the Batch Pool.", + "enum": [ + "BatchManaged", + "UserManaged", + "NoPublicIPAddresses" + ], + "x-ms-enum": { + "name": "IPAddressProvisioningType", + "modelAsString": false, + "values": [ + { + "value": "BatchManaged", + "description": "A public IP will be created and managed by Batch. There may be multiple public IPs depending on the size of the Pool." + }, + { + "value": "UserManaged", + "description": "Public IPs are provided by the user and will be used to provision the Compute Nodes." + }, + { + "value": "NoPublicIPAddresses", + "description": "No public IP Address will be created for the Compute Nodes in the Pool." + } + ] + } + }, + "PublicIPAddressConfiguration": { + "type": "object", + "properties": { + "provision": { + "$ref": "#/definitions/IPAddressProvisioningType", + "title": "The provisioning type for Public IP Addresses for the pool", + "description": "The default value is BatchManaged" + }, + "ipAddressIds": { + "type": "array", + "items": { + "type": "string" + }, + "title": "The list of public IPs which the Batch service will use when provisioning Compute Nodes.", + "description": "The number of IPs specified here limits the maximum size of the Pool - 100 dedicated nodes or 100 low-priority nodes can be allocated for each public IP. For example, a pool needing 250 dedicated VMs would need at least 3 public IPs specified. Each element of this collection is of the form: /subscriptions/{subscription}/resourceGroups/{group}/providers/Microsoft.Network/publicIPAddresses/{ip}." + } + }, + "description": "The public IP Address configuration of the networking configuration of a Pool." }, "NetworkConfiguration": { + "type": "object", "properties": { "subnetId": { "type": "string", "title": "The ARM resource identifier of the virtual network subnet which the compute nodes of the pool will join. This is of the form /subscriptions/{subscription}/resourceGroups/{group}/providers/{provider}/virtualNetworks/{network}/subnets/{subnet}.", - "description": "The virtual network must be in the same region and subscription as the Azure Batch account. The specified subnet should have enough free IP addresses to accommodate the number of nodes in the pool. If the subnet doesn't have enough free IP addresses, the pool will partially allocate compute nodes, and a resize error will occur. The 'MicrosoftAzureBatch' service principal must have the 'Classic Virtual Machine Contributor' Role-Based Access Control (RBAC) role for the specified VNet. The specified subnet must allow communication from the Azure Batch service to be able to schedule tasks on the compute nodes. This can be verified by checking if the specified VNet has any associated Network Security Groups (NSG). If communication to the compute nodes in the specified subnet is denied by an NSG, then the Batch service will set the state of the compute nodes to unusable. For pools created via virtualMachineConfiguration the Batch account must have poolAllocationMode userSubscription in order to use a VNet. If the specified VNet has any associated Network Security Groups (NSG), then a few reserved system ports must be enabled for inbound communication. For pools created with a virtual machine configuration, enable ports 29876 and 29877, as well as port 22 for Linux and port 3389 for Windows. For pools created with a cloud service configuration, enable ports 10100, 20100, and 30100. Also enable outbound connections to Azure Storage on port 443. For more details see: https://docs.microsoft.com/en-us/azure/batch/batch-api-basics#virtual-network-vnet-and-firewall-configuration", + "description": "The virtual network must be in the same region and subscription as the Azure Batch account. The specified subnet should have enough free IP addresses to accommodate the number of nodes in the pool. If the subnet doesn't have enough free IP addresses, the pool will partially allocate compute nodes and a resize error will occur. The 'MicrosoftAzureBatch' service principal must have the 'Classic Virtual Machine Contributor' Role-Based Access Control (RBAC) role for the specified VNet. The specified subnet must allow communication from the Azure Batch service to be able to schedule tasks on the compute nodes. This can be verified by checking if the specified VNet has any associated Network Security Groups (NSG). If communication to the compute nodes in the specified subnet is denied by an NSG, then the Batch service will set the state of the compute nodes to unusable. If the specified VNet has any associated Network Security Groups (NSG), then a few reserved system ports must be enabled for inbound communication. For pools created with a virtual machine configuration, enable ports 29876 and 29877, as well as port 22 for Linux and port 3389 for Windows. For pools created with a cloud service configuration, enable ports 10100, 20100, and 30100. Also enable outbound connections to Azure Storage on port 443. For cloudServiceConfiguration pools, only 'classic' VNETs are supported. For more details see: https://docs.microsoft.com/en-us/azure/batch/batch-api-basics#virtual-network-vnet-and-firewall-configuration", "externalDocs": { "url": "https://azure.microsoft.com/en-us/documentation/articles/role-based-access-built-in-roles/#classic-virtual-machine-contributor", "description": "Setting up RBAC for Azure Batch VNets" @@ -3575,16 +5080,22 @@ "$ref": "#/definitions/PoolEndpointConfiguration", "title": "The configuration for endpoints on compute nodes in the Batch pool.", "description": "Pool endpoint configuration is only supported on pools with the virtualMachineConfiguration property." + }, + "publicIPAddressConfiguration": { + "$ref": "#/definitions/PublicIPAddressConfiguration", + "title": "The Public IPAddress configuration for Compute Nodes in the Batch Pool.", + "description": "This property is only supported on Pools with the virtualMachineConfiguration property." } }, "description": "The network configuration for a pool." }, "CloudServiceConfiguration": { + "type": "object", "properties": { "osFamily": { "type": "string", "title": "The Azure Guest OS family to be installed on the virtual machines in the pool.", - "description": "Possible values are: 2 - OS Family 2, equivalent to Windows Server 2008 R2 SP1. 3 - OS Family 3, equivalent to Windows Server 2012. 4 - OS Family 4, equivalent to Windows Server 2012 R2. 5 - OS Family 5, equivalent to Windows Server 2016. For more information, see Azure Guest OS Releases (https://azure.microsoft.com/documentation/articles/cloud-services-guestos-update-matrix/#releases)." + "description": "Possible values are: 2 - OS Family 2, equivalent to Windows Server 2008 R2 SP1. 3 - OS Family 3, equivalent to Windows Server 2012. 4 - OS Family 4, equivalent to Windows Server 2012 R2. 5 - OS Family 5, equivalent to Windows Server 2016. 6 - OS Family 6, equivalent to Windows Server 2019. For more information, see Azure Guest OS Releases (https://azure.microsoft.com/documentation/articles/cloud-services-guestos-update-matrix/#releases)." }, "osVersion": { "type": "string", @@ -3592,10 +5103,13 @@ "description": "The default value is * which specifies the latest operating system version for the specified OS family." } }, - "required": [ "osFamily" ], + "required": [ + "osFamily" + ], "title": "The configuration for nodes in a pool based on the Azure Cloud Services platform." }, "MetadataItem": { + "type": "object", "properties": { "name": { "type": "string", @@ -3606,11 +5120,15 @@ "title": "The value of the metadata item." } }, - "required": [ "name", "value" ], + "required": [ + "name", + "value" + ], "title": "A name-value pair associated with a Batch service resource.", "description": "The Batch service does not assign any meaning to this metadata; it is solely for the use of user code." }, "ResizeOperationStatus": { + "type": "object", "properties": { "targetDedicatedNodes": { "type": "integer", @@ -3643,6 +5161,7 @@ "items": { "$ref": "#/definitions/ResizeError" }, + "x-ms-identifiers": [], "title": "Details of any errors encountered while performing the last resize on the pool.", "description": "This property is set only if an error occurred during the last pool resize, and only when the pool allocationState is Steady." } @@ -3651,20 +5170,27 @@ "description": "Describes either the current operation (if the pool AllocationState is Resizing) or the previously completed operation (if the AllocationState is Steady)." }, "PoolEndpointConfiguration": { + "type": "object", "properties": { "inboundNatPools": { "type": "array", "items": { "$ref": "#/definitions/InboundNatPool" }, + "x-ms-identifiers": [ + "name" + ], "title": "A list of inbound NAT pools that can be used to address specific ports on an individual compute node externally.", - "description": "The maximum number of inbound NAT pools per Batch pool is 5. If the maximum number of inbound NAT pools is exceeded the request fails with HTTP status code 400." + "description": "The maximum number of inbound NAT pools per Batch pool is 5. If the maximum number of inbound NAT pools is exceeded the request fails with HTTP status code 400. This cannot be specified if the IPAddressProvisioningType is NoPublicIPAddresses." } }, - "required": [ "inboundNatPools" ], + "required": [ + "inboundNatPools" + ], "title": "The endpoint configuration for a pool." }, "InboundNatPool": { + "type": "object", "properties": { "name": { "type": "string", @@ -3717,19 +5243,27 @@ "description": "The maximum number of rules that can be specified across all the endpoints on a Batch pool is 25. If no network security group rules are specified, a default rule will be created to allow inbound access to the specified backendPort. If the maximum number of network security group rules is exceeded the request fails with HTTP status code 400.", "items": { "$ref": "#/definitions/NetworkSecurityGroupRule" - } + }, + "x-ms-identifiers": [] } }, - "required": [ "name", "protocol", "backendPort", "frontendPortRangeStart", "frontendPortRangeEnd" ], + "required": [ + "name", + "protocol", + "backendPort", + "frontendPortRangeStart", + "frontendPortRangeEnd" + ], "title": "A inbound NAT pool that can be used to address specific ports on compute nodes in a Batch pool externally." }, "NetworkSecurityGroupRule": { + "type": "object", "properties": { "priority": { "type": "integer", "format": "int32", "title": "The priority for this rule.", - "description": "Priorities within a pool must be unique and are evaluated in order of priority. The lower the number the higher the priority. For example, rules could be specified with order numbers of 150, 250, and 350. The rule with the order number of 150 takes precedence over the rule that has an order of 250. Allowed priorities are 150 to 3500. If any reserved or duplicate values are provided the request fails with HTTP status code 400." + "description": "Priorities within a pool must be unique and are evaluated in order of priority. The lower the number the higher the priority. For example, rules could be specified with order numbers of 150, 250, and 350. The rule with the order number of 150 takes precedence over the rule that has an order of 250. Allowed priorities are 150 to 4096. If any reserved or duplicate values are provided the request fails with HTTP status code 400." }, "access": { "type": "string", @@ -3757,12 +5291,59 @@ "type": "string", "title": "The source address prefix or tag to match for the rule.", "description": "Valid values are a single IP address (i.e. 10.10.10.10), IP subnet (i.e. 192.168.1.0/24), default tag, or * (for all addresses). If any other values are provided the request fails with HTTP status code 400." + }, + "sourcePortRanges": { + "type": "array", + "items": { + "type": "string" + }, + "title": "The source port ranges to match for the rule.", + "description": "Valid values are '*' (for all ports 0 - 65535) or arrays of ports or port ranges (i.e. 100-200). The ports should in the range of 0 to 65535 and the port ranges or ports can't overlap. If any other values are provided the request fails with HTTP status code 400. Default value will be *." } }, - "required": [ "priority", "access", "sourceAddressPrefix" ], + "required": [ + "priority", + "access", + "sourceAddressPrefix" + ], "title": "A network security group rule to apply to an inbound endpoint." }, + "ListPrivateLinkResourcesResult": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/PrivateLinkResource" + }, + "description": "The collection of returned private link resources." + }, + "nextLink": { + "type": "string", + "description": "The continuation token." + } + }, + "description": "Values returned by the List operation." + }, + "ListPrivateEndpointConnectionsResult": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/PrivateEndpointConnection" + }, + "description": "The collection of returned private endpoint connection." + }, + "nextLink": { + "type": "string", + "description": "The continuation token." + } + }, + "description": "Values returned by the List operation." + }, "ListPoolsResult": { + "type": "object", "properties": { "value": { "type": "array", @@ -3779,15 +5360,18 @@ "description": "Values returned by the List operation." }, "CloudError": { + "type": "object", "x-ms-external": true, "properties": { "error": { + "description": "The body of the error response.", "$ref": "#/definitions/CloudErrorBody" } }, "description": "An error response from the Batch service." }, "CloudErrorBody": { + "type": "object", "x-ms-external": true, "properties": { "code": { @@ -3807,11 +5391,82 @@ "items": { "$ref": "#/definitions/CloudErrorBody" }, + "x-ms-identifiers": [ + "message", + "target" + ], "description": "A list of additional details about the error." } }, "description": "An error response from the Batch service." }, + "SkuCapability": { + "type": "object", + "properties": { + "name": { + "type": "string", + "readOnly": true, + "description": "The name of the feature." + }, + "value": { + "type": "string", + "readOnly": true, + "description": "The value of the feature." + } + }, + "description": "A SKU capability, such as the number of cores." + }, + "SupportedSku": { + "type": "object", + "properties": { + "name": { + "readOnly": true, + "type": "string", + "description": "The name of the SKU." + }, + "familyName": { + "readOnly": true, + "type": "string", + "description": "The family name of the SKU." + }, + "capabilities": { + "type": "array", + "readOnly": true, + "items": { + "$ref": "#/definitions/SkuCapability" + }, + "x-ms-identifiers": [ + "name" + ], + "description": "A collection of capabilities which this SKU supports." + } + }, + "description": "Describes a Batch supported SKU." + }, + "SupportedSkusResult": { + "type": "object", + "properties": { + "value": { + "type": "array", + "items": { + "$ref": "#/definitions/SupportedSku" + }, + "x-ms-identifiers": [ + "name" + ], + "description": "The list of SKUs available for the Batch service in the location." + }, + "nextLink": { + "readOnly": true, + "type": "string", + "description": "The URL to use for getting the next set of results." + } + }, + "required": [ + "value" + ], + "description": "The Batch List supported SKUs operation response." + }, "Operation": { "title": "A REST API operation", "type": "object", @@ -3821,8 +5476,13 @@ "description": "This is of the format {provider}/{resource}/{operation}", "type": "string" }, + "isDataAction": { + "description": "Indicates whether the operation is a data action", + "type": "boolean" + }, "display": { "title": "The object that describes the operation.", + "type": "object", "properties": { "provider": { "title": "Friendly name of the resource provider.", @@ -3855,12 +5515,16 @@ }, "OperationListResult": { "title": "Result of the request to list REST API operations. It contains a list of operations and a URL nextLink to get the next set of results.", + "type": "object", "properties": { "value": { "type": "array", "items": { "$ref": "#/definitions/Operation" }, + "x-ms-identifiers": [ + "name" + ], "title": "The list of operations supported by the resource provider." }, "nextLink": { @@ -3870,6 +5534,7 @@ } }, "CheckNameAvailabilityParameters": { + "type": "object", "properties": { "name": { "type": "string", @@ -3877,9 +5542,11 @@ }, "type": { "type": "string", - "enum": [ "Microsoft.Batch/batchAccounts" ], + "enum": [ + "Microsoft.Batch/batchAccounts" + ], "x-ms-enum": { - "name": "Type", + "name": "ResourceType", "modelAsString": false, "values": [ { @@ -3889,7 +5556,7 @@ } ] }, - "description": "The resource type. Must be set to Microsoft.Batch/batchAccounts" + "description": "The resource type." } }, "required": [ @@ -3899,6 +5566,7 @@ "description": "Parameters for a check name availability request." }, "CheckNameAvailabilityResult": { + "type": "object", "properties": { "nameAvailable": { "readOnly": true, @@ -3935,6 +5603,247 @@ } }, "description": "The CheckNameAvailability operation response." + }, + "MountConfiguration": { + "type": "object", + "properties": { + "azureBlobFileSystemConfiguration": { + "$ref": "#/definitions/AzureBlobFileSystemConfiguration", + "title": "The Azure Storage Container to mount using blob FUSE on each node.", + "description": "This property is mutually exclusive with all other properties." + }, + "nfsMountConfiguration": { + "$ref": "#/definitions/NFSMountConfiguration", + "title": "The NFS file system to mount on each node.", + "description": "This property is mutually exclusive with all other properties." + }, + "cifsMountConfiguration": { + "$ref": "#/definitions/CIFSMountConfiguration", + "title": "The CIFS/SMB file system to mount on each node.", + "description": "This property is mutually exclusive with all other properties." + }, + "azureFileShareConfiguration": { + "$ref": "#/definitions/AzureFileShareConfiguration", + "title": "The Azure File Share to mount on each node.", + "description": "This property is mutually exclusive with all other properties." + } + }, + "title": "The file system to mount on each node." + }, + "AzureBlobFileSystemConfiguration": { + "type": "object", + "properties": { + "accountName": { + "type": "string", + "title": "The Azure Storage Account name." + }, + "containerName": { + "type": "string", + "title": "The Azure Blob Storage Container name." + }, + "accountKey": { + "type": "string", + "title": "The Azure Storage Account key.", + "description": "This property is mutually exclusive with both sasKey and identity; exactly one must be specified." + }, + "sasKey": { + "type": "string", + "title": "The Azure Storage SAS token.", + "description": "This property is mutually exclusive with both accountKey and identity; exactly one must be specified." + }, + "blobfuseOptions": { + "type": "string", + "title": "Additional command line options to pass to the mount command.", + "description": "These are 'net use' options in Windows and 'mount' options in Linux." + }, + "relativeMountPath": { + "type": "string", + "title": "The relative path on the compute node where the file system will be mounted", + "description": "All file systems are mounted relative to the Batch mounts directory, accessible via the AZ_BATCH_NODE_MOUNTS_DIR environment variable." + }, + "identityReference": { + "title": "The reference to the user assigned identity to use to access containerName", + "description": "This property is mutually exclusive with both accountKey and sasKey; exactly one must be specified.", + "$ref": "#/definitions/ComputeNodeIdentityReference" + } + }, + "required": [ + "accountName", + "containerName", + "relativeMountPath" + ], + "title": "Information used to connect to an Azure Storage Container using Blobfuse." + }, + "NFSMountConfiguration": { + "type": "object", + "properties": { + "source": { + "type": "string", + "title": "The URI of the file system to mount." + }, + "relativeMountPath": { + "type": "string", + "title": "The relative path on the compute node where the file system will be mounted", + "description": "All file systems are mounted relative to the Batch mounts directory, accessible via the AZ_BATCH_NODE_MOUNTS_DIR environment variable." + }, + "mountOptions": { + "type": "string", + "title": "Additional command line options to pass to the mount command.", + "description": "These are 'net use' options in Windows and 'mount' options in Linux." + } + }, + "required": [ + "source", + "relativeMountPath" + ], + "title": "Information used to connect to an NFS file system." + }, + "CIFSMountConfiguration": { + "type": "object", + "properties": { + "username": { + "type": "string", + "title": "The user to use for authentication against the CIFS file system." + }, + "source": { + "type": "string", + "title": "The URI of the file system to mount." + }, + "relativeMountPath": { + "type": "string", + "title": "The relative path on the compute node where the file system will be mounted", + "description": "All file systems are mounted relative to the Batch mounts directory, accessible via the AZ_BATCH_NODE_MOUNTS_DIR environment variable." + }, + "mountOptions": { + "type": "string", + "title": "Additional command line options to pass to the mount command.", + "description": "These are 'net use' options in Windows and 'mount' options in Linux." + }, + "password": { + "type": "string", + "title": "The password to use for authentication against the CIFS file system." + } + }, + "required": [ + "username", + "source", + "password", + "relativeMountPath" + ], + "title": "Information used to connect to a CIFS file system." + }, + "AzureFileShareConfiguration": { + "type": "object", + "properties": { + "accountName": { + "type": "string", + "title": "The Azure Storage account name." + }, + "azureFileUrl": { + "type": "string", + "title": "The Azure Files URL.", + "description": "This is of the form 'https://{account}.file.core.windows.net/'." + }, + "accountKey": { + "type": "string", + "title": "The Azure Storage account key." + }, + "relativeMountPath": { + "type": "string", + "title": "The relative path on the compute node where the file system will be mounted", + "description": "All file systems are mounted relative to the Batch mounts directory, accessible via the AZ_BATCH_NODE_MOUNTS_DIR environment variable." + }, + "mountOptions": { + "type": "string", + "title": "Additional command line options to pass to the mount command.", + "description": "These are 'net use' options in Windows and 'mount' options in Linux." + } + }, + "required": [ + "accountName", + "azureFileUrl", + "accountKey", + "relativeMountPath" + ], + "title": "Information used to connect to an Azure Fileshare." + }, + "OutboundEnvironmentEndpointCollection": { + "type": "object", + "properties": { + "value": { + "type": "array", + "readOnly": true, + "items": { + "$ref": "#/definitions/OutboundEnvironmentEndpoint" + }, + "x-ms-identifiers": [], + "description": "The collection of outbound network dependency endpoints returned by the listing operation." + }, + "nextLink": { + "type": "string", + "description": "The continuation token." + } + }, + "description": "Values returned by the List operation." + }, + "OutboundEnvironmentEndpoint": { + "type": "object", + "properties": { + "category": { + "type": "string", + "readOnly": true, + "description": "The type of service that the Batch service connects to." + }, + "endpoints": { + "type": "array", + "readOnly": true, + "items": { + "$ref": "#/definitions/EndpointDependency" + }, + "x-ms-identifiers": [ + "domainName" + ], + "description": "The endpoints for this service to which the Batch service makes outbound calls." + } + }, + "description": "A collection of related endpoints from the same service for which the Batch service requires outbound access." + }, + "EndpointDependency": { + "type": "object", + "properties": { + "domainName": { + "type": "string", + "readOnly": true, + "description": "The domain name of the dependency. Domain names may be fully qualified or may contain a * wildcard." + }, + "description": { + "type": "string", + "readOnly": true, + "description": "Human-readable supplemental information about the dependency and when it is applicable." + }, + "endpointDetails": { + "type": "array", + "readOnly": true, + "items": { + "$ref": "#/definitions/EndpointDetail" + }, + "x-ms-identifiers": [], + "description": "The list of connection details for this endpoint." + } + }, + "description": "A domain name and connection details used to access a dependency." + }, + "EndpointDetail": { + "type": "object", + "properties": { + "port": { + "type": "integer", + "format": "int32", + "readOnly": true, + "description": "The port an endpoint is connected to." + } + }, + "description": "Details about the connection between the Batch service and the endpoint." } }, "parameters": { @@ -3965,7 +5874,7 @@ "in": "path", "required": true, "type": "string", - "pattern": "^[-\\w\\._]+$", + "pattern": "^[a-zA-Z0-9]+$", "minLength": 3, "maxLength": 24, "description": "The name of the Batch account.", @@ -3993,6 +5902,28 @@ "description": "The pool name. This must be unique within the account.", "x-ms-parameter-location": "method" }, + "PrivateLinkResourceNameParameter": { + "name": "privateLinkResourceName", + "in": "path", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9_-]+\\.?[a-fA-F0-9-]*$", + "minLength": 1, + "maxLength": 101, + "description": "The private link resource name. This must be unique within the account.", + "x-ms-parameter-location": "method" + }, + "PrivateEndpointConnectionNameParameter": { + "name": "privateEndpointConnectionName", + "in": "path", + "required": true, + "type": "string", + "pattern": "^[a-zA-Z0-9_-]+\\.?[a-fA-F0-9-]*$", + "minLength": 1, + "maxLength": 101, + "description": "The private endpoint connection name. This must be unique within the account.", + "x-ms-parameter-location": "method" + }, "ApplicationNameParameter": { "name": "applicationName", "in": "path",