diff options
author | Jon Marius Venstad <jvenstad@yahoo-inc.com> | 2018-01-22 12:22:46 +0100 |
---|---|---|
committer | Jon Marius Venstad <jvenstad@yahoo-inc.com> | 2018-01-22 12:22:46 +0100 |
commit | 63d188b40214ae9df9977eba92a62af5e8e3ce5e (patch) | |
tree | e9b9d34a3be45ad30bb01c9d272e4ba763a9b6be /controller-server | |
parent | b54f86da25e5183fc45d1d5f1620eb6394d7aca0 (diff) |
Restrict tenant and application names to not have double dashes, upon creationgd
Diffstat (limited to 'controller-server')
-rw-r--r-- | controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java index 08924438736..7b53720954b 100644 --- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java +++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/ApplicationController.java @@ -233,7 +233,7 @@ public class ApplicationController { * @throws IllegalArgumentException if the application already exists */ public Application createApplication(ApplicationId id, Optional<NToken> token) { - if ( ! (id.instance().value().equals("default") || id.instance().value().startsWith("default-pr"))) // TODO: Support instances properly + if ( ! (id.instance().value().equals("default") || id.instance().value().matches("^default-pr\\d+$"))) // TODO: Support instances properly throw new UnsupportedOperationException("Only the instance names 'default' and names starting with 'default-pr' are supported at the moment"); try (Lock lock = lock(id)) { com.yahoo.vespa.hosted.controller.api.identifiers.ApplicationId.validate(id.application().value()); @@ -270,11 +270,13 @@ public class ApplicationController { public ActivateResult deployApplication(ApplicationId applicationId, ZoneId zone, ApplicationPackage applicationPackage, DeployOptions options) { try (Lock lock = lock(applicationId)) { - // Not ideal, but since we create on missing and return a result computed inside the lock, - // the lock-with-action methods cannot be used + // TODO: Move application creation outside, to the deploy call in the handler. LockedApplication application = get(applicationId) .map(app -> new LockedApplication(app, lock)) - .orElseGet(() -> new LockedApplication(new Application(applicationId), lock)); + .orElseGet(() -> { + com.yahoo.vespa.hosted.controller.api.identifiers.ApplicationId.validate(applicationId.application().value()); + return new LockedApplication(new Application(applicationId), lock); + }); // Determine what we are doing Version version; |