From e56d4783ba46d58dbe432a9ae465f6a869b5118a Mon Sep 17 00:00:00 2001 From: Shaun Marx Date: Mon, 2 Dec 2019 13:00:26 +1000 Subject: [PATCH] Add runbook resource usage changes accounts and library variablesets (#485) * Add runbook resource usage changes for accounts and library variable sets * Update surface area approval files * Add RunbookSnapshotUsageEntry ProjectVariableSetUsage for account usages --- ...AreaShouldNotRegress..NETCore.approved.txt | 39 ++++++++++++++ ...houldNotRegress..NETFramework.approved.txt | 39 ++++++++++++++ .../Accounts/Usages/AccountUsageResource.cs | 53 +++++++++++++++---- .../Model/LibraryVariableSetResource.cs | 14 +++-- .../Repositories/Async/BasicRepository.cs | 2 - .../Repositories/BasicRepository.cs | 1 + 6 files changed, 134 insertions(+), 14 deletions(-) diff --git a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt index c4a152513..60c3eec89 100644 --- a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt +++ b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt @@ -3017,6 +3017,7 @@ Octopus.Client.Model String ProjectName { get; set; } String ProjectSlug { get; set; } ICollection Releases { get; set; } + List RunbookSnapshots { get; set; } } class LibraryVariableSetReleaseUsageEntry { @@ -3052,6 +3053,12 @@ Octopus.Client.Model Octopus.Client.Model.LibraryVariableSetResource AddOrUpdateVariableTemplate(String, String, IDictionary, String, String) Octopus.Client.Model.LibraryVariableSetResource Clear() } + class LibraryVariableSetRunbookSnapshotUsageEntry + { + .ctor() + String SnapshotId { get; set; } + String SnapshotName { get; set; } + } class LibraryVariableSetUsageResource Octopus.Client.Extensibility.IResource Octopus.Client.Model.IAuditedResource @@ -3060,6 +3067,7 @@ Octopus.Client.Model .ctor() Int32 CountOfProjectsUserCannotSee { get; set; } Int32 CountOfReleasesUserCannotSee { get; set; } + Int32 CountOfRunbookSnapshotsUserCannotSee { get; set; } ICollection Projects { get; set; } } abstract class LicenseKinds @@ -5364,6 +5372,8 @@ Octopus.Client.Model.Accounts.Usages ICollection LibraryVariableSets { get; set; } ICollection ProjectVariableSets { get; set; } ICollection Releases { get; set; } + ICollection RunbookProcesses { get; set; } + ICollection RunbookSnapshots { get; set; } ICollection Targets { get; set; } } class LibraryVariableSetUsageEntry @@ -5380,6 +5390,7 @@ Octopus.Client.Model.Accounts.Usages String ProjectName { get; set; } String ProjectSlug { get; set; } ICollection Releases { get; set; } + List RunbookSnapshots { get; set; } } class ReleaseUsage { @@ -5394,7 +5405,35 @@ Octopus.Client.Model.Accounts.Usages String ReleaseId { get; set; } String ReleaseVersion { get; set; } } + class RunbookSnapshotUsage + { + .ctor() + String ProjectId { get; set; } + String ProjectName { get; set; } + String RunbookId { get; set; } + String RunbookName { get; set; } + ICollection Snapshots { get; set; } + } + class RunbookSnapshotUsageEntry + { + .ctor() + String SnapshotId { get; set; } + String SnapshotName { get; set; } + } + class RunbookStepUsage + Octopus.Client.Model.Accounts.Usages.StepUsageBase + { + .ctor() + String ProcessId { get; set; } + String RunbookId { get; set; } + String RunbookName { get; set; } + } class StepUsage + Octopus.Client.Model.Accounts.Usages.StepUsageBase + { + .ctor() + } + class StepUsageBase { .ctor() String ProjectId { 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 54c0db2c2..95d314051 100644 --- a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETFramework.approved.txt +++ b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETFramework.approved.txt @@ -3033,6 +3033,7 @@ Octopus.Client.Model String ProjectName { get; set; } String ProjectSlug { get; set; } ICollection Releases { get; set; } + List RunbookSnapshots { get; set; } } class LibraryVariableSetReleaseUsageEntry { @@ -3068,6 +3069,12 @@ Octopus.Client.Model Octopus.Client.Model.LibraryVariableSetResource AddOrUpdateVariableTemplate(String, String, IDictionary, String, String) Octopus.Client.Model.LibraryVariableSetResource Clear() } + class LibraryVariableSetRunbookSnapshotUsageEntry + { + .ctor() + String SnapshotId { get; set; } + String SnapshotName { get; set; } + } class LibraryVariableSetUsageResource Octopus.Client.Extensibility.IResource Octopus.Client.Model.IAuditedResource @@ -3076,6 +3083,7 @@ Octopus.Client.Model .ctor() Int32 CountOfProjectsUserCannotSee { get; set; } Int32 CountOfReleasesUserCannotSee { get; set; } + Int32 CountOfRunbookSnapshotsUserCannotSee { get; set; } ICollection Projects { get; set; } } abstract class LicenseKinds @@ -5389,6 +5397,8 @@ Octopus.Client.Model.Accounts.Usages ICollection LibraryVariableSets { get; set; } ICollection ProjectVariableSets { get; set; } ICollection Releases { get; set; } + ICollection RunbookProcesses { get; set; } + ICollection RunbookSnapshots { get; set; } ICollection Targets { get; set; } } class LibraryVariableSetUsageEntry @@ -5405,6 +5415,7 @@ Octopus.Client.Model.Accounts.Usages String ProjectName { get; set; } String ProjectSlug { get; set; } ICollection Releases { get; set; } + List RunbookSnapshots { get; set; } } class ReleaseUsage { @@ -5419,7 +5430,35 @@ Octopus.Client.Model.Accounts.Usages String ReleaseId { get; set; } String ReleaseVersion { get; set; } } + class RunbookSnapshotUsage + { + .ctor() + String ProjectId { get; set; } + String ProjectName { get; set; } + String RunbookId { get; set; } + String RunbookName { get; set; } + ICollection Snapshots { get; set; } + } + class RunbookSnapshotUsageEntry + { + .ctor() + String SnapshotId { get; set; } + String SnapshotName { get; set; } + } + class RunbookStepUsage + Octopus.Client.Model.Accounts.Usages.StepUsageBase + { + .ctor() + String ProcessId { get; set; } + String RunbookId { get; set; } + String RunbookName { get; set; } + } class StepUsage + Octopus.Client.Model.Accounts.Usages.StepUsageBase + { + .ctor() + } + class StepUsageBase { .ctor() String ProjectId { get; set; } diff --git a/source/Octopus.Client/Model/Accounts/Usages/AccountUsageResource.cs b/source/Octopus.Client/Model/Accounts/Usages/AccountUsageResource.cs index 361427b0d..28ae596e7 100644 --- a/source/Octopus.Client/Model/Accounts/Usages/AccountUsageResource.cs +++ b/source/Octopus.Client/Model/Accounts/Usages/AccountUsageResource.cs @@ -12,6 +12,8 @@ public AccountUsageResource() Releases = new List(); ProjectVariableSets = new List(); LibraryVariableSets = new List(); + RunbookProcesses = new List(); + RunbookSnapshots = new List(); } public ICollection Targets { get; set; } @@ -19,6 +21,29 @@ public AccountUsageResource() public ICollection Releases { get; set; } public ICollection ProjectVariableSets { get; set; } public ICollection LibraryVariableSets { get; set; } + public ICollection RunbookProcesses { get; set; } + public ICollection RunbookSnapshots { get; set; } + } + + public class StepUsageBase + { + public StepUsageBase() + { + Steps = new List(); + } + + public string ProjectName { get; set; } + public string ProjectId { get; set; } + public string ProjectSlug { get; set; } + + public ICollection Steps { get; set; } + } + + public class RunbookStepUsage: StepUsageBase + { + public string ProcessId { get; set; } + public string RunbookId { get; set; } + public string RunbookName { get; set; } } public class TargetUsageEntry @@ -32,12 +57,14 @@ public class ProjectVariableSetUsage public ProjectVariableSetUsage() { Releases = new List(); + RunbookSnapshots = new List(); } public string ProjectSlug { get; set; } public string ProjectName { get; set; } public string ProjectId { get; set; } public ICollection Releases { get; set; } + public List RunbookSnapshots { get; set; } public bool IsCurrentlyBeingUsedInProject { get; set; } } @@ -65,23 +92,31 @@ public class ReleaseUsageEntry public string ReleaseVersion { get; set; } } - public class StepUsage + public class StepUsage: StepUsageBase { } + + public class StepUsageEntry + { + public string StepName { get; set; } + public string StepId { get; set; } + } + + public class RunbookSnapshotUsage { - public StepUsage() + public RunbookSnapshotUsage() { - Steps = new List(); + Snapshots = new List(); } + public string RunbookId { get; set; } + public string RunbookName { get; set; } public string ProjectName { get; set; } - public string ProjectSlug { get; set; } public string ProjectId { get; set; } - - public ICollection Steps { get; set; } + public ICollection Snapshots { get; set; } } - public class StepUsageEntry + public class RunbookSnapshotUsageEntry { - public string StepName { get; set; } - public string StepId { get; set; } + public string SnapshotId { get; set; } + public string SnapshotName { get; set; } } } diff --git a/source/Octopus.Client/Model/LibraryVariableSetResource.cs b/source/Octopus.Client/Model/LibraryVariableSetResource.cs index b8e28749e..9d2ad3119 100644 --- a/source/Octopus.Client/Model/LibraryVariableSetResource.cs +++ b/source/Octopus.Client/Model/LibraryVariableSetResource.cs @@ -106,7 +106,7 @@ public LibraryVariableSetResource AddOrUpdateSelectTemplate(string name, string public string SpaceId { get; set; } } - + public class LibraryVariableSetUsageResource : Resource { public LibraryVariableSetUsageResource() @@ -117,22 +117,30 @@ public LibraryVariableSetUsageResource() public ICollection Projects { get; set; } public int CountOfProjectsUserCannotSee { get; set; } public int CountOfReleasesUserCannotSee { get; set; } + public int CountOfRunbookSnapshotsUserCannotSee { get; set; } } - + public class LibraryVariableSetProjectUsage { public LibraryVariableSetProjectUsage() { Releases = new List(); + RunbookSnapshots = new List(); } - public string ProjectSlug { get; set; } public string ProjectName { get; set; } public string ProjectId { get; set; } + public List RunbookSnapshots { get; set; } public ICollection Releases { get; set; } public bool IsCurrentlyBeingUsedInProject { get; set; } } + public class LibraryVariableSetRunbookSnapshotUsageEntry + { + public string SnapshotId { get; set; } + public string SnapshotName { get; set; } + } + public class LibraryVariableSetReleaseUsageEntry { public string ReleaseId { get; set; } diff --git a/source/Octopus.Client/Repositories/Async/BasicRepository.cs b/source/Octopus.Client/Repositories/Async/BasicRepository.cs index ea824f6d5..5f3fe943f 100644 --- a/source/Octopus.Client/Repositories/Async/BasicRepository.cs +++ b/source/Octopus.Client/Repositories/Async/BasicRepository.cs @@ -74,9 +74,7 @@ private void AssertSpaceIdMatchesResource(TResource resource) protected async void ThrowIfServerVersionIsNotCompatible() { if (!hasMinimumRequiredVersion) return; - var currentServerVersion = SemanticVersion.Parse((await Repository.LoadRootDocument()).Version); - if (currentServerVersion < minimumRequiredVersion) { throw new NotSupportedException( diff --git a/source/Octopus.Client/Repositories/BasicRepository.cs b/source/Octopus.Client/Repositories/BasicRepository.cs index b55529d08..f7abf43db 100644 --- a/source/Octopus.Client/Repositories/BasicRepository.cs +++ b/source/Octopus.Client/Repositories/BasicRepository.cs @@ -65,6 +65,7 @@ protected void ThrowIfServerVersionIsNotCompatible() if (!hasMinimumRequiredVersion) return; var currentServerVersion = SemanticVersion.Parse(Repository.LoadRootDocument().Version); + if (currentServerVersion < minimumRequiredVersion) { throw new NotSupportedException(