From 4f25925ca49f8bb412699cf0997691fea26e8000 Mon Sep 17 00:00:00 2001 From: David Wu <155603967+david-wu-octopus@users.noreply.github.com> Date: Thu, 18 Jul 2024 11:23:43 +1000 Subject: [PATCH 1/9] Add command, request, response and resource classes --- .../CreateDeploymentTargetTagCommand.cs | 20 +++++++++++ .../CreateDeploymentTargetTagResponse.cs | 12 +++++++ .../DeleteDeploymentTargetTagCommand.cs | 18 ++++++++++ .../DeleteDeploymentTargetTagResponse.cs | 6 ++++ .../GetDeploymentTargetTagByTagRequest.cs | 18 ++++++++++ .../GetDeploymentTargetTagByTagResponse.cs | 12 +++++++ .../GetDeploymentTargetTagsRequest.cs | 33 +++++++++++++++++++ .../GetDeploymentTargetTagsResponse.cs | 22 +++++++++++++ 8 files changed, 141 insertions(+) create mode 100644 source/Octopus.Server.Client/Model/DeploymentTargetTags/CreateDeploymentTargetTagCommand.cs create mode 100644 source/Octopus.Server.Client/Model/DeploymentTargetTags/CreateDeploymentTargetTagResponse.cs create mode 100644 source/Octopus.Server.Client/Model/DeploymentTargetTags/DeleteDeploymentTargetTagCommand.cs create mode 100644 source/Octopus.Server.Client/Model/DeploymentTargetTags/DeleteDeploymentTargetTagResponse.cs create mode 100644 source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagByTagRequest.cs create mode 100644 source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagByTagResponse.cs create mode 100644 source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagsRequest.cs create mode 100644 source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagsResponse.cs diff --git a/source/Octopus.Server.Client/Model/DeploymentTargetTags/CreateDeploymentTargetTagCommand.cs b/source/Octopus.Server.Client/Model/DeploymentTargetTags/CreateDeploymentTargetTagCommand.cs new file mode 100644 index 00000000..0036d9cb --- /dev/null +++ b/source/Octopus.Server.Client/Model/DeploymentTargetTags/CreateDeploymentTargetTagCommand.cs @@ -0,0 +1,20 @@ +using System.ComponentModel.DataAnnotations; + +namespace Octopus.Client.Model.DeploymentTargetTags; + +public class CreateDeploymentTargetTagCommand +{ + /// + /// The name or tag of the DeploymentTargetTag + /// + [Required(ErrorMessage = "Deployment Target Tag must have a name.")] + [MaxLength(200, ErrorMessage = "Tag must be 200 characters or less.")] + [MinLength(1, ErrorMessage = "Tag must be between 1 and 200 characters.")] + public string Tag { get; set; } + + /// + /// The ID of the space for the DeploymentTargetTag + /// + [Required] + public string SpaceId { get; set; } +} \ No newline at end of file diff --git a/source/Octopus.Server.Client/Model/DeploymentTargetTags/CreateDeploymentTargetTagResponse.cs b/source/Octopus.Server.Client/Model/DeploymentTargetTags/CreateDeploymentTargetTagResponse.cs new file mode 100644 index 00000000..b0c63496 --- /dev/null +++ b/source/Octopus.Server.Client/Model/DeploymentTargetTags/CreateDeploymentTargetTagResponse.cs @@ -0,0 +1,12 @@ +using System.ComponentModel.DataAnnotations; + +namespace Octopus.Client.Model.DeploymentTargetTags; + +public class CreateDeploymentTargetTagResponse +{ + [Required] + public string Tag { get; set; } + + [Required] + public string SpaceId { get; set; } +} \ No newline at end of file diff --git a/source/Octopus.Server.Client/Model/DeploymentTargetTags/DeleteDeploymentTargetTagCommand.cs b/source/Octopus.Server.Client/Model/DeploymentTargetTags/DeleteDeploymentTargetTagCommand.cs new file mode 100644 index 00000000..35f91f10 --- /dev/null +++ b/source/Octopus.Server.Client/Model/DeploymentTargetTags/DeleteDeploymentTargetTagCommand.cs @@ -0,0 +1,18 @@ +using System.ComponentModel.DataAnnotations; + +namespace Octopus.Client.Model.DeploymentTargetTags; + +public class DeleteDeploymentTargetTagCommand +{ + /// + /// The ID of the space containing the resource(s). + /// + [Required] + public string SpaceId { get; set; } = null!; + + /// + /// The Tag of the DeploymentTargetTag to delete. + /// + [Required] + public string Tag { get; set; } +} \ No newline at end of file diff --git a/source/Octopus.Server.Client/Model/DeploymentTargetTags/DeleteDeploymentTargetTagResponse.cs b/source/Octopus.Server.Client/Model/DeploymentTargetTags/DeleteDeploymentTargetTagResponse.cs new file mode 100644 index 00000000..4ddbdab4 --- /dev/null +++ b/source/Octopus.Server.Client/Model/DeploymentTargetTags/DeleteDeploymentTargetTagResponse.cs @@ -0,0 +1,6 @@ +namespace Octopus.Client.Model.DeploymentTargetTags; + +public class DeleteDeploymentTargetTagResponse +{ + +} \ No newline at end of file diff --git a/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagByTagRequest.cs b/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagByTagRequest.cs new file mode 100644 index 00000000..5bc1e9bc --- /dev/null +++ b/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagByTagRequest.cs @@ -0,0 +1,18 @@ +using System.ComponentModel.DataAnnotations; + +namespace Octopus.Client.Model.DeploymentTargetTags; + +public class GetDeploymentTargetTagByTagRequest +{ + /// + /// The ID of the space containing the resource(s). + /// + [Required] + public string SpaceId { get; set; } = null!; + + /// + /// ID or Slug of the DeploymentTargetTag + /// + [Required] + public string Tag { get; set; } +} \ No newline at end of file diff --git a/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagByTagResponse.cs b/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagByTagResponse.cs new file mode 100644 index 00000000..f64bfb05 --- /dev/null +++ b/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagByTagResponse.cs @@ -0,0 +1,12 @@ +using System.ComponentModel.DataAnnotations; + +namespace Octopus.Client.Model.DeploymentTargetTags; + +public class GetDeploymentTargetTagByTagResponse +{ + [Required] + public string Tag { get; set; } + + [Required] + public string SpaceId { get; set; } +} \ No newline at end of file diff --git a/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagsRequest.cs b/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagsRequest.cs new file mode 100644 index 00000000..e99645d5 --- /dev/null +++ b/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagsRequest.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using Octopus.Server.MessageContracts.Base.Attributes; + +namespace Octopus.Client.Model.DeploymentTargetTags; + +public class GetDeploymentTargetTagsRequest +{ + /// + /// The ID of the Space to which the DeploymentTargetTags belong. + /// + [Required] + public string SpaceId { get; set; } + + /// + /// The DeploymentTargetTag IDs to filter by. + /// + [Optional] + public IReadOnlyCollection Tags { get; set; } = Array.Empty(); + + /// + /// The Machine ID to filter by. + /// + [Optional] + public IReadOnlyCollection MachineIds { get; set; } = Array.Empty(); + + [Optional] + public int? Skip { get; set; } + + [Optional] + public int? Take { get; set; } +} \ No newline at end of file diff --git a/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagsResponse.cs b/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagsResponse.cs new file mode 100644 index 00000000..8aef51f8 --- /dev/null +++ b/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagsResponse.cs @@ -0,0 +1,22 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; + +namespace Octopus.Client.Model.DeploymentTargetTags; + +public class GetDeploymentTargetTagsResponse +{ + [Required] + public IReadOnlyCollection DeploymentTargetTags { get; set; } + + [Required] + public int Count { get; set; } +} + +public class DeploymentTargetTagResource +{ + [Required] + public string Tag { get; protected set; } + + [Required] + public string SpaceId { get; protected set; } +} \ No newline at end of file From 6df1753c48829075554418c5ea919d336f738552 Mon Sep 17 00:00:00 2001 From: David Wu <155603967+david-wu-octopus@users.noreply.github.com> Date: Thu, 18 Jul 2024 11:45:02 +1000 Subject: [PATCH 2/9] Add class `DeploymentTargetTagsRepository` --- .../DeploymentTargetTagsRepository.cs | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 source/Octopus.Server.Client/Repositories/DeploymentTargetTagsRepository.cs diff --git a/source/Octopus.Server.Client/Repositories/DeploymentTargetTagsRepository.cs b/source/Octopus.Server.Client/Repositories/DeploymentTargetTagsRepository.cs new file mode 100644 index 00000000..ed2b0f45 --- /dev/null +++ b/source/Octopus.Server.Client/Repositories/DeploymentTargetTagsRepository.cs @@ -0,0 +1,45 @@ +using Octopus.Client.Model.DeploymentTargetTags; + +namespace Octopus.Client.Repositories; + +public interface IDeploymentTargetTagsRepository +{ + CreateDeploymentTargetTagResponse Create(CreateDeploymentTargetTagCommand command); + + DeleteDeploymentTargetTagResponse Delete(DeleteDeploymentTargetTagCommand command); + + GetDeploymentTargetTagByTagResponse Get(GetDeploymentTargetTagByTagResponse request); + + GetDeploymentTargetTagsResponse Get(GetDeploymentTargetTagsRequest request); +} + +public class DeploymentTargetTagsRepository(IOctopusClient client) : IDeploymentTargetTagsRepository +{ + public CreateDeploymentTargetTagResponse Create(CreateDeploymentTargetTagCommand command) + { + var link = client.Repository.Link("DeploymentTargetTags"); + + return client.Create(link, command); + } + + public DeleteDeploymentTargetTagResponse Delete(DeleteDeploymentTargetTagCommand command) + { + var link = client.Repository.Link("DeploymentTargetTags"); + + return client.Delete(link, command); + } + + public GetDeploymentTargetTagByTagResponse Get(GetDeploymentTargetTagByTagResponse request) + { + var link = client.Repository.Link("DeploymentTargetTags"); + + return client.Get(link, request); + } + + public GetDeploymentTargetTagsResponse Get(GetDeploymentTargetTagsRequest request) + { + var link = client.Repository.Link("DeploymentTargetTags"); + + return client.Get(link, request); + } +} \ No newline at end of file From 27dd999368197cd4ddc532ddd3abe0ec215ed0b4 Mon Sep 17 00:00:00 2001 From: David Wu <155603967+david-wu-octopus@users.noreply.github.com> Date: Thu, 18 Jul 2024 11:54:30 +1000 Subject: [PATCH 3/9] Add class async `DeploymentTargetTagsRepository` --- .../Async/DeploymentTargetTagsRepository.cs | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 source/Octopus.Server.Client/Repositories/Async/DeploymentTargetTagsRepository.cs diff --git a/source/Octopus.Server.Client/Repositories/Async/DeploymentTargetTagsRepository.cs b/source/Octopus.Server.Client/Repositories/Async/DeploymentTargetTagsRepository.cs new file mode 100644 index 00000000..73148e0b --- /dev/null +++ b/source/Octopus.Server.Client/Repositories/Async/DeploymentTargetTagsRepository.cs @@ -0,0 +1,55 @@ +using System.Threading; +using System.Threading.Tasks; +using Octopus.Client.Model.DeploymentTargetTags; + +namespace Octopus.Client.Repositories.Async; + +public interface IDeploymentTargetTagsRepository +{ + Task Create(CreateDeploymentTargetTagCommand command, + CancellationToken cancellationToken); + + Task Delete(DeleteDeploymentTargetTagCommand command, + CancellationToken cancellationToken); + + Task Get(GetDeploymentTargetTagByTagResponse request, + CancellationToken cancellationToken); + + Task Get(GetDeploymentTargetTagsRequest request, + CancellationToken cancellationToken); +} + +public class DeploymentTargetTagsRepository(IOctopusAsyncClient client) : IDeploymentTargetTagsRepository +{ + public async Task Create(CreateDeploymentTargetTagCommand command, + CancellationToken cancellationToken) + { + var link = await client.Repository.Link("DeploymentTargetTags"); + + return await client.Create(link, command, null, cancellationToken); + } + + public async Task Delete(DeleteDeploymentTargetTagCommand command, + CancellationToken cancellationToken) + { + var link = await client.Repository.Link("DeploymentTargetTags"); + + return await client.Delete(link, command, cancellationToken); + } + + public async Task Get(GetDeploymentTargetTagByTagResponse request, + CancellationToken cancellationToken) + { + var link = await client.Repository.Link("DeploymentTargetTags"); + + return await client.Get(link, request, cancellationToken); + } + + public async Task Get(GetDeploymentTargetTagsRequest request, + CancellationToken cancellationToken) + { + var link = await client.Repository.Link("DeploymentTargetTags"); + + return await client.Get(link, request, cancellationToken); + } +} \ No newline at end of file From ee61c3ef4d667f21863ed81b37a699e56784e859 Mon Sep 17 00:00:00 2001 From: David Wu <155603967+david-wu-octopus@users.noreply.github.com> Date: Thu, 18 Jul 2024 12:16:20 +1000 Subject: [PATCH 4/9] Update repository classes and interfaces --- source/Octopus.Server.Client/IOctopusSpaceAsyncRepository.cs | 1 + source/Octopus.Server.Client/IOctopusSpaceRepository.cs | 1 + source/Octopus.Server.Client/OctopusAsyncRepository.cs | 2 ++ source/Octopus.Server.Client/OctopusRepository.cs | 2 ++ 4 files changed, 6 insertions(+) diff --git a/source/Octopus.Server.Client/IOctopusSpaceAsyncRepository.cs b/source/Octopus.Server.Client/IOctopusSpaceAsyncRepository.cs index b432b6c7..0bf496ab 100644 --- a/source/Octopus.Server.Client/IOctopusSpaceAsyncRepository.cs +++ b/source/Octopus.Server.Client/IOctopusSpaceAsyncRepository.cs @@ -50,6 +50,7 @@ public interface IOctopusSpaceAsyncRepository: IOctopusCommonAsyncRepository IVariableSetRepository VariableSets { get; } IWorkerPoolRepository WorkerPools { get; } IWorkerRepository Workers { get; } + IDeploymentTargetTagsRepository DeploymentTargetTags { get; } Task LoadSpaceRootDocument(); } } \ No newline at end of file diff --git a/source/Octopus.Server.Client/IOctopusSpaceRepository.cs b/source/Octopus.Server.Client/IOctopusSpaceRepository.cs index b8272f8f..829bc4f5 100644 --- a/source/Octopus.Server.Client/IOctopusSpaceRepository.cs +++ b/source/Octopus.Server.Client/IOctopusSpaceRepository.cs @@ -49,6 +49,7 @@ public interface IOctopusSpaceRepository: IOctopusCommonRepository IVariableSetRepository VariableSets { get; } IWorkerPoolRepository WorkerPools { get; } IWorkerRepository Workers { get; } + IDeploymentTargetTagsRepository DeploymentTargetTags { get; } SpaceRootResource LoadSpaceRootDocument(); } } diff --git a/source/Octopus.Server.Client/OctopusAsyncRepository.cs b/source/Octopus.Server.Client/OctopusAsyncRepository.cs index efc77daf..b77504b9 100644 --- a/source/Octopus.Server.Client/OctopusAsyncRepository.cs +++ b/source/Octopus.Server.Client/OctopusAsyncRepository.cs @@ -123,6 +123,7 @@ public OctopusAsyncRepository(IOctopusAsyncClient client, RepositoryScope reposi loadRootResource = new AsyncLazy(LoadRootDocumentInner); loadSpaceRootResource = new Lazy>(LoadSpaceRootDocumentInner, true); DeploymentFreezes = new DeploymentFreezeRepository(client); + DeploymentTargetTags = new DeploymentTargetTagsRepository(client); } @@ -192,6 +193,7 @@ public OctopusAsyncRepository(IOctopusAsyncClient client, RepositoryScope reposi public IUpgradeConfigurationRepository UpgradeConfiguration { get; } public ITelemetryConfigurationRepository TelemetryConfigurationRepository { get; } public IDeploymentFreezeRepository DeploymentFreezes { get; } + public IDeploymentTargetTagsRepository DeploymentTargetTags { get; } public async Task HasLink(string name) { diff --git a/source/Octopus.Server.Client/OctopusRepository.cs b/source/Octopus.Server.Client/OctopusRepository.cs index 6d011de1..2544410e 100644 --- a/source/Octopus.Server.Client/OctopusRepository.cs +++ b/source/Octopus.Server.Client/OctopusRepository.cs @@ -118,6 +118,7 @@ public OctopusRepository(IOctopusClient client, RepositoryScope repositoryScope loadRootResource = new Lazy(LoadRootDocumentInner, true); loadSpaceRootResource = new Lazy(LoadSpaceRootDocumentInner, true); DeploymentFreezes = new DeploymentFreezeRepository(client); + DeploymentTargetTags = new DeploymentTargetTagsRepository(client); } public IOctopusClient Client { get; } @@ -185,6 +186,7 @@ public OctopusRepository(IOctopusClient client, RepositoryScope repositoryScope public IUpgradeConfigurationRepository UpgradeConfiguration { get; } public ITelemetryConfigurationRepository TelemetryConfigurationRepository { get; } public IDeploymentFreezeRepository DeploymentFreezes { get; } + public IDeploymentTargetTagsRepository DeploymentTargetTags { get; } public bool HasLink(string name) { From f4f0f812d5427e2831164c27edd0c7410d9f80ba Mon Sep 17 00:00:00 2001 From: David Wu <155603967+david-wu-octopus@users.noreply.github.com> Date: Thu, 18 Jul 2024 14:10:31 +1000 Subject: [PATCH 5/9] Update PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt --- ...AreaShouldNotRegress..NETCore.approved.txt | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt index 7e3403cf..490f2c36 100644 --- a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt +++ b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt @@ -185,6 +185,7 @@ Octopus.Client Octopus.Client.Repositories.Async.IDeploymentProcessRepository DeploymentProcesses { get; } Octopus.Client.Repositories.Async.IDeploymentRepository Deployments { get; } Octopus.Client.Repositories.Async.IDeploymentSettingsRepository DeploymentSettings { get; } + Octopus.Client.Repositories.Async.IDeploymentTargetTagsRepository DeploymentTargetTags { get; } Octopus.Client.Repositories.Async.IEnvironmentRepository Environments { get; } Octopus.Client.Repositories.Async.IFeedRepository Feeds { get; } Octopus.Client.Repositories.Async.IGitCredentialRepository GitCredentials { get; } @@ -230,6 +231,7 @@ Octopus.Client Octopus.Client.Repositories.IDeploymentProcessRepository DeploymentProcesses { get; } Octopus.Client.Repositories.IDeploymentRepository Deployments { get; } Octopus.Client.Repositories.IDeploymentSettingsRepository DeploymentSettings { get; } + Octopus.Client.Repositories.IDeploymentTargetTagsRepository DeploymentTargetTags { get; } Octopus.Client.Repositories.IEnvironmentRepository Environments { get; } Octopus.Client.Repositories.IFeedRepository Feeds { get; } Octopus.Client.Repositories.IInterruptionRepository Interruptions { get; } @@ -394,6 +396,7 @@ Octopus.Client Octopus.Client.Repositories.Async.IDeploymentProcessRepository DeploymentProcesses { get; } Octopus.Client.Repositories.Async.IDeploymentRepository Deployments { get; } Octopus.Client.Repositories.Async.IDeploymentSettingsRepository DeploymentSettings { get; } + Octopus.Client.Repositories.Async.IDeploymentTargetTagsRepository DeploymentTargetTags { get; } Octopus.Client.Repositories.Async.IEnvironmentRepository Environments { get; } Octopus.Client.Repositories.Async.IEventRepository Events { get; } Octopus.Client.Repositories.Async.IFeaturesConfigurationRepository FeaturesConfiguration { get; } @@ -537,6 +540,7 @@ Octopus.Client Octopus.Client.Repositories.IDeploymentProcessRepository DeploymentProcesses { get; } Octopus.Client.Repositories.IDeploymentRepository Deployments { get; } Octopus.Client.Repositories.IDeploymentSettingsRepository DeploymentSettings { get; } + Octopus.Client.Repositories.IDeploymentTargetTagsRepository DeploymentTargetTags { get; } Octopus.Client.Repositories.IEnvironmentRepository Environments { get; } Octopus.Client.Repositories.IEventRepository Events { get; } Octopus.Client.Repositories.IFeaturesConfigurationRepository FeaturesConfiguration { get; } @@ -6673,6 +6677,64 @@ Octopus.Client.Model.DeploymentTargets RunbookRun = 1 } } +Octopus.Client.Model.DeploymentTargetTags +{ + class CreateDeploymentTargetTagCommand + { + .ctor() + String SpaceId { get; set; } + String Tag { get; set; } + } + class CreateDeploymentTargetTagResponse + { + .ctor() + String SpaceId { get; set; } + String Tag { get; set; } + } + class DeleteDeploymentTargetTagCommand + { + .ctor() + String SpaceId { get; set; } + String Tag { get; set; } + } + class DeleteDeploymentTargetTagResponse + { + .ctor() + } + class DeploymentTargetTagResource + { + .ctor() + String SpaceId { get; } + String Tag { get; } + } + class GetDeploymentTargetTagByTagRequest + { + .ctor() + String SpaceId { get; set; } + String Tag { get; set; } + } + class GetDeploymentTargetTagByTagResponse + { + .ctor() + String SpaceId { get; set; } + String Tag { get; set; } + } + class GetDeploymentTargetTagsRequest + { + .ctor() + IReadOnlyCollection MachineIds { get; set; } + Nullable Skip { get; set; } + String SpaceId { get; set; } + IReadOnlyCollection Tags { get; set; } + Nullable Take { get; set; } + } + class GetDeploymentTargetTagsResponse + { + .ctor() + Int32 Count { get; set; } + IReadOnlyCollection DeploymentTargetTags { get; set; } + } +} Octopus.Client.Model.Endpoints { AzureServiceFabricCredentialType @@ -7794,6 +7856,15 @@ Octopus.Client.Repositories Octopus.Client.Model.DeploymentFreezes.GetDeploymentFreezesResponse Get(Octopus.Client.Model.DeploymentFreezes.GetDeploymentFreezesRequest) Octopus.Client.Model.DeploymentFreezes.ModifyDeploymentFreezeResponse Modify(Octopus.Client.Model.DeploymentFreezes.ModifyDeploymentFreezeCommand) } + class DeploymentTargetTagsRepository + Octopus.Client.Repositories.IDeploymentTargetTagsRepository + { + .ctor(Octopus.Client.IOctopusClient) + Octopus.Client.Model.DeploymentTargetTags.CreateDeploymentTargetTagResponse Create(Octopus.Client.Model.DeploymentTargetTags.CreateDeploymentTargetTagCommand) + Octopus.Client.Model.DeploymentTargetTags.DeleteDeploymentTargetTagResponse Delete(Octopus.Client.Model.DeploymentTargetTags.DeleteDeploymentTargetTagCommand) + Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagByTagResponse Get(Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagByTagResponse) + Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagsResponse Get(Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagsRequest) + } interface IAccountRepository Octopus.Client.Repositories.IResourceRepository Octopus.Client.Repositories.ICreate @@ -7986,6 +8057,13 @@ Octopus.Client.Repositories Octopus.Client.Model.DeploymentSettingsResource Modify(Octopus.Client.Model.DeploymentSettingsResource) Octopus.Client.Model.DeploymentSettingsResource Modify(Octopus.Client.Model.DeploymentSettingsResource, String) } + interface IDeploymentTargetTagsRepository + { + Octopus.Client.Model.DeploymentTargetTags.CreateDeploymentTargetTagResponse Create(Octopus.Client.Model.DeploymentTargetTags.CreateDeploymentTargetTagCommand) + Octopus.Client.Model.DeploymentTargetTags.DeleteDeploymentTargetTagResponse Delete(Octopus.Client.Model.DeploymentTargetTags.DeleteDeploymentTargetTagCommand) + Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagByTagResponse Get(Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagByTagResponse) + Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagsResponse Get(Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagsRequest) + } interface IEnvironmentRepository Octopus.Client.Repositories.IFindBySlug Octopus.Client.Repositories.IPaginate @@ -8547,6 +8625,15 @@ Octopus.Client.Repositories.Async Task Get(Octopus.Client.Model.DeploymentFreezes.GetDeploymentFreezesRequest, CancellationToken) Task Modify(Octopus.Client.Model.DeploymentFreezes.ModifyDeploymentFreezeCommand, CancellationToken) } + class DeploymentTargetTagsRepository + Octopus.Client.Repositories.Async.IDeploymentTargetTagsRepository + { + .ctor(Octopus.Client.IOctopusAsyncClient) + Task Create(Octopus.Client.Model.DeploymentTargetTags.CreateDeploymentTargetTagCommand, CancellationToken) + Task Delete(Octopus.Client.Model.DeploymentTargetTags.DeleteDeploymentTargetTagCommand, CancellationToken) + Task Get(Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagByTagResponse, CancellationToken) + Task Get(Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagsRequest, CancellationToken) + } interface IAccountRepository Octopus.Client.Repositories.Async.IResourceRepository Octopus.Client.Repositories.Async.ICreate @@ -8753,6 +8840,13 @@ Octopus.Client.Repositories.Async Task Modify(Octopus.Client.Model.DeploymentSettingsResource, String) Task Modify(Octopus.Client.Model.DeploymentSettingsResource, String, CancellationToken) } + interface IDeploymentTargetTagsRepository + { + Task Create(Octopus.Client.Model.DeploymentTargetTags.CreateDeploymentTargetTagCommand, CancellationToken) + Task Delete(Octopus.Client.Model.DeploymentTargetTags.DeleteDeploymentTargetTagCommand, CancellationToken) + Task Get(Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagByTagResponse, CancellationToken) + Task Get(Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagsRequest, CancellationToken) + } interface IEnvironmentRepository Octopus.Client.Repositories.Async.IFindBySlug Octopus.Client.Repositories.Async.IPaginate From da7c75f6613482122f863743fd19c60f7f04f176 Mon Sep 17 00:00:00 2001 From: David Wu <155603967+david-wu-octopus@users.noreply.github.com> Date: Thu, 18 Jul 2024 16:25:01 +1000 Subject: [PATCH 6/9] Update class `DeploymentTargetTagResource` to have public setters --- .../DeploymentTargetTags/GetDeploymentTargetTagsResponse.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagsResponse.cs b/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagsResponse.cs index 8aef51f8..f96b21b2 100644 --- a/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagsResponse.cs +++ b/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagsResponse.cs @@ -15,8 +15,8 @@ public class GetDeploymentTargetTagsResponse public class DeploymentTargetTagResource { [Required] - public string Tag { get; protected set; } + public string Tag { get; set; } [Required] - public string SpaceId { get; protected set; } + public string SpaceId { get; set; } } \ No newline at end of file From c418f1fe3e4daa8e1b94561c8541f922a67b6484 Mon Sep 17 00:00:00 2001 From: David Wu <155603967+david-wu-octopus@users.noreply.github.com> Date: Thu, 18 Jul 2024 16:36:15 +1000 Subject: [PATCH 7/9] Update `PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt` --- ...ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt index 490f2c36..6eaea030 100644 --- a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt +++ b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt @@ -6704,8 +6704,8 @@ Octopus.Client.Model.DeploymentTargetTags class DeploymentTargetTagResource { .ctor() - String SpaceId { get; } - String Tag { get; } + String SpaceId { get; set; } + String Tag { get; set; } } class GetDeploymentTargetTagByTagRequest { From 06353ae15c780fb5ce782f7f8ff645f15289d1f4 Mon Sep 17 00:00:00 2001 From: Egor Pavlikhin Date: Fri, 19 Jul 2024 11:04:13 +1000 Subject: [PATCH 8/9] Update test --- ...houldNotRegress..NETFramework.approved.txt | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETFramework.approved.txt b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETFramework.approved.txt index 274ccf7b..19d6d6df 100644 --- a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETFramework.approved.txt +++ b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETFramework.approved.txt @@ -185,6 +185,7 @@ Octopus.Client Octopus.Client.Repositories.Async.IDeploymentProcessRepository DeploymentProcesses { get; } Octopus.Client.Repositories.Async.IDeploymentRepository Deployments { get; } Octopus.Client.Repositories.Async.IDeploymentSettingsRepository DeploymentSettings { get; } + Octopus.Client.Repositories.Async.IDeploymentTargetTagsRepository DeploymentTargetTags { get; } Octopus.Client.Repositories.Async.IEnvironmentRepository Environments { get; } Octopus.Client.Repositories.Async.IFeedRepository Feeds { get; } Octopus.Client.Repositories.Async.IGitCredentialRepository GitCredentials { get; } @@ -230,6 +231,7 @@ Octopus.Client Octopus.Client.Repositories.IDeploymentProcessRepository DeploymentProcesses { get; } Octopus.Client.Repositories.IDeploymentRepository Deployments { get; } Octopus.Client.Repositories.IDeploymentSettingsRepository DeploymentSettings { get; } + Octopus.Client.Repositories.IDeploymentTargetTagsRepository DeploymentTargetTags { get; } Octopus.Client.Repositories.IEnvironmentRepository Environments { get; } Octopus.Client.Repositories.IFeedRepository Feeds { get; } Octopus.Client.Repositories.IInterruptionRepository Interruptions { get; } @@ -394,6 +396,7 @@ Octopus.Client Octopus.Client.Repositories.Async.IDeploymentProcessRepository DeploymentProcesses { get; } Octopus.Client.Repositories.Async.IDeploymentRepository Deployments { get; } Octopus.Client.Repositories.Async.IDeploymentSettingsRepository DeploymentSettings { get; } + Octopus.Client.Repositories.Async.IDeploymentTargetTagsRepository DeploymentTargetTags { get; } Octopus.Client.Repositories.Async.IEnvironmentRepository Environments { get; } Octopus.Client.Repositories.Async.IEventRepository Events { get; } Octopus.Client.Repositories.Async.IFeaturesConfigurationRepository FeaturesConfiguration { get; } @@ -535,6 +538,7 @@ Octopus.Client Octopus.Client.Repositories.IDeploymentProcessRepository DeploymentProcesses { get; } Octopus.Client.Repositories.IDeploymentRepository Deployments { get; } Octopus.Client.Repositories.IDeploymentSettingsRepository DeploymentSettings { get; } + Octopus.Client.Repositories.IDeploymentTargetTagsRepository DeploymentTargetTags { get; } Octopus.Client.Repositories.IEnvironmentRepository Environments { get; } Octopus.Client.Repositories.IEventRepository Events { get; } Octopus.Client.Repositories.IFeaturesConfigurationRepository FeaturesConfiguration { get; } @@ -6697,6 +6701,64 @@ Octopus.Client.Model.DeploymentTargets RunbookRun = 1 } } +Octopus.Client.Model.DeploymentTargetTags +{ + class CreateDeploymentTargetTagCommand + { + .ctor() + String SpaceId { get; set; } + String Tag { get; set; } + } + class CreateDeploymentTargetTagResponse + { + .ctor() + String SpaceId { get; set; } + String Tag { get; set; } + } + class DeleteDeploymentTargetTagCommand + { + .ctor() + String SpaceId { get; set; } + String Tag { get; set; } + } + class DeleteDeploymentTargetTagResponse + { + .ctor() + } + class DeploymentTargetTagResource + { + .ctor() + String SpaceId { get; set; } + String Tag { get; set; } + } + class GetDeploymentTargetTagByTagRequest + { + .ctor() + String SpaceId { get; set; } + String Tag { get; set; } + } + class GetDeploymentTargetTagByTagResponse + { + .ctor() + String SpaceId { get; set; } + String Tag { get; set; } + } + class GetDeploymentTargetTagsRequest + { + .ctor() + IReadOnlyCollection MachineIds { get; set; } + Nullable Skip { get; set; } + String SpaceId { get; set; } + IReadOnlyCollection Tags { get; set; } + Nullable Take { get; set; } + } + class GetDeploymentTargetTagsResponse + { + .ctor() + Int32 Count { get; set; } + IReadOnlyCollection DeploymentTargetTags { get; set; } + } +} Octopus.Client.Model.Endpoints { AzureServiceFabricCredentialType @@ -7819,6 +7881,15 @@ Octopus.Client.Repositories Octopus.Client.Model.DeploymentFreezes.GetDeploymentFreezesResponse Get(Octopus.Client.Model.DeploymentFreezes.GetDeploymentFreezesRequest) Octopus.Client.Model.DeploymentFreezes.ModifyDeploymentFreezeResponse Modify(Octopus.Client.Model.DeploymentFreezes.ModifyDeploymentFreezeCommand) } + class DeploymentTargetTagsRepository + Octopus.Client.Repositories.IDeploymentTargetTagsRepository + { + .ctor(Octopus.Client.IOctopusClient) + Octopus.Client.Model.DeploymentTargetTags.CreateDeploymentTargetTagResponse Create(Octopus.Client.Model.DeploymentTargetTags.CreateDeploymentTargetTagCommand) + Octopus.Client.Model.DeploymentTargetTags.DeleteDeploymentTargetTagResponse Delete(Octopus.Client.Model.DeploymentTargetTags.DeleteDeploymentTargetTagCommand) + Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagByTagResponse Get(Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagByTagResponse) + Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagsResponse Get(Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagsRequest) + } interface IAccountRepository Octopus.Client.Repositories.IResourceRepository Octopus.Client.Repositories.ICreate @@ -8011,6 +8082,13 @@ Octopus.Client.Repositories Octopus.Client.Model.DeploymentSettingsResource Modify(Octopus.Client.Model.DeploymentSettingsResource) Octopus.Client.Model.DeploymentSettingsResource Modify(Octopus.Client.Model.DeploymentSettingsResource, String) } + interface IDeploymentTargetTagsRepository + { + Octopus.Client.Model.DeploymentTargetTags.CreateDeploymentTargetTagResponse Create(Octopus.Client.Model.DeploymentTargetTags.CreateDeploymentTargetTagCommand) + Octopus.Client.Model.DeploymentTargetTags.DeleteDeploymentTargetTagResponse Delete(Octopus.Client.Model.DeploymentTargetTags.DeleteDeploymentTargetTagCommand) + Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagByTagResponse Get(Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagByTagResponse) + Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagsResponse Get(Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagsRequest) + } interface IEnvironmentRepository Octopus.Client.Repositories.IFindBySlug Octopus.Client.Repositories.IPaginate @@ -8572,6 +8650,15 @@ Octopus.Client.Repositories.Async Task Get(Octopus.Client.Model.DeploymentFreezes.GetDeploymentFreezesRequest, CancellationToken) Task Modify(Octopus.Client.Model.DeploymentFreezes.ModifyDeploymentFreezeCommand, CancellationToken) } + class DeploymentTargetTagsRepository + Octopus.Client.Repositories.Async.IDeploymentTargetTagsRepository + { + .ctor(Octopus.Client.IOctopusAsyncClient) + Task Create(Octopus.Client.Model.DeploymentTargetTags.CreateDeploymentTargetTagCommand, CancellationToken) + Task Delete(Octopus.Client.Model.DeploymentTargetTags.DeleteDeploymentTargetTagCommand, CancellationToken) + Task Get(Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagByTagResponse, CancellationToken) + Task Get(Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagsRequest, CancellationToken) + } interface IAccountRepository Octopus.Client.Repositories.Async.IResourceRepository Octopus.Client.Repositories.Async.ICreate @@ -8778,6 +8865,13 @@ Octopus.Client.Repositories.Async Task Modify(Octopus.Client.Model.DeploymentSettingsResource, String) Task Modify(Octopus.Client.Model.DeploymentSettingsResource, String, CancellationToken) } + interface IDeploymentTargetTagsRepository + { + Task Create(Octopus.Client.Model.DeploymentTargetTags.CreateDeploymentTargetTagCommand, CancellationToken) + Task Delete(Octopus.Client.Model.DeploymentTargetTags.DeleteDeploymentTargetTagCommand, CancellationToken) + Task Get(Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagByTagResponse, CancellationToken) + Task Get(Octopus.Client.Model.DeploymentTargetTags.GetDeploymentTargetTagsRequest, CancellationToken) + } interface IEnvironmentRepository Octopus.Client.Repositories.Async.IFindBySlug Octopus.Client.Repositories.Async.IPaginate From 3ac11a52e2de8b5aa3a9ad640dc94243a5177549 Mon Sep 17 00:00:00 2001 From: David Wu <155603967+david-wu-octopus@users.noreply.github.com> Date: Tue, 23 Jul 2024 10:11:44 +1000 Subject: [PATCH 9/9] Inherit from `IHaveSpaceResource` for command and request classes --- .../DeploymentTargetTags/CreateDeploymentTargetTagCommand.cs | 3 ++- .../DeploymentTargetTags/DeleteDeploymentTargetTagCommand.cs | 3 ++- .../DeploymentTargetTags/GetDeploymentTargetTagByTagRequest.cs | 3 ++- .../DeploymentTargetTags/GetDeploymentTargetTagsRequest.cs | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/source/Octopus.Server.Client/Model/DeploymentTargetTags/CreateDeploymentTargetTagCommand.cs b/source/Octopus.Server.Client/Model/DeploymentTargetTags/CreateDeploymentTargetTagCommand.cs index 0036d9cb..1df8d0e5 100644 --- a/source/Octopus.Server.Client/Model/DeploymentTargetTags/CreateDeploymentTargetTagCommand.cs +++ b/source/Octopus.Server.Client/Model/DeploymentTargetTags/CreateDeploymentTargetTagCommand.cs @@ -1,8 +1,9 @@ using System.ComponentModel.DataAnnotations; +using Octopus.Client.Extensibility; namespace Octopus.Client.Model.DeploymentTargetTags; -public class CreateDeploymentTargetTagCommand +public class CreateDeploymentTargetTagCommand : IHaveSpaceResource { /// /// The name or tag of the DeploymentTargetTag diff --git a/source/Octopus.Server.Client/Model/DeploymentTargetTags/DeleteDeploymentTargetTagCommand.cs b/source/Octopus.Server.Client/Model/DeploymentTargetTags/DeleteDeploymentTargetTagCommand.cs index 35f91f10..3832713c 100644 --- a/source/Octopus.Server.Client/Model/DeploymentTargetTags/DeleteDeploymentTargetTagCommand.cs +++ b/source/Octopus.Server.Client/Model/DeploymentTargetTags/DeleteDeploymentTargetTagCommand.cs @@ -1,8 +1,9 @@ using System.ComponentModel.DataAnnotations; +using Octopus.Client.Extensibility; namespace Octopus.Client.Model.DeploymentTargetTags; -public class DeleteDeploymentTargetTagCommand +public class DeleteDeploymentTargetTagCommand : IHaveSpaceResource { /// /// The ID of the space containing the resource(s). diff --git a/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagByTagRequest.cs b/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagByTagRequest.cs index 5bc1e9bc..63006b24 100644 --- a/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagByTagRequest.cs +++ b/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagByTagRequest.cs @@ -1,8 +1,9 @@ using System.ComponentModel.DataAnnotations; +using Octopus.Client.Extensibility; namespace Octopus.Client.Model.DeploymentTargetTags; -public class GetDeploymentTargetTagByTagRequest +public class GetDeploymentTargetTagByTagRequest : IHaveSpaceResource { /// /// The ID of the space containing the resource(s). diff --git a/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagsRequest.cs b/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagsRequest.cs index e99645d5..297cee13 100644 --- a/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagsRequest.cs +++ b/source/Octopus.Server.Client/Model/DeploymentTargetTags/GetDeploymentTargetTagsRequest.cs @@ -1,11 +1,12 @@ using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; +using Octopus.Client.Extensibility; using Octopus.Server.MessageContracts.Base.Attributes; namespace Octopus.Client.Model.DeploymentTargetTags; -public class GetDeploymentTargetTagsRequest +public class GetDeploymentTargetTagsRequest : IHaveSpaceResource { /// /// The ID of the Space to which the DeploymentTargetTags belong.