From 4d61eb4505ea1ceb8410d88ec7996a6152517a01 Mon Sep 17 00:00:00 2001 From: Shane Gill Date: Tue, 15 May 2018 10:15:12 +1000 Subject: [PATCH] Add heartbeat policy to nodes Relates to OctopusDeploy/Issues#4540 --- ...eAreaShouldNotRegress..NETCore.approved.txt | 18 ++++++++++++++++++ ...ShouldNotRegress..NETFramework.approved.txt | 18 ++++++++++++++++++ .../Model/OctopusServerNodeResource.cs | 16 ++++++++++++++++ 3 files changed, 52 insertions(+) diff --git a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt index 28f1827b5..1f8bc8689 100644 --- a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt +++ b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt @@ -1865,6 +1865,11 @@ Octopus.Client.Model FullHealthCheck = 0 ConnectionTest = 1 } + HeartbeatDeletionPolicy + { + NeverDelete = 0 + DeleteAfterOfflineTimeout = 1 + } interface IAuditedResource { String LastModifiedBy { get; set; } @@ -2247,6 +2252,18 @@ Octopus.Client.Model .ctor() Octopus.Client.Model.FeedType FeedType { get; } } + class OctopusServerNodeHeartbeatPolicy + { + static System.TimeSpan DefaultOfflineTimeout + .ctor() + Octopus.Client.Model.HeartbeatDeletionPolicy DeletionPolicy { get; set; } + TimeSpan OfflineTimeout { get; set; } + HeartbeatDeletionPolicy + { + NeverDelete = 0 + DeleteAfterOfflineTimeout = 1 + } + } class OctopusServerNodeResource Octopus.Client.Extensibility.IResource Octopus.Client.Model.IAuditedResource @@ -2254,6 +2271,7 @@ Octopus.Client.Model Octopus.Client.Model.Resource { .ctor() + Octopus.Client.Model.OctopusServerNodeHeartbeatPolicy HeartbeatPolicy { get; set; } Boolean IsInMaintenanceMode { get; set; } Boolean IsOffline { get; set; } String LastSeen { get; set; } diff --git a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETFramework.approved.txt b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETFramework.approved.txt index 59c3e5fc6..85ebe7a41 100644 --- a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETFramework.approved.txt +++ b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETFramework.approved.txt @@ -2342,6 +2342,11 @@ Octopus.Client.Model FullHealthCheck = 0 ConnectionTest = 1 } + HeartbeatDeletionPolicy + { + NeverDelete = 0 + DeleteAfterOfflineTimeout = 1 + } interface IAuditedResource { String LastModifiedBy { get; set; } @@ -2727,6 +2732,18 @@ Octopus.Client.Model .ctor() Octopus.Client.Model.FeedType FeedType { get; } } + class OctopusServerNodeHeartbeatPolicy + { + static System.TimeSpan DefaultOfflineTimeout + .ctor() + Octopus.Client.Model.HeartbeatDeletionPolicy DeletionPolicy { get; set; } + TimeSpan OfflineTimeout { get; set; } + HeartbeatDeletionPolicy + { + NeverDelete = 0 + DeleteAfterOfflineTimeout = 1 + } + } class OctopusServerNodeResource Octopus.Client.Extensibility.IResource Octopus.Client.Model.IAuditedResource @@ -2734,6 +2751,7 @@ Octopus.Client.Model Octopus.Client.Model.Resource { .ctor() + Octopus.Client.Model.OctopusServerNodeHeartbeatPolicy HeartbeatPolicy { get; set; } Boolean IsInMaintenanceMode { get; set; } Boolean IsOffline { get; set; } String LastSeen { get; set; } diff --git a/source/Octopus.Client/Model/OctopusServerNodeResource.cs b/source/Octopus.Client/Model/OctopusServerNodeResource.cs index a81e9e259..092e4dc22 100644 --- a/source/Octopus.Client/Model/OctopusServerNodeResource.cs +++ b/source/Octopus.Client/Model/OctopusServerNodeResource.cs @@ -4,6 +4,20 @@ namespace Octopus.Client.Model { + public class OctopusServerNodeHeartbeatPolicy + { + public static TimeSpan DefaultOfflineTimeout = TimeSpan.FromMinutes(30); + + public enum HeartbeatDeletionPolicy + { + NeverDelete, + DeleteAfterOfflineTimeout + } + + public HeartbeatDeletionPolicy DeletionPolicy { get; set; } = HeartbeatDeletionPolicy.NeverDelete; + public TimeSpan OfflineTimeout { get; set; } = DefaultOfflineTimeout; + } + public class OctopusServerNodeResource : Resource, INamedResource { public string Name { get; set; } @@ -14,5 +28,7 @@ public class OctopusServerNodeResource : Resource, INamedResource public int MaxConcurrentTasks { get; set; } [Writeable] public bool IsInMaintenanceMode { get; set; } + [Writeable] + public OctopusServerNodeHeartbeatPolicy HeartbeatPolicy { get; set; } } }