From d8f5db7abd5998a282c2174a158915bde4af1021 Mon Sep 17 00:00:00 2001 From: Valerij Fredriksen Date: Mon, 25 Sep 2023 12:50:07 +0200 Subject: Store cloud accounts in Tenant --- .../vespa/hosted/controller/tenant/AthenzTenant.java | 8 +++++--- .../hosted/controller/tenant/CloudAccountInfo.java | 19 +++++++++++++++++++ .../vespa/hosted/controller/tenant/CloudTenant.java | 7 ++++--- .../vespa/hosted/controller/tenant/DeletedTenant.java | 3 ++- .../yahoo/vespa/hosted/controller/tenant/Tenant.java | 9 ++++++++- 5 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/CloudAccountInfo.java (limited to 'controller-api') diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/AthenzTenant.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/AthenzTenant.java index 53a3f431de7..0754a5ed49f 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/AthenzTenant.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/AthenzTenant.java @@ -8,6 +8,7 @@ import com.yahoo.vespa.hosted.controller.api.identifiers.PropertyId; import com.yahoo.vespa.hosted.controller.api.integration.organization.Contact; import java.time.Instant; +import java.util.List; import java.util.Objects; import java.util.Optional; @@ -27,8 +28,9 @@ public class AthenzTenant extends Tenant { * Use {@link #create(TenantName, AthenzDomain, Property, Optional, Instant)}. * */ public AthenzTenant(TenantName name, AthenzDomain domain, Property property, Optional propertyId, - Optional contact, Instant createdAt, LastLoginInfo lastLoginInfo, Instant tenantRolesLastMaintained) { - super(name, createdAt, lastLoginInfo, contact, tenantRolesLastMaintained); + Optional contact, Instant createdAt, LastLoginInfo lastLoginInfo, Instant tenantRolesLastMaintained, + List cloudAccounts) { + super(name, createdAt, lastLoginInfo, contact, tenantRolesLastMaintained, cloudAccounts); this.domain = Objects.requireNonNull(domain, "domain must be non-null"); this.property = Objects.requireNonNull(property, "property must be non-null"); this.propertyId = Objects.requireNonNull(propertyId, "propertyId must be non-null"); @@ -62,7 +64,7 @@ public class AthenzTenant extends Tenant { /** Create a new Athenz tenant */ public static AthenzTenant create(TenantName name, AthenzDomain domain, Property property, Optional propertyId, Instant createdAt) { - return new AthenzTenant(requireName(name), domain, property, propertyId, Optional.empty(), createdAt, LastLoginInfo.EMPTY, Instant.EPOCH); + return new AthenzTenant(requireName(name), domain, property, propertyId, Optional.empty(), createdAt, LastLoginInfo.EMPTY, Instant.EPOCH, List.of()); } @Override diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/CloudAccountInfo.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/CloudAccountInfo.java new file mode 100644 index 00000000000..430f5770165 --- /dev/null +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/CloudAccountInfo.java @@ -0,0 +1,19 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.vespa.hosted.controller.tenant; + +import com.yahoo.component.Version; +import com.yahoo.config.provision.CloudAccount; + +import java.util.Objects; + +/** + * @author freva + */ +public record CloudAccountInfo(CloudAccount cloudAccount, Version templateVersion) { + + public CloudAccountInfo { + Objects.requireNonNull(cloudAccount, "cloudAccount must be non-null"); + Objects.requireNonNull(templateVersion, "templateVersion must be non-null"); + } + +} diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/CloudTenant.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/CloudTenant.java index 4d7aee7b604..173d3e1950e 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/CloudTenant.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/CloudTenant.java @@ -34,8 +34,8 @@ public class CloudTenant extends Tenant { BiMap developerKeys, TenantInfo info, List tenantSecretStores, ArchiveAccess archiveAccess, Optional invalidateUserSessionsBefore, Instant tenantRoleLastMaintained, - Optional billingReference) { - super(name, createdAt, lastLoginInfo, Optional.empty(), tenantRoleLastMaintained); + List cloudAccounts, Optional billingReference) { + super(name, createdAt, lastLoginInfo, Optional.empty(), tenantRoleLastMaintained, cloudAccounts); this.creator = creator; this.developerKeys = developerKeys; this.info = Objects.requireNonNull(info); @@ -51,7 +51,8 @@ public class CloudTenant extends Tenant { createdAt, LastLoginInfo.EMPTY, Optional.ofNullable(creator).map(SimplePrincipal::of), - ImmutableBiMap.of(), TenantInfo.empty(), List.of(), new ArchiveAccess(), Optional.empty(), Instant.EPOCH, Optional.empty()); + ImmutableBiMap.of(), TenantInfo.empty(), List.of(), new ArchiveAccess(), Optional.empty(), + Instant.EPOCH, List.of(), Optional.empty()); } /** The user that created the tenant */ diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/DeletedTenant.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/DeletedTenant.java index b58fdf81278..30ce5d5a3b2 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/DeletedTenant.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/DeletedTenant.java @@ -4,6 +4,7 @@ package com.yahoo.vespa.hosted.controller.tenant; import com.yahoo.config.provision.TenantName; import java.time.Instant; +import java.util.List; import java.util.Objects; import java.util.Optional; @@ -17,7 +18,7 @@ public class DeletedTenant extends Tenant { private final Instant deletedAt; public DeletedTenant(TenantName name, Instant createdAt, Instant deletedAt) { - super(name, createdAt, LastLoginInfo.EMPTY, Optional.empty(), Instant.EPOCH); + super(name, createdAt, LastLoginInfo.EMPTY, Optional.empty(), Instant.EPOCH, List.of()); this.deletedAt = Objects.requireNonNull(deletedAt, "deletedAt must be non-null"); } diff --git a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/Tenant.java b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/Tenant.java index a4500991bf2..8b1c6b3ebde 100644 --- a/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/Tenant.java +++ b/controller-api/src/main/java/com/yahoo/vespa/hosted/controller/tenant/Tenant.java @@ -5,6 +5,7 @@ import com.yahoo.config.provision.TenantName; import com.yahoo.vespa.hosted.controller.api.integration.organization.Contact; import java.time.Instant; +import java.util.List; import java.util.Objects; import java.util.Optional; @@ -20,13 +21,15 @@ public abstract class Tenant { private final LastLoginInfo lastLoginInfo; private final Optional contact; private final Instant tenantRolesLastMaintained; + private final List cloudAccounts; - Tenant(TenantName name, Instant createdAt, LastLoginInfo lastLoginInfo, Optional contact, Instant tenantRolesLastMaintained) { + Tenant(TenantName name, Instant createdAt, LastLoginInfo lastLoginInfo, Optional contact, Instant tenantRolesLastMaintained, List cloudAccounts) { this.name = name; this.createdAt = createdAt; this.lastLoginInfo = lastLoginInfo; this.contact = contact; this.tenantRolesLastMaintained = tenantRolesLastMaintained; + this.cloudAccounts = cloudAccounts; } /** Name of this tenant */ @@ -53,6 +56,10 @@ public abstract class Tenant { return tenantRolesLastMaintained; } + public List cloudAccounts() { + return cloudAccounts; + } + public abstract Type type(); @Override -- cgit v1.2.3