Skip to content

Commit 1498397

Browse files
denys-octopusOctobob
authored andcommitted
Introduce Platform Hub Policy operations
OctopusDeploy/Issues#9924 +semver: feature GitOrigin-RevId: e238c6d0cc36b391ab0e0b33d41a7af35b5b5086
1 parent 6381683 commit 1498397

13 files changed

+542
-0
lines changed

source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,7 @@ Octopus.Client
271271
Octopus.Client.Repositories.Async.IMigrationRepository Migrations { get; }
272272
Octopus.Client.Repositories.Async.IOctopusServerNodeRepository OctopusServerNodes { get; }
273273
Octopus.Client.Repositories.Async.IPerformanceConfigurationRepository PerformanceConfiguration { get; }
274+
Octopus.Client.Repositories.Async.IPlatformHubPolicyRepository PlatformHubPolicies { get; }
274275
Octopus.Client.Repositories.Async.ISchedulerRepository Schedulers { get; }
275276
Octopus.Client.Repositories.Async.IServerStatusRepository ServerStatus { get; }
276277
Octopus.Client.Repositories.Async.ISpaceRepository Spaces { get; }
@@ -293,6 +294,7 @@ Octopus.Client
293294
Octopus.Client.Repositories.IMigrationRepository Migrations { get; }
294295
Octopus.Client.Repositories.IOctopusServerNodeRepository OctopusServerNodes { get; }
295296
Octopus.Client.Repositories.IPerformanceConfigurationRepository PerformanceConfiguration { get; }
297+
Octopus.Client.Repositories.IPlatformHubPolicyRepository PlatformHubPolicies { get; }
296298
Octopus.Client.Repositories.ISchedulerRepository Schedulers { get; }
297299
Octopus.Client.Repositories.IServerStatusRepository ServerStatus { get; }
298300
Octopus.Client.Repositories.ISpaceRepository Spaces { get; }
@@ -411,6 +413,7 @@ Octopus.Client
411413
Octopus.Client.Repositories.Async.IObservabilityRepository Observability { get; }
412414
Octopus.Client.Repositories.Async.IOctopusServerNodeRepository OctopusServerNodes { get; }
413415
Octopus.Client.Repositories.Async.IPerformanceConfigurationRepository PerformanceConfiguration { get; }
416+
Octopus.Client.Repositories.Async.IPlatformHubPolicyRepository PlatformHubPolicies { get; }
414417
Octopus.Client.Repositories.Async.IProjectGroupRepository ProjectGroups { get; }
415418
Octopus.Client.Repositories.Async.IProjectRepository Projects { get; }
416419
Octopus.Client.Repositories.Async.IProjectTriggerRepository ProjectTriggers { get; }
@@ -554,6 +557,7 @@ Octopus.Client
554557
Octopus.Client.Repositories.IObservabilityRepository Observability { get; }
555558
Octopus.Client.Repositories.IOctopusServerNodeRepository OctopusServerNodes { get; }
556559
Octopus.Client.Repositories.IPerformanceConfigurationRepository PerformanceConfiguration { get; }
560+
Octopus.Client.Repositories.IPlatformHubPolicyRepository PlatformHubPolicies { get; }
557561
Octopus.Client.Repositories.IProjectGroupRepository ProjectGroups { get; }
558562
Octopus.Client.Repositories.IProjectRepository Projects { get; }
559563
Octopus.Client.Repositories.IProjectTriggerRepository ProjectTriggers { get; }
@@ -2508,6 +2512,35 @@ Octopus.Client.Model
25082512
Boolean Equals(Octopus.Client.Model.UserPermissionRestriction, Octopus.Client.Model.UserPermissionRestriction)
25092513
Int32 GetHashCode(Octopus.Client.Model.UserPermissionRestriction)
25102514
}
2515+
class CompliancePolicyResource
2516+
{
2517+
.ctor(String, String)
2518+
String ConditionsRego { get; set; }
2519+
String Description { get; set; }
2520+
String GitRef { get; }
2521+
String Name { get; set; }
2522+
String ScopeRego { get; set; }
2523+
String Slug { get; }
2524+
String ViolationAction { get; set; }
2525+
String ViolationReason { get; set; }
2526+
}
2527+
class CompliancePolicyVersionResource
2528+
{
2529+
.ctor(String, String, String, DateTimeOffset, String, String, String, String, String, String, String, String, Boolean)
2530+
String Description { get; }
2531+
String GitCommit { get; }
2532+
String GitRef { get; }
2533+
String Id { get; }
2534+
Boolean IsActive { get; }
2535+
String Name { get; }
2536+
DateTimeOffset PublishedDate { get; }
2537+
String RegoConditions { get; }
2538+
String RegoScope { get; }
2539+
String Slug { get; }
2540+
String Version { get; }
2541+
String ViolationAction { get; }
2542+
String ViolationReason { get; }
2543+
}
25112544
class ConfigurationItemResource
25122545
Octopus.Client.Extensibility.IResource
25132546
Octopus.Client.Model.IAuditedResource
@@ -3307,6 +3340,37 @@ Octopus.Client.Model
33073340
.ctor()
33083341
String AccessToken { get; set; }
33093342
}
3343+
class GetCompliancePoliciesRequest
3344+
{
3345+
.ctor()
3346+
String GitRef { get; set; }
3347+
String PartialName { get; set; }
3348+
Nullable<Int32> Skip { get; set; }
3349+
Nullable<Int32> Take { get; set; }
3350+
}
3351+
class GetCompliancePoliciesResponse
3352+
{
3353+
.ctor()
3354+
Int32 FilteredItemsCount { get; set; }
3355+
Int32 ItemsPerPage { get; set; }
3356+
Octopus.Client.Model.CompliancePolicyResource[] Policies { get; set; }
3357+
Int32 TotalItemsCount { get; set; }
3358+
}
3359+
class GetCompliancePolicyVersionsRequest
3360+
{
3361+
.ctor()
3362+
Nullable<Int32> Skip { get; set; }
3363+
String Slug { get; set; }
3364+
Nullable<Int32> Take { get; set; }
3365+
}
3366+
class GetCompliancePolicyVersionsResponse
3367+
{
3368+
.ctor(String, Int32, Int32, Octopus.Client.Model.CompliancePolicyVersionResource[])
3369+
Octopus.Client.Model.CompliancePolicyVersionResource[] Items { get; }
3370+
Int32 ItemsPerPage { get; }
3371+
String ItemType { get; }
3372+
Int32 TotalResults { get; }
3373+
}
33103374
class GetMissingPackagesForReleaseRequest
33113375
{
33123376
.ctor()
@@ -9459,6 +9523,17 @@ Octopus.Client.Repositories
94599523
Octopus.Client.Model.PerformanceConfigurationResource Get()
94609524
Octopus.Client.Model.PerformanceConfigurationResource Modify(Octopus.Client.Model.PerformanceConfigurationResource)
94619525
}
9526+
interface IPlatformHubPolicyRepository
9527+
{
9528+
Octopus.Client.Model.CompliancePolicyVersionResource ActivateVersion(Octopus.Client.Model.CompliancePolicyVersionResource)
9529+
Octopus.Client.Model.CompliancePolicyResource Create(Octopus.Client.Model.CompliancePolicyResource, String)
9530+
Octopus.Client.Model.CompliancePolicyVersionResource DeactivateVersion(Octopus.Client.Model.CompliancePolicyVersionResource)
9531+
Octopus.Client.Model.GetCompliancePoliciesResponse Get(Octopus.Client.Model.GetCompliancePoliciesRequest)
9532+
Octopus.Client.Model.CompliancePolicyResource GetBySlug(String, String)
9533+
Octopus.Client.Model.GetCompliancePolicyVersionsResponse GetVersions(Octopus.Client.Model.GetCompliancePolicyVersionsRequest)
9534+
Octopus.Client.Model.CompliancePolicyResource Modify(Octopus.Client.Model.CompliancePolicyResource, String)
9535+
Octopus.Client.Model.CompliancePolicyVersionResource Publish(String, String, String)
9536+
}
94629537
interface IProjectGroupRepository
94639538
Octopus.Client.Repositories.IFindByName<ProjectGroupResource>
94649539
Octopus.Client.Repositories.IPaginate<ProjectGroupResource>
@@ -10322,6 +10397,17 @@ Octopus.Client.Repositories.Async
1032210397
Task<PerformanceConfigurationResource> Get()
1032310398
Task<PerformanceConfigurationResource> Modify(Octopus.Client.Model.PerformanceConfigurationResource)
1032410399
}
10400+
interface IPlatformHubPolicyRepository
10401+
{
10402+
Task<CompliancePolicyVersionResource> ActivateVersion(Octopus.Client.Model.CompliancePolicyVersionResource, CancellationToken)
10403+
Task<CompliancePolicyResource> Create(Octopus.Client.Model.CompliancePolicyResource, String, CancellationToken)
10404+
Task<CompliancePolicyVersionResource> DeactivateVersion(Octopus.Client.Model.CompliancePolicyVersionResource, CancellationToken)
10405+
Task<GetCompliancePoliciesResponse> Get(Octopus.Client.Model.GetCompliancePoliciesRequest, CancellationToken)
10406+
Task<CompliancePolicyResource> GetBySlug(String, String, CancellationToken)
10407+
Task<GetCompliancePolicyVersionsResponse> GetVersions(Octopus.Client.Model.GetCompliancePolicyVersionsRequest, CancellationToken)
10408+
Task<CompliancePolicyResource> Modify(Octopus.Client.Model.CompliancePolicyResource, String, CancellationToken)
10409+
Task<CompliancePolicyVersionResource> Publish(String, String, String, CancellationToken)
10410+
}
1032510411
interface IProjectBetaRepository
1032610412
{
1032710413
Task<ConvertProjectVariablesToGitResponse> MigrateVariablesToGit(Octopus.Client.Model.ProjectResource, String, String)

source/Octopus.Server.Client/IOctopusSystemAsyncRepository.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public interface IOctopusSystemAsyncRepository : IOctopusCommonAsyncRepository
2323
ILicensesRepository Licenses { get; }
2424
IOctopusServerNodeRepository OctopusServerNodes { get; }
2525
IPerformanceConfigurationRepository PerformanceConfiguration { get; }
26+
IPlatformHubPolicyRepository PlatformHubPolicies { get; }
2627
IServerStatusRepository ServerStatus { get; }
2728
ISpaceRepository Spaces { get; }
2829
IUserRepository Users { get; }

source/Octopus.Server.Client/IOctopusSystemRepository.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ public interface IOctopusSystemRepository : IOctopusCommonRepository
2020
ILicensesRepository Licenses { get; }
2121
IOctopusServerNodeRepository OctopusServerNodes { get; }
2222
IPerformanceConfigurationRepository PerformanceConfiguration { get; }
23+
IPlatformHubPolicyRepository PlatformHubPolicies { get; }
2324
IServerStatusRepository ServerStatus { get; }
2425
ISpaceRepository Spaces { get; }
2526
IUserRepository Users { get; }
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
using Octopus.Client.Extensibility.Attributes;
2+
3+
namespace Octopus.Client.Model;
4+
5+
public class CompliancePolicyResource
6+
{
7+
[WriteableOnCreate]
8+
public string GitRef { get; }
9+
10+
[WriteableOnCreate]
11+
public string Slug { get; }
12+
13+
[Writeable]
14+
public string Name { get; set; }
15+
16+
[Writeable]
17+
public string Description { get; set; }
18+
19+
[Writeable]
20+
public string ScopeRego { get; set; }
21+
22+
[Writeable]
23+
public string ConditionsRego { get; set; }
24+
25+
[Writeable]
26+
public string ViolationReason { get; set; }
27+
28+
[Writeable]
29+
public string ViolationAction { get; set; }
30+
31+
public CompliancePolicyResource(string gitRef, string slug)
32+
{
33+
GitRef = gitRef;
34+
Slug = slug;
35+
}
36+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
using System;
2+
3+
namespace Octopus.Client.Model;
4+
5+
public class CompliancePolicyVersionResource
6+
{
7+
public string Id { get; }
8+
public string Slug { get; }
9+
public string Version { get; }
10+
public DateTimeOffset PublishedDate { get; }
11+
public string GitRef { get; }
12+
public string GitCommit { get; }
13+
public string Name { get; }
14+
public string Description { get; }
15+
public string ViolationReason { get; }
16+
public string ViolationAction { get; }
17+
public string RegoScope { get; }
18+
public string RegoConditions { get; }
19+
public bool IsActive { get; }
20+
21+
public CompliancePolicyVersionResource(
22+
string id,
23+
string slug,
24+
string version,
25+
DateTimeOffset publishedDate,
26+
string gitRef,
27+
string gitCommit,
28+
string name,
29+
string description,
30+
string violationReason,
31+
string violationAction,
32+
string regoScope,
33+
string regoConditions,
34+
bool isActive)
35+
{
36+
Id = id;
37+
Slug = slug;
38+
Version = version;
39+
PublishedDate = publishedDate;
40+
GitRef = gitRef;
41+
GitCommit = gitCommit;
42+
Name = name;
43+
Description = description;
44+
ViolationReason = violationReason;
45+
ViolationAction = violationAction;
46+
RegoScope = regoScope;
47+
RegoConditions = regoConditions;
48+
IsActive = isActive;
49+
}
50+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace Octopus.Client.Model;
2+
3+
public class GetCompliancePoliciesRequest
4+
{
5+
public string GitRef { get; set; }
6+
public string PartialName { get; set; }
7+
public int? Skip { get; set; }
8+
public int? Take { get; set; }
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace Octopus.Client.Model;
2+
3+
public class GetCompliancePoliciesResponse
4+
{
5+
public CompliancePolicyResource[] Policies { get; set; }
6+
public int ItemsPerPage { get; set; }
7+
public int FilteredItemsCount { get; set; }
8+
public int TotalItemsCount { get; set; }
9+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
namespace Octopus.Client.Model;
2+
3+
public class GetCompliancePolicyVersionsRequest
4+
{
5+
public string Slug { get; set; }
6+
public int? Skip { get; set; }
7+
public int? Take { get; set; }
8+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
namespace Octopus.Client.Model;
2+
3+
public class GetCompliancePolicyVersionsResponse
4+
{
5+
public string ItemType { get; }
6+
public int TotalResults { get; }
7+
public int ItemsPerPage { get; }
8+
public CompliancePolicyVersionResource[] Items { get; }
9+
10+
public GetCompliancePolicyVersionsResponse(string itemType, int totalResults, int itemsPerPage, CompliancePolicyVersionResource[] items)
11+
{
12+
ItemType = itemType;
13+
TotalResults = totalResults;
14+
ItemsPerPage = itemsPerPage;
15+
Items = items;
16+
}
17+
}

source/Octopus.Server.Client/OctopusAsyncRepository.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ public OctopusAsyncRepository(IOctopusAsyncClient client, RepositoryScope reposi
9292
Observability = new ObservabilityRepository(this);
9393
OctopusServerNodes = new OctopusServerNodeRepository(this);
9494
PerformanceConfiguration = new PerformanceConfigurationRepository(this);
95+
PlatformHubPolicies = new PlatformHubPolicyRepository(client);
9596
ProjectGroups = new ProjectGroupRepository(this);
9697
Projects = new ProjectRepository(this);
9798
Runbooks = new RunbookRepository(this);
@@ -166,6 +167,7 @@ public OctopusAsyncRepository(IOctopusAsyncClient client, RepositoryScope reposi
166167
public IObservabilityRepository Observability { get; }
167168
public IOctopusServerNodeRepository OctopusServerNodes { get; }
168169
public IPerformanceConfigurationRepository PerformanceConfiguration { get; }
170+
public IPlatformHubPolicyRepository PlatformHubPolicies { get; }
169171
public IProjectGroupRepository ProjectGroups { get; }
170172
public IProjectRepository Projects { get; }
171173
public IRunbookRepository Runbooks { get; }

0 commit comments

Comments
 (0)