diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-11-09 15:01:49 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-09 15:01:49 +0100 |
commit | f8de7b713677b7418b23a9731dc07919fdc4c7bc (patch) | |
tree | 71fc178e47df2694df31dc984e41bc870b03e820 | |
parent | 34e7f7e3315e6298371ec92a2ea0aaa97ca41683 (diff) | |
parent | fdb4b76f4cc5bc5ccb07b83698ee97736e69e77a (diff) |
Merge pull request #4061 from vespa-engine/hmusum/improve-create-and-delete-tenant
Improve creation and deletion of tenants
-rw-r--r-- | configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java | 4 | ||||
-rw-r--r-- | configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TenantsTestCase.java | 15 |
2 files changed, 15 insertions, 4 deletions
diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java index f256d46218c..c67ad0675b2 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/tenant/Tenants.java @@ -186,6 +186,8 @@ public class Tenants implements ConnectionStateListener, PathChildrenCacheListen } private void createTenant(TenantName tenantName) { + if (tenants.containsKey(tenantName)) return; + try { Tenant tenant = TenantBuilder.create(globalComponentRegistry, tenantName, getTenantPath(tenantName)).build(); notifyNewTenant(tenant); @@ -255,6 +257,8 @@ public class Tenants implements ConnectionStateListener, PathChildrenCacheListen * @return this Tenants instance */ public synchronized Tenants deleteTenant(TenantName name) { + if (name.equals(TenantName.defaultName())) + throw new IllegalArgumentException("Deleting 'default' tenant is not allowed"); Tenant tenant = tenants.get(name); tenant.delete(); return this; diff --git a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TenantsTestCase.java b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TenantsTestCase.java index 45be489952f..e650997b7e0 100644 --- a/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TenantsTestCase.java +++ b/configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TenantsTestCase.java @@ -105,11 +105,21 @@ public class TenantsTestCase extends TestWithCurator { } @Test - public void testRemove() throws Exception { + public void testDelete() throws Exception { assertNotNull(globalComponentRegistry.getCurator().framework().checkExists().forPath(tenants.tenantZkPath(tenant1))); tenants.deleteTenant(tenant1); assertFalse(tenants.getAllTenantNames().contains(tenant1)); } + + @Test(expected = IllegalArgumentException.class) + public void testDeleteOfDefaultTenant() { + try { + assertNotNull(globalComponentRegistry.getCurator().framework().checkExists().forPath(tenants.tenantZkPath(TenantName.defaultName()))); + } catch (Exception e) { + fail("default tenant does not exist"); + } + tenants.deleteTenant(TenantName.defaultName()); + } @Test public void testTenantsChanged() throws Exception { @@ -117,7 +127,6 @@ public class TenantsTestCase extends TestWithCurator { tenants = new Tenants(globalComponentRegistry, new ArrayList<>()); TenantName defaultTenant = TenantName.defaultName(); tenants.addTenant(tenant2); - tenants.addTenant(defaultTenant); tenants.createTenants(); Set<TenantName> allTenants = tenants.getAllTenantNames(); assertTrue(allTenants.contains(tenant2)); @@ -125,12 +134,10 @@ public class TenantsTestCase extends TestWithCurator { assertTrue(allTenants.contains(defaultTenant)); tenants.deleteTenant(tenant1); tenants.deleteTenant(tenant2); - tenants.deleteTenant(defaultTenant); tenants.createTenants(); allTenants = tenants.getAllTenantNames(); assertFalse(allTenants.contains(tenant1)); assertFalse(allTenants.contains(tenant2)); - assertFalse(allTenants.contains(defaultTenant)); TenantName foo = TenantName.from("foo"); TenantName bar = TenantName.from("bar"); tenants.addTenant(tenant2); |