File: Resources\ServiceNodes\Swarm\RestartPolicy.cs
Web Access
Project: src\src\Aspire.Hosting.Docker\Aspire.Hosting.Docker.csproj (Aspire.Hosting.Docker)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using YamlDotNet.Serialization;
 
namespace Aspire.Hosting.Docker.Resources.ServiceNodes.Swarm;
 
/// <summary>
/// Defines the restart policy for a Docker service in a Swarm cluster.
/// </summary>
/// <remarks>
/// This class specifies the conditions, delay, maximum attempts, and time window
/// involved in restarting a Docker service container within a Swarm deployment.
/// </remarks>
[YamlSerializable]
public sealed class RestartPolicy
{
    /// <summary>
    /// Specifies the condition under which a service's container will be restarted.
    /// </summary>
    /// <remarks>
    /// This property determines the criteria for restarting a container. Possible values may include "none", "on-failure", or "any", which dictate when a restart should happen (e.g., never, only on failures, or always).
    /// </remarks>
    [YamlMember(Alias = "condition")]
    public string? Condition { get; set; }
 
    /// <summary>
    /// Specifies the delay duration between restart attempts of the service container.
    /// </summary>
    /// <remarks>
    /// The delay defines the time interval to wait before attempting to restart a service container
    /// after a failure. It is expressed as a time duration string (e.g., "5s" for 5 seconds).
    /// </remarks>
    [YamlMember(Alias = "delay")]
    public string? Delay { get; set; }
 
    /// <summary>
    /// Specifies the maximum number of restart attempts allowed for a container as part of the restart policy.
    /// </summary>
    /// <remarks>
    /// Defines the upper limit for how many times Docker will attempt to restart the container
    /// before giving up. If not set, the system default behavior or an unlimited restart attempts policy
    /// may be applied. This setting is useful for handling scenarios where a service is repeatedly failing
    /// and prevents infinite restart loops.
    /// </remarks>
    [YamlMember(Alias = "max_attempts")]
    public int? MaxAttempts { get; set; }
 
    /// <summary>
    /// Defines the time window for evaluating the restart conditions in a Docker service restart policy.
    /// </summary>
    /// <remarks>
    /// This property specifies the duration (e.g., in seconds or any supported time format) during which
    /// restart attempts are counted towards the maximum attempts allowed. If the service exits and restarts
    /// within this specified window, it contributes to the count of restart attempts under the restart policy.
    /// </remarks>
    [YamlMember(Alias = "window")]
    public string? Window { get; set; }
}