From 61f5df469ed35803bb1d10b2c09964386153654a Mon Sep 17 00:00:00 2001 From: Martin Polden Date: Thu, 10 Nov 2016 13:48:41 +0100 Subject: Add system to zone config --- .../com/yahoo/config/provision/SystemName.java | 32 ++++++++++++++++++++++ .../main/java/com/yahoo/config/provision/Zone.java | 26 +++++++++++++----- configdefinitions/src/vespa/configserver.def | 1 + 3 files changed, 52 insertions(+), 7 deletions(-) create mode 100644 config-provisioning/src/main/java/com/yahoo/config/provision/SystemName.java diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/SystemName.java b/config-provisioning/src/main/java/com/yahoo/config/provision/SystemName.java new file mode 100644 index 00000000000..662af4752ee --- /dev/null +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/SystemName.java @@ -0,0 +1,32 @@ +package com.yahoo.config.provision; + +/** + * Systems in hosted Vespa + * + * @author mpolden + */ +public enum SystemName { + + /** System for continuous integration of latest Vespa and hosted Vespa code */ + ci, + + /** System for continuous deployment where a pre-test of hosted Vespa combined with a verified Vespa version */ + cd, + + /** Production system */ + main; + + public static SystemName defaultSystem() { + return main; + } + + public static SystemName from(String value) { + switch (value) { + case "ci": return ci; + case "cd": return cd; + case "main": return main; + default: throw new IllegalArgumentException(String.format("'%s' is not a valid system", value)); + } + } + +} diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java b/config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java index 1b0962a8b26..9972b39b9f9 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/Zone.java @@ -18,26 +18,35 @@ public class Zone { private final Environment environment; private final RegionName region; + private final SystemName systemName; private final FlavorDefaults flavorDefaults; @Inject public Zone(ConfigserverConfig configserverConfig) { - this(Environment.from(configserverConfig.environment()), RegionName.from(configserverConfig.region()), - new FlavorDefaults(configserverConfig)); + this(SystemName.from(configserverConfig.system()), Environment.from(configserverConfig.environment()), + RegionName.from(configserverConfig.region()), new FlavorDefaults(configserverConfig)); } /** Create from environment and region */ - public Zone(Environment environment, RegionName region) { this(environment, region, "default"); } + public Zone(Environment environment, RegionName region) { + this(SystemName.defaultSystem(), environment, region, "default"); + } + + /** Create from system, environment and region */ + public Zone(SystemName systemName, Environment environment, RegionName region) { + this(systemName, environment, region, "default"); + } /** Create from environment and region. Useful for testing. */ - public Zone(Environment environment, RegionName region, String defaultFlavor) { - this(environment, region, new FlavorDefaults(defaultFlavor)); + public Zone(SystemName system, Environment environment, RegionName region, String defaultFlavor) { + this(system, environment, region, new FlavorDefaults(defaultFlavor)); } - private Zone(Environment environment, RegionName region, FlavorDefaults flavorDefaults) { + private Zone(SystemName systemName, Environment environment, RegionName region, FlavorDefaults flavorDefaults) { this.environment = environment; this.region = region; this.flavorDefaults = flavorDefaults; + this.systemName = systemName; } /** Returns the current environment */ @@ -46,12 +55,15 @@ public class Zone { /** Returns the current region */ public RegionName region() { return region; } + /** Returns the current system */ + public SystemName system() { return systemName; } + /** Returns the default hardware flavor to assign in this zone */ public String defaultFlavor(ClusterSpec.Type clusterType) { return flavorDefaults.flavor(clusterType); } /** Do not use */ public static Zone defaultZone() { - return new Zone(Environment.defaultEnvironment(), RegionName.defaultName()); + return new Zone(SystemName.defaultSystem(), Environment.defaultEnvironment(), RegionName.defaultName()); } @Override diff --git a/configdefinitions/src/vespa/configserver.def b/configdefinitions/src/vespa/configserver.def index 48d5321d66d..87610c9ee4c 100644 --- a/configdefinitions/src/vespa/configserver.def +++ b/configdefinitions/src/vespa/configserver.def @@ -26,6 +26,7 @@ numParallelTenantLoaders int default=1 # Zone information environment string default="prod" region string default="default" +system string default="main" defaultFlavor string default="default" defaultAdminFlavor string default="default" defaultContainerFlavor string default="default" -- cgit v1.2.3