summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-11-09 15:01:49 +0100
committerGitHub <noreply@github.com>2017-11-09 15:01:49 +0100
commitf8de7b713677b7418b23a9731dc07919fdc4c7bc (patch)
tree71fc178e47df2694df31dc984e41bc870b03e820
parent34e7f7e3315e6298371ec92a2ea0aaa97ca41683 (diff)
parentfdb4b76f4cc5bc5ccb07b83698ee97736e69e77a (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.java4
-rw-r--r--configserver/src/test/java/com/yahoo/vespa/config/server/tenant/TenantsTestCase.java15
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);