- Added ability to specify a collection of public IPs on
NetworkConfiguration
via the newPublicIPs
property. This guarantees nodes in the Pool will have an IP from the list user provided IPs. - Added ability to mount remote file-systems on each node of a pool via the
MountConfiguration
property onCloudPool
. - Shared Image Gallery images can now be specified on the
VirtualMachineImageId
property ofImageReference
by referencing the image via its ARM ID. - [Breaking] When not specified, the default value for
WaitForSuccess
onStartTask
is nowtrue
(wasfalse
). - [Breaking] When not specified, the default value for
Scope
onAutoUserSpecification
is now alwaysPool
(wasTask
on Windows nodes,Pool
on Linux nodes).
- Improved various confusing or incomplete documentation.
This version of the Batch .NET client library targets version 2019-08-01.10.0 of the Azure Batch REST API.
- Added
maxBackoff
parameter toRetryPolicyProvider.ExponentialRetryProvider
. This option was already available on theExponentialRetry
constructor, but adding it onRetryPolicyProvider.ExponentialRetryProvider
makes it easier to use. - [Breaking] Replaced
PoolOperations.ListNodeAgentSKUs
withPoolOperations.ListSupportedImages
.ListSupportedImages
contains all of the same information originally available inListNodeAgentSKUs
but in a clearer format. New non-verified images are also now returned. Additional information aboutCapabilities
andBatchSupportEndOfLife
is accessible on theImageInformation
object returned byListSupportedImages
. - Now support network security rules blocking network access to a
CloudPool
based on the source port of the traffic. This is done via theSourcePortRanges
property onNetworkSecurityGroupRule
. - When running a container, Batch now supports executing the task in the container working directory or in the Batch task working directory. This is controlled by the
WorkingDirectory
property onTaskContainerSettings
.
- Improved various confusing or incomplete documentation.
This version of the Batch .NET client library targets version 2019-06-01.9.0 of the Azure Batch REST API.
- Added
net461
andnetstandard2.0
target frameworks. - Updated
Microsoft.AspNetCore.WebUtilities
to1.1.2
for thenetstandard1.4
target framework.
This version of the Batch .NET client library targets version 2018-12-01.8.0 of the Azure Batch REST API.
- [Breaking] Removed support for the
ChangeOSVersion
API onCloudServiceConfiguration
pools.- Removed
PoolOperations.ChangeOSVersion
andPoolOperations.ChangeOSVersionAsync
. - Renamed
TargetOSVersion
toOSVersion
and removedCurrentOSVersion
onCloudPool
. - Removed
PoolState.Upgrading
enum.
- Removed
- [Breaking] Removed
DataEgressGiB
andDataIngressGiB
fromPoolUsageMetrics
. These properties are no longer supported. - [Breaking] ResourceFile improvements
- The
ResourceFile
constructor is now private. - Added the ability specify an entire Azure Storage container in
ResourceFile
. There are now three supported modes forResourceFile
:ResourceFile.FromUrl
creates aResourceFile
pointing to a single HTTP URL.ResourceFile.FromStorageContainerUrl
creates aResourceFile
pointing to an Azure Blob Storage container.ResourceFile.FromAutoStorageContainer
creates aResourceFile
pointing to an Azure Blob Storage container in the Batch registered auto-storage account.
- URLs provided to
ResourceFile
via theResourceFile.FromUrl
method can now be any HTTP URL. Previously, these had to be an Azure Blob Storage URL. - The
BlobPrefix
property can be used to filter downloads from a storage container to only those matching the prefix.
- The
- [Breaking] Removed
OSDisk
property fromVirtualMachineConfiguration
. This property is no longer supported. - Pools which set the
DynamicVNetAssignmentScope
onNetworkConfiguration
to beDynamicVNetAssignmentScope.Job
can now dynamically assign a Virtual Network to each node the job's tasks run on. The specific Virtual Network to join the nodes to is specified in the newJobNetworkConfiguration
property onCloudJob
andJobSpecification
.- Note: This feature is in public preview. It is disabled for all Batch accounts except for those which have contacted us and requested to be in the pilot.
- The maximum lifetime of a task is now 180 days (previously it was 7).
- Added support on Windows pools for creating users with a specific login mode (either
Batch
orInteractive
) viaWindowsUserConfiguration.LoginMode
. - The default task retention time for all tasks is now 7 days, previously it was infinite.
ExponentialRetry
supports a backoff cap, via theMaxBackoff
property.
- The built in retry policies
ExponentialRetry
andLinearRetry
now correctly retry on HTTP status code429
and honor theretry-after
header.
This version of the Batch .NET client library targets version 2018-12-01.8.0 of the Azure Batch REST API.
- Updating Newtonsoft.Json to 10.0.3
This version of the Batch .NET client library targets version 2018-08-01.7.0 of the Azure Batch REST API.
- Added the ability to see what version of the Azure Batch Node Agent is running on each of the VMs in a pool, via the new
NodeAgentInformation
property onComputeNode
. - Added the ability to specify a
Filter
on theResult
of a task. See here for more details.- This enables the often requested scenario of performing a server-side query to find all tasks which failed.
- [Breaking] Added a default retry policy to
BatchClient
.- Note that this policy may not be sufficient for every case. If the old behavior (a
BatchClient
that doesn't perform any retries) is desired, the default policy can be removed from aBatchClient
withclient.CustomBehaviors = client.CustomBehaviors.Where(behavior => !(behavior is RetryPolicyProvider)).ToList()
.
- Note that this policy may not be sufficient for every case. If the old behavior (a
- [Breaking] Removed the
ValidationStatus
property fromTaskCounts
, as well as theTaskCountValidationStatus
enum. - [Breaking] The default caching type for
DataDisk
andOSDisk
is nowReadWrite
instead ofNone
.
- Fixed bug when using
BatchSharedKeyCredentials
where some operations would fail with anUnauthenticated
error innetcoreapp2.1
even though the right shared key was used.
This version of the Batch .NET client library targets version 2018-08-01.7.0 of the Azure Batch REST API.
Rename Nuget package name from Azure.Batch to Microsoft.Azure.Batch
Prior to version 8.1.2, this package was named "Azure.Batch" on Nuget. The release notes below are for that package.
Add deprecation announcement to nuget package.
- Fixed bug where LeavingPool state was not correctly returned via the
ListPoolNodeCounts
method onPoolOperations
. - Clarified various confusing documentation.
This version of the Batch .NET client library targets version 2018-02-01.6.1 of the Azure Batch REST API.
- Added the ability to query pool node counts by state, via the new
ListPoolNodeCounts
method onPoolOperations
. - Added the ability to upload Azure Batch node agent logs from a particular node, via the
UploadComputeNodeBatchServiceLogs
method onPoolOperations
andComputeNode
.- This is intended for use in debugging by Microsoft support when there are problems on a node.
This version of the Batch .NET client library targets version 2018-02-01.6.1 of the Azure Batch REST API.
The package will be renamed to Microsoft.Azure.Batch in a future release.
- Fixed a bug where deserializing some enum properties could fail if using Newtonsoft 10.
This version of the Batch .NET client library targets version 2017-09-01.6.0 of the Azure Batch REST API.
- Added the ability to get a discount on Windows VM pricing if you have on-premises licenses for the OS SKUs you are deploying, via
LicenseType
onVirtualMachineConfiguration
. - Added support for attaching empty data drives to
VirtualMachineConfiguration
based pools, via the newDataDisks
property onVirtualMachineConfiguration
. - [Breaking] Custom images must now be deployed using a reference to an ARM Image, instead of pointing to .vhd files in blobs directly.
- The new
VirtualMachineImageId
property onImageReference
contains the reference to the ARM Image, andOSDisk.ImageUris
no longer exists. - Because of this,
ImageReference
is now a required property ofVirtualMachineConfiguration
.
- The new
- [Breaking] Multi-instance tasks (created using
MultiInstanceSettings
) must now specify aCoordinationCommandLine
, andNumberOfInstances
is now optional and defaults to 1. - Added support for tasks run using Docker containers. To run a task using a Docker container you must specify a
ContainerConfiguration
on theVirtualMachineConfiguration
for a pool, and then addTaskContainerSettings
on the Task.
This version of the Batch .NET client library targets version 2017-09-01.6.0 of the Azure Batch REST API.
- Added support for detailed aggregate task counts via a new
JobOperations.GetJobTaskCounts
API. Also available onCloudJob.GetTaskCounts
. - Added support for specifying inbound endpoints on pool compute nodes, via a new
CloudPool.PoolEndpointConfiguration
property. This allows specific ports on the node to be addressed externally.
This version of the Batch .NET client library targets version 2017-06-01.5.1 of the Azure Batch REST API.
- Fixed a bug where requests using HTTP DELETE (for example,
DeletePool
andDeleteJob
) failed with an authentication error in the netstandard package. This was due to a change made toHttpClient
in netcore.- This bug impacted the 6.1.0 release as well.
This version of the Batch .NET client library targets version 2017-05-01.5.0 of the Azure Batch REST API.
Moved source code and NuGet package from Apache 2.0 license to MIT license. This is more consistent with the other Azure SDKs as well as other open source projects from Microsoft such as .NET.
This version of the Batch .NET client library targets version 2017-05-01.5.0 of the Azure Batch REST API.
- Added support for the new low-priority node type.
- [Breaking]
TargetDedicated
andCurrentDedicated
onCloudPool
andPoolSpecification
have been renamed toTargetDedicatedComputeNodes
andCurrentDedicatedComputeNodes
. - [Breaking]
ResizeError
onCloudPool
is now a collection calledResizeErrors
. - Added a new
IsDedicated
property onComputeNode
, which isfalse
for low-priority nodes. - Added a new
AllowLowPriorityNode
property toJobManagerTask
, which iftrue
allows theJobManagerTask
to run on a low-priority compute node. PoolOperations.ResizePool
andResizePoolAsync
now take two optional parameters,targetDedicatedComputeNodes
andtargetLowPriorityComputeNodes
, instead of one required parametertargetDedicated
. At least one of these two parameters must be specified.
- [Breaking]
- Linux user creation improvements
- [Breaking] Moved
SshPrivateKey
onUserAccount
to a new classLinuxUserConfiguration
, which is now a property ofUserAccount
. - Added support for specifying a
Uid
andGid
when creating a Linux user, also on the newLinuxUserConfiguration
class.
- [Breaking] Moved
- Added support for uploading task output files to Azure Blob storage.
- Added support for uploading task output files to persistent storage, via the
OutputFiles
property onCloudTask
andJobManagerTask
. - Added support for specifying actions to take based on a task's output file upload status, via the
FileUploadError
property onExitConditions
.
- Added support for uploading task output files to persistent storage, via the
- Task error reporting improvements
- [Breaking] Renamed
SchedulingError
on allExecutionInfo
classes toFailureInformation
.FailureInformation
is returned any time there is a task failure. This includes all previous scheduling error cases, as well as nonzero task exit codes, and file upload failures from the new output files feature. - Added support for determining if a task was a success or a failure via the new
Result
property on allExecutionInfo
classes. - [Breaking] Renamed
SchedulingError
onExitConditions
toPreProcessingError
to more clearly clarify when the error took place in the task life-cycle. - [Breaking] Renamed
SchedulingErrorCateogry
toErrorCategory
.
- [Breaking] Renamed
- Added support for provisioning application licenses be your pool, via a new
ApplicationLicenses
property onCloudPool
andPoolSpecification
.- Please note that this feature is in gated public preview, and you must request access to it via a support ticket.
- [Breaking] Removed
Unmapped
enum state fromAddTaskStatus
,CertificateFormat
,CertificateVisibility
,CertStoreLocation
,ComputeNodeFillType
,OSType
, andPoolLifetimeOption
as they were not ever used.
- Improved and clarified documentation.
- The package now includes a
netstandard1.4
assembly instead of the previousnetstandard1.5
.
This version of the Batch .NET client library targets version 2017-01-01.4.0 of the Azure Batch REST API.
- The client library is now supported on .NET Core. The package now includes a
netstandard1.5
assembly in addition to thenet45
assembly.
This version of the Batch .NET client library targets version 2017-01-01.4.0 of the Azure Batch REST API.
- Added support for running a task under a configurable user identity via the
UserIdentity
property on all task objects (CloudTask
,JobPreparationTask
,StartTask
, etc).UserIdentity
replacesRunElevated
.UserIdentity
supports running a task as a predefined named user (viaUserIdentity.UserName
) or an automatically created user. TheAutoUserSpecification
specifies an automatically created user account under which to run the task. To translate existing code, changeRunElevated = true
toUserIdentity = new UserIdentity(new AutoUserSpecification(elevationLevel: ElevationLevel.Admin))
andRunElevated = false
toUserIdentity = new UserIdentity(new AutoUserSpecification(elevationLevel: ElevationLevel.NonAdmin))
. - Moved
FileToStage
implementation to the Azure.Batch.FileStaging NuGet package and removed the dependency onWindowsAzure.Storage
from theAzure.Batch
package. This gives more flexibility on what version ofWindowsAzure.Storage
to use for users who do not use theFileToStage
features.
- Added support for defining pool-wide users, via the
UserAccounts
property onCloudPool
andPoolSpecification
. You can run a task as such a user using theUserIdentity
constructor that takes a user name. - Added support for requesting the Batch service provide an authentication token to the task when it runs. This is done using the
AuthenticationTokenSettings
onCloudTask
andJobManagerTask
. This avoids the need to pass Batch account keys to the task in order to issue requests to the Batch service. - Added support for specifying an action to take on a task's dependencies if the task fails using the
DependencyAction
property ofExitOptions
. - Added support for deploying nodes using custom VHDs, via the
OSDisk
property ofVirtualMachineConfiguration
. Note that the Batch account being used must have been created withPoolAllocationMode = UserSubscription
to allow this. - Added support for Azure Active Directory based authentication. Use
BatchClient.Open/OpenAsync(BatchTokenCredentials)
to use this form of authentication. This is mandatory for accounts withPoolAllocationMode = UserSubscription
.
- Removed the dependency on
WindowsAzure.Storage
. - Updated to use version 3.3.5 of
Microsoft.Rest.ClientRuntime.Azure
.
- Improved and clarified documentation.
- Fixed a bug where performing
JobOperations.GetNodeFile
andPoolOperations.GetNodeFile
could throw anOutOfMemoryException
if the file that was being examined was large.
This version of the Batch .NET client library targets version 2016-07-01.3.1 of the Azure Batch REST API.
- Fixed a bug where certificates with a signing algorithm other than SHA1 were incorrectly imported, causing the Batch service to reject them.
This version of the Batch .NET client library targets version 2016-07-01.3.1 of the Azure Batch REST API.
- Added support for a new operation
JobOperations.ReactivateTask
(orCloudTask.Reactivate
) which allows users to reactivate a previously failed task.
This version of the Batch .NET client library targets version 2016-07-01.3.1 of the Azure Batch REST API.
- Fixed bug where
CommitChanges
would incorrectly include elements in the request which did not actually change.
This version of the Batch .NET client library targets version 2016-07-01.3.1 of the Azure Batch REST API.
- Fixed bug where
CloudJob.Commit
andCloudJob.CommitChanges
would hit an exception when attempting to commit a job which had previously been gotten using anODataDetail
select clause.
- Improved comments for
ExitCode
on all task execution information objects (TaskExecutionInformation
,JobPreparationTaskExecutionInformation
,JobReleaseTaskExecutionInformation
,StartTaskInformation
, etc) - Improved documentation on
ocp-range
header format.
This version of the Batch .NET client library targets version 2016-07-01.3.1 of the Azure Batch REST API.
- Added
CommitChanges
method onCloudJob
,CloudJobSchedule
andCloudPool
, which use the HTTP PATCH verb to perform partial updates, which can be safer if multiple clients are making concurrent changes). - Added support for joining a
CloudPool
to a virtual network on using theNetworkConfiguration
property. - Added support for automatically terminating jobs when all tasks complete or when a task fails, via the
CloudJob.OnAllTasksComplete
andCloudJob.OnAllTasksFailure
properties, and theCloudTask.ExitConditions
property. - Added support for application package references on
CloudTask
andJobManagerTask
.
- Improved documentation across various classes in the
Microsoft.Azure.Batch
namespace as well as theMicrosoft.Azure.Batch.Protocol
namespaces. - Improved documentation for
AddTask
overload which takes a collection ofCloudTask
objects to include details about possible exceptions. - Improved documentation for the
WhenAll
/WaitAll
methods ofTaskStateMonitor
.
- Updated constructors for the following types to more clearly convey their required properties:
JobManagerTask
JobPreparationTask
JobReleaseTask
JobSpecification
StartTask
TaskStateMonitor
changes:- Removed previously Obsolete method
WaitAllAsync
. - Removed
WaitAll
which returnsTask<bool>
. - Renamed
WhenAllAsync
toWhenAll
. WhenAll
overloads now have a consistent return type.- Refactored existing methods to provide an overload which takes a
CancellationToken
, and an overload which takes a timeout. Removed the overload which takes both.
- Removed previously Obsolete method
This version of the Batch .NET client library targets version 2016-07-01.3.1 of the Azure Batch REST API.
- Fixed a bug where specifying a
DetailLevel
on a list operation would fail if the Batch service returned a list spanning multiple pages. - Fixed a bug where
TaskDependencies
andApplicationPackageSummary
could throw aNullReferenceException
if the Batch service returned a collection that was null. - Fixed a bug where
PoolOperations.ListNodeAgentSkus
andPoolOperations.ListPoolUsageMetrics
were missing support forDetailLevel
. - Updated
FileMode
comment to clarify that the default is0770
instead of0600
.
This version of the Batch .NET client library targets version 2016-02-01.3.0 of the Azure Batch REST API.
- Removed Hyak.Common dependency.
- Removed Microsoft.Azure.Common dependency.
- Added Microsoft.Rest.ClientRuntime.Azure dependency.
- Updated Azure.Storage 4.x to 6.x.
- Azure Batch now supports Linux compute nodes (you can see which Linux distributions and versions are supported by using the new
ListNodeAgentSkus
API). - New API
ListNodeAgentSkus
. - New API
GetRemoteLoginSettings
. ResourceFile
now has a propertyFileMode
which is used for Linux VM file download.- All node file deletion methods now take an optional recursive option (which can be used on directories).
- Properties can now be read on objects after they have been committed. An exception will be thrown if you attempt to write them though.
Refresh()
can now be called on objects after they have been added viaCommit()
.- Added a new namespace
Microsoft.Azure.Batch.Protocol.BatchRequests
which contains types defined for each type ofBatchRequest
. This is useful for writing interceptors. - Changed various properties which had a type of
IEnumerable
toIReadOnlyList
because they are explicitly read-only. - Changed
CloudJob.CommonEnvironmentSettings
type fromIEnumerable
toIList
.
- Fixed bug where
Enable
andDisable
scheduling APIs weren't correctly inheriting the behaviors of their parent objects. - Fixed bug in signing which breaks some requests issued with custom conditional headers such as If-Match.
- Fixed a few possible memory leaks.
- Changed the default exception thrown from all synchronous methods. Previously, all synchronous methods threw an
AggregateException
, which usually contained a single inner exception. Now that inner exception will be thrown directly and it will not be wrapped in an outerAggregateException
. - Changed
AddTask(IEnumerable<CloudTask>)
to always wrap exceptions from its many parallel REST requests in aParallelOperationsException
. Note that in some cases (such as when performing validation before issuing requests) this method can throw exceptions other than aParallelOperationsException
. - The
CloudPool
class has changed to support the creation and management of Linux pools based on the virtual machine compute infrastructure as well as Windows pools based on the Azure cloud services platform.- To configure pools based on Azure cloud services, use the
CloudPool.CloudServiceConfiguration
property. - To configure pools based on the virtual machines infrastructure (specifically Linux pools), use the
CloudPool.VirtualMachineConfiguration
property. - The
OSFamily
andTargetOSVersion
properties are no longer directly on the CloudPool type. These properties apply only to cloud service pools and are now on theCloudServiceConfiguration
type.
- To configure pools based on Azure cloud services, use the
- Enumerations
- Renamed
CertificateVisibility.RemoteDesktop
toCertificateVisibility.RemoteUser
. - Renamed
CertificateVisibility.Invalid
toCertificateVisibility.None
. - Removed
Unmapped
state for enumerations which the Batch service guarantees backwards compatibility with. - Removed
Invalid
state from all enums, as this is now represented by the nullability of the enum.
- Renamed
- Removed
ComputeNodeUser
constructor. Use theCreateComputeNodeUser
method of theComputeNode
orPoolOperations
classes instead. - Renamed
AutoScaleEvaluation
class toAutoScaleRun
, and removed propertyDataServiceId
. - Using a
DetailLevel
that is not supported by an operation now throws an exception (e.g. trying to useFilterClause
on an API that doesn't support it, or trying to useSelectClause
on an API that doesn't support it). - Renamed
AzureError
type toBatchError
. This should now be accessed on theBatchException
viaBatchException.RequestInformation.BatchError
. - Changed
AddTaskResult
:StatusCode
is now Status and is an enum instead of an int.ContentId
removed.DataServiceId
removed.
BatchClient.Open
andBatchClient.OpenAsync
now take aBatchServiceClient
object, not aBatchRestClient
object.- Made
AffinityInformation
read-only after construction. - Changed
TaskSchedulingPolicy.ComputeNodeFillType
to be non-nullable. - Removed
ReadAsStringAsync
optional Stream parameter. - Refactored the protocol namespace. It is now generated via the AutoRest tool (https://github.com/Azure/autorest).
- Removed the
BatchRequest
constructor which took aBatchRestClient
(it had been marked obsolete since Azure.Batch 3.0.0). - Significantly refactored
BatchRequest
. - Changed request interceptor types to reflect changes to
BatchRequest
. - Changed most types in this namespace to comply with the new underlying protocol layer generated by AutoRest.
- Removed the
- Removed
ResourceStatistics.DiskWriteIOps
setter. - Removed
TaskInformation.JobScheduleId
property.
This version of the Batch .NET client library targets version 2016-02-01.3.0 of the Azure Batch REST API.