aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedTenant.java
diff options
context:
space:
mode:
authorValerij Fredriksen <valerij92@gmail.com>2021-01-20 14:08:52 +0100
committerValerij Fredriksen <valerij92@gmail.com>2021-01-20 14:08:52 +0100
commit9a768c486a9bbbb9c36f2d218ebf4d8de3dc590f (patch)
tree3930f41475f69b7fbb3188d2f02f7bf8d815362a /controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedTenant.java
parentc68838b159e51eeb6810a1d8689d09f6494a9554 (diff)
Store last login info in tenant
Diffstat (limited to 'controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedTenant.java')
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedTenant.java47
1 files changed, 31 insertions, 16 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedTenant.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedTenant.java
index d27c585050b..e45bda0708e 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedTenant.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/LockedTenant.java
@@ -13,6 +13,7 @@ import com.yahoo.vespa.hosted.controller.api.identifiers.PropertyId;
import com.yahoo.vespa.hosted.controller.api.integration.organization.Contact;
import com.yahoo.vespa.hosted.controller.tenant.AthenzTenant;
import com.yahoo.vespa.hosted.controller.tenant.CloudTenant;
+import com.yahoo.vespa.hosted.controller.tenant.LastLoginInfo;
import com.yahoo.vespa.hosted.controller.tenant.Tenant;
import com.yahoo.vespa.hosted.controller.tenant.TenantInfo;
@@ -33,10 +34,12 @@ public abstract class LockedTenant {
final TenantName name;
final Instant createdAt;
+ final LastLoginInfo lastLoginInfo;
- private LockedTenant(TenantName name, Instant createdAt) {
+ private LockedTenant(TenantName name, Instant createdAt, LastLoginInfo lastLoginInfo) {
this.name = requireNonNull(name);
this.createdAt = requireNonNull(createdAt);
+ this.lastLoginInfo = requireNonNull(lastLoginInfo);
}
static LockedTenant of(Tenant tenant, Lock lock) {
@@ -50,6 +53,8 @@ public abstract class LockedTenant {
/** Returns a read-only copy of this */
public abstract Tenant get();
+ public abstract LockedTenant with(LastLoginInfo lastLoginInfo);
+
@Override
public String toString() {
return "tenant '" + name + "'";
@@ -65,8 +70,8 @@ public abstract class LockedTenant {
private final Optional<Contact> contact;
private Athenz(TenantName name, AthenzDomain domain, Property property, Optional<PropertyId> propertyId,
- Optional<Contact> contact, Instant createdAt) {
- super(name, createdAt);
+ Optional<Contact> contact, Instant createdAt, LastLoginInfo lastLoginInfo) {
+ super(name, createdAt, lastLoginInfo);
this.domain = domain;
this.property = property;
this.propertyId = propertyId;
@@ -74,28 +79,33 @@ public abstract class LockedTenant {
}
private Athenz(AthenzTenant tenant) {
- this(tenant.name(), tenant.domain(), tenant.property(), tenant.propertyId(), tenant.contact(), tenant.createdAt());
+ this(tenant.name(), tenant.domain(), tenant.property(), tenant.propertyId(), tenant.contact(), tenant.createdAt(), tenant.lastLoginInfo());
}
@Override
public AthenzTenant get() {
- return new AthenzTenant(name, domain, property, propertyId, contact, createdAt);
+ return new AthenzTenant(name, domain, property, propertyId, contact, createdAt, lastLoginInfo);
}
public Athenz with(AthenzDomain domain) {
- return new Athenz(name, domain, property, propertyId, contact, createdAt);
+ return new Athenz(name, domain, property, propertyId, contact, createdAt, lastLoginInfo);
}
public Athenz with(Property property) {
- return new Athenz(name, domain, property, propertyId, contact, createdAt);
+ return new Athenz(name, domain, property, propertyId, contact, createdAt, lastLoginInfo);
}
public Athenz with(PropertyId propertyId) {
- return new Athenz(name, domain, property, Optional.of(propertyId), contact, createdAt);
+ return new Athenz(name, domain, property, Optional.of(propertyId), contact, createdAt, lastLoginInfo);
}
public Athenz with(Contact contact) {
- return new Athenz(name, domain, property, propertyId, Optional.of(contact), createdAt);
+ return new Athenz(name, domain, property, propertyId, Optional.of(contact), createdAt, lastLoginInfo);
+ }
+
+ @Override
+ public LockedTenant with(LastLoginInfo lastLoginInfo) {
+ return new Athenz(name, domain, property, propertyId, contact, createdAt, lastLoginInfo);
}
}
@@ -108,20 +118,20 @@ public abstract class LockedTenant {
private final BiMap<PublicKey, Principal> developerKeys;
private final TenantInfo info;
- private Cloud(TenantName name, Instant createdAt, Optional<Principal> creator, BiMap<PublicKey, Principal> developerKeys, TenantInfo info) {
- super(name, createdAt);
+ private Cloud(TenantName name, Instant createdAt, LastLoginInfo lastLoginInfo, Optional<Principal> creator, BiMap<PublicKey, Principal> developerKeys, TenantInfo info) {
+ super(name, createdAt, lastLoginInfo);
this.developerKeys = ImmutableBiMap.copyOf(developerKeys);
this.creator = creator;
this.info = info;
}
private Cloud(CloudTenant tenant) {
- this(tenant.name(), tenant.createdAt(), Optional.empty(), tenant.developerKeys(), tenant.info());
+ this(tenant.name(), tenant.createdAt(), tenant.lastLoginInfo(), Optional.empty(), tenant.developerKeys(), tenant.info());
}
@Override
public CloudTenant get() {
- return new CloudTenant(name, createdAt, creator, developerKeys, info);
+ return new CloudTenant(name, createdAt, lastLoginInfo, creator, developerKeys, info);
}
public Cloud withDeveloperKey(PublicKey key, Principal principal) {
@@ -129,17 +139,22 @@ public abstract class LockedTenant {
if (keys.containsKey(key))
throw new IllegalArgumentException("Key " + KeyUtils.toPem(key) + " is already owned by " + keys.get(key));
keys.put(key, principal);
- return new Cloud(name, createdAt, creator, keys, info);
+ return new Cloud(name, createdAt, lastLoginInfo, creator, keys, info);
}
public Cloud withoutDeveloperKey(PublicKey key) {
BiMap<PublicKey, Principal> keys = HashBiMap.create(developerKeys);
keys.remove(key);
- return new Cloud(name, createdAt, creator, keys, info);
+ return new Cloud(name, createdAt, lastLoginInfo, creator, keys, info);
}
public Cloud withInfo(TenantInfo newInfo) {
- return new Cloud(name, createdAt, creator, developerKeys, newInfo);
+ return new Cloud(name, createdAt, lastLoginInfo, creator, developerKeys, newInfo);
+ }
+
+ @Override
+ public LockedTenant with(LastLoginInfo lastLoginInfo) {
+ return new Cloud(name, createdAt, lastLoginInfo, creator, developerKeys, info);
}
}