summaryrefslogtreecommitdiffstats
path: root/controller-server
diff options
context:
space:
mode:
authorJon Marius Venstad <jvenstad@yahoo-inc.com>2018-01-22 12:22:46 +0100
committerJon Marius Venstad <jvenstad@yahoo-inc.com>2018-01-22 12:22:46 +0100
commit63d188b40214ae9df9977eba92a62af5e8e3ce5e (patch)
treee9b9d34a3be45ad30bb01c9d272e4ba763a9b6be /controller-server
parentb54f86da25e5183fc45d1d5f1620eb6394d7aca0 (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.java10
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;