diff --git a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt index cc9ebd526..af0865d05 100644 --- a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt +++ b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETCore.approved.txt @@ -704,6 +704,13 @@ Octopus.Client.Editors { .ctor(Octopus.Client.Repositories.IAccountRepository) } + class AmazonWebServicesOidcAccountEditor + Octopus.Client.Editors.IResourceEditor + Octopus.Client.Editors.IResourceBuilder + Octopus.Client.Editors.AccountEditor + { + .ctor(Octopus.Client.Repositories.IAccountRepository) + } class AzureServicePrincipalAccountEditor Octopus.Client.Editors.IResourceEditor Octopus.Client.Editors.IResourceBuilder @@ -1051,6 +1058,13 @@ Octopus.Client.Editors.Async { .ctor(Octopus.Client.Repositories.Async.IAccountRepository) } + class AmazonWebServicesOidcAccountEditor + Octopus.Client.Editors.Async.IResourceEditor + Octopus.Client.Editors.Async.IResourceBuilder + Octopus.Client.Editors.Async.AccountEditor + { + .ctor(Octopus.Client.Repositories.Async.IAccountRepository) + } class AzureServicePrincipalAccountEditor Octopus.Client.Editors.Async.IResourceEditor Octopus.Client.Editors.Async.IResourceBuilder @@ -5888,8 +5902,9 @@ Octopus.Client.Model.Accounts AzureServicePrincipal = 4 AmazonWebServicesAccount = 5 AmazonWebServicesRoleAccount = 6 - Token = 7 - GoogleCloudAccount = 8 + AmazonWebServicesOidcAccount = 7 + Token = 8 + GoogleCloudAccount = 9 } class AmazonWebServicesAccountResource Octopus.Client.Extensibility.IResource @@ -5904,6 +5919,20 @@ Octopus.Client.Model.Accounts Octopus.Client.Model.Accounts.AccountType AccountType { get; } Octopus.Client.Model.SensitiveValue SecretKey { get; set; } } + class AmazonWebServicesOidcAccountResource + Octopus.Client.Extensibility.IResource + Octopus.Client.Model.IAuditedResource + Octopus.Client.Extensibility.INamedResource + Octopus.Client.Extensibility.IHaveSpaceResource + Octopus.Client.Model.IHaveSlugResource + Octopus.Client.Model.Accounts.AccountResource + { + .ctor() + Octopus.Client.Model.Accounts.AccountType AccountType { get; } + String Audience { get; set; } + String RoleArn { get; set; } + String SessionDuration { get; set; } + } class AzureServicePrincipalAccountResource Octopus.Client.Extensibility.IResource Octopus.Client.Model.IAuditedResource diff --git a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETFramework.approved.txt b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETFramework.approved.txt index ee92291fc..66a6b5b02 100644 --- a/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETFramework.approved.txt +++ b/source/Octopus.Client.Tests/PublicSurfaceAreaFixture.ThePublicSurfaceAreaShouldNotRegress..NETFramework.approved.txt @@ -705,6 +705,13 @@ Octopus.Client.Editors { .ctor(Octopus.Client.Repositories.IAccountRepository) } + class AmazonWebServicesOidcAccountEditor + Octopus.Client.Editors.IResourceEditor + Octopus.Client.Editors.IResourceBuilder + Octopus.Client.Editors.AccountEditor + { + .ctor(Octopus.Client.Repositories.IAccountRepository) + } class AzureServicePrincipalAccountEditor Octopus.Client.Editors.IResourceEditor Octopus.Client.Editors.IResourceBuilder @@ -1052,6 +1059,13 @@ Octopus.Client.Editors.Async { .ctor(Octopus.Client.Repositories.Async.IAccountRepository) } + class AmazonWebServicesOidcAccountEditor + Octopus.Client.Editors.Async.IResourceEditor + Octopus.Client.Editors.Async.IResourceBuilder + Octopus.Client.Editors.Async.AccountEditor + { + .ctor(Octopus.Client.Repositories.Async.IAccountRepository) + } class AzureServicePrincipalAccountEditor Octopus.Client.Editors.Async.IResourceEditor Octopus.Client.Editors.Async.IResourceBuilder @@ -5911,8 +5925,9 @@ Octopus.Client.Model.Accounts AzureServicePrincipal = 4 AmazonWebServicesAccount = 5 AmazonWebServicesRoleAccount = 6 - Token = 7 - GoogleCloudAccount = 8 + AmazonWebServicesOidcAccount = 7 + Token = 8 + GoogleCloudAccount = 9 } class AmazonWebServicesAccountResource Octopus.Client.Extensibility.IResource @@ -5927,6 +5942,20 @@ Octopus.Client.Model.Accounts Octopus.Client.Model.Accounts.AccountType AccountType { get; } Octopus.Client.Model.SensitiveValue SecretKey { get; set; } } + class AmazonWebServicesOidcAccountResource + Octopus.Client.Extensibility.IResource + Octopus.Client.Model.IAuditedResource + Octopus.Client.Extensibility.INamedResource + Octopus.Client.Extensibility.IHaveSpaceResource + Octopus.Client.Model.IHaveSlugResource + Octopus.Client.Model.Accounts.AccountResource + { + .ctor() + Octopus.Client.Model.Accounts.AccountType AccountType { get; } + String Audience { get; set; } + String RoleArn { get; set; } + String SessionDuration { get; set; } + } class AzureServicePrincipalAccountResource Octopus.Client.Extensibility.IResource Octopus.Client.Model.IAuditedResource diff --git a/source/Octopus.Server.Client/Editors/AmazonWebServicesOidcAccountEditor.cs b/source/Octopus.Server.Client/Editors/AmazonWebServicesOidcAccountEditor.cs new file mode 100644 index 000000000..68eea3125 --- /dev/null +++ b/source/Octopus.Server.Client/Editors/AmazonWebServicesOidcAccountEditor.cs @@ -0,0 +1,12 @@ +using Octopus.Client.Model.Accounts; +using Octopus.Client.Repositories; + +namespace Octopus.Client.Editors +{ + public class AmazonWebServicesOidcAccountEditor : AccountEditor + { + public AmazonWebServicesOidcAccountEditor(IAccountRepository repository) : base(repository) + { + } + } +} \ No newline at end of file diff --git a/source/Octopus.Server.Client/Editors/Async/AmazonWebServicesOidcAccountEditor.cs b/source/Octopus.Server.Client/Editors/Async/AmazonWebServicesOidcAccountEditor.cs new file mode 100644 index 000000000..464f82b14 --- /dev/null +++ b/source/Octopus.Server.Client/Editors/Async/AmazonWebServicesOidcAccountEditor.cs @@ -0,0 +1,12 @@ +using Octopus.Client.Model.Accounts; +using Octopus.Client.Repositories.Async; + +namespace Octopus.Client.Editors.Async +{ + public class AmazonWebServicesOidcAccountEditor : AccountEditor + { + public AmazonWebServicesOidcAccountEditor(IAccountRepository repository) : base(repository) + { + } + } +} \ No newline at end of file diff --git a/source/Octopus.Server.Client/Extensions/TypeExtensions.cs b/source/Octopus.Server.Client/Extensions/TypeExtensions.cs index 61f6f3085..d1d981c11 100644 --- a/source/Octopus.Server.Client/Extensions/TypeExtensions.cs +++ b/source/Octopus.Server.Client/Extensions/TypeExtensions.cs @@ -24,6 +24,8 @@ public static AccountType DetermineAccountType(this Type type) accountType = AccountType.AzureSubscription; else if (type == typeof(AmazonWebServicesAccountResource)) accountType = AccountType.AmazonWebServicesAccount; + else if (type == typeof(AmazonWebServicesOidcAccountResource)) + accountType = AccountType.AmazonWebServicesOidcAccount; else if (type == typeof(TokenAccountResource)) accountType = AccountType.Token; else if (type == typeof(GoogleCloudAccountResource)) diff --git a/source/Octopus.Server.Client/Model/Accounts/AccountType.cs b/source/Octopus.Server.Client/Model/Accounts/AccountType.cs index 044279196..bafb9fa70 100644 --- a/source/Octopus.Server.Client/Model/Accounts/AccountType.cs +++ b/source/Octopus.Server.Client/Model/Accounts/AccountType.cs @@ -11,6 +11,7 @@ public enum AccountType AzureServicePrincipal, AmazonWebServicesAccount, AmazonWebServicesRoleAccount, + AmazonWebServicesOidcAccount, Token, GoogleCloudAccount, } diff --git a/source/Octopus.Server.Client/Model/Accounts/AmazonWebServicesOidcAccountResource.cs b/source/Octopus.Server.Client/Model/Accounts/AmazonWebServicesOidcAccountResource.cs new file mode 100644 index 000000000..a6c429ed6 --- /dev/null +++ b/source/Octopus.Server.Client/Model/Accounts/AmazonWebServicesOidcAccountResource.cs @@ -0,0 +1,24 @@ +using System.ComponentModel.DataAnnotations; +using Octopus.Client.Extensibility.Attributes; + +namespace Octopus.Client.Model.Accounts +{ + public class AmazonWebServicesOidcAccountResource : AccountResource + { + public override AccountType AccountType => AccountType.AmazonWebServicesOidcAccount; + + [Trim] + [Writeable] + public string RoleArn { get; set; } + + [Trim] + [Writeable] + [Required] + public string SessionDuration { get; set; } + + [Trim] + [Writeable] + [Required] + public string Audience { get; set; } + } +} \ No newline at end of file diff --git a/source/Octopus.Server.Client/Serialization/AccountConverter.cs b/source/Octopus.Server.Client/Serialization/AccountConverter.cs index 4b0cfbda5..3d4d1ab28 100644 --- a/source/Octopus.Server.Client/Serialization/AccountConverter.cs +++ b/source/Octopus.Server.Client/Serialization/AccountConverter.cs @@ -14,6 +14,7 @@ public class AccountConverter : InheritedClassConverter