private static String buildJvmGCOptions(Zone zone, String jvmGCOPtions, boolean isHostedVespa) { if (jvmGCOPtions != null) { return jvmGCOPtions; } else if ((zone.system() == SystemName.dev) || isHostedVespa) { return null; } else { return ContainerCluster.G1GC; } } private static String getJvmOptions(ContainerCluster cluster, Element nodesElement, DeployLogger deployLogger) {
@Inject public AuthorizationFilter(Zone zone, NodeRepository nodeRepository, NodeRepositoryConfig nodeRepositoryConfig) { this( new Authorizer( zone.system(), nodeRepository, Stream.concat( Stream.of(HostName.getLocalhost()), Stream.of(nodeRepositoryConfig.hostnameWhitelist().split(",")) ).filter(hostname -> !hostname.isEmpty()).collect(Collectors.toSet())), AuthorizationFilter::logAndReject ); }
DefaultTimes(Zone zone) { failGrace = Duration.ofMinutes(60); periodicRedeployInterval = Duration.ofMinutes(30); redeployMaintainerInterval = Duration.ofMinutes(1); operatorChangeRedeployInterval = Duration.ofMinutes(1); failedExpirerInterval = Duration.ofMinutes(10); provisionedExpiry = Duration.ofHours(4); rebootInterval = Duration.ofDays(30); nodeRetirerInterval = Duration.ofMinutes(30); metricsInterval = Duration.ofMinutes(1); infrastructureProvisionInterval = Duration.ofMinutes(3); throttlePolicy = NodeFailer.ThrottlePolicy.hosted; loadBalancerExpiry = Duration.ofHours(1); reservationExpiry = Duration.ofMinutes(20); // Need to be long enough for deployment to be finished for all config model versions hostProvisionerInterval = Duration.ofMinutes(5); hostDeprovisionerInterval = Duration.ofMinutes(5); if (zone.environment().equals(Environment.prod) && zone.system() != SystemName.cd) { inactiveExpiry = Duration.ofHours(4); // enough time for the application owner to discover and redeploy retiredInterval = Duration.ofMinutes(29); dirtyExpiry = Duration.ofHours(2); // enough time to clean the node retiredExpiry = Duration.ofDays(4); // give up migrating data after 4 days } else { inactiveExpiry = Duration.ofSeconds(2); // support interactive wipe start over retiredInterval = Duration.ofMinutes(1); dirtyExpiry = Duration.ofMinutes(30); retiredExpiry = Duration.ofMinutes(20); } }
private String getConfigserverIdentityName() { return String.format("%s.provider_%s_%s", zone.system() == SystemName.main ? "vespa.vespa" : "vespa.vespa.cd", zone.environment().value(), zone.region().value()); } }
public Flavor decideFlavor(Capacity requestedCapacity, ClusterSpec cluster) { // for now, always use the requested flavor if a docker flavor is requested Optional<String> requestedFlavor = requestedCapacity.flavor(); if (requestedFlavor.isPresent() && flavors.getFlavorOrThrow(requestedFlavor.get()).getType() == Flavor.Type.DOCKER_CONTAINER) return flavors.getFlavorOrThrow(requestedFlavor.get()); String defaultFlavorName = zone.defaultFlavor(cluster.type()); if (zone.system() == SystemName.cd) return flavors.getFlavorOrThrow(requestedFlavor.orElse(defaultFlavorName)); switch(zone.environment()) { case dev : case test : case staging : return flavors.getFlavorOrThrow(defaultFlavorName); default : return flavors.getFlavorOrThrow(requestedFlavor.orElse(defaultFlavorName)); } }
public FailedExpirer(NodeRepository nodeRepository, Zone zone, Clock clock, Duration interval, JobControl jobControl) { super(nodeRepository, interval, jobControl); this.nodeRepository = nodeRepository; this.zone = zone; this.clock = clock; if (zone.system() == SystemName.main) { if (zone.environment() == Environment.staging || zone.environment() == Environment.test) { defaultExpiry = Duration.ofHours(1); } else { defaultExpiry = Duration.ofDays(4); } containerExpiry = Duration.ofHours(1); } else { defaultExpiry = containerExpiry = Duration.ofMinutes(30); } }
private boolean checkForClashingParentHost() { return nodeRepository.zone().system() == SystemName.main && nodeRepository.zone().environment().isProduction(); }
/** * Returns a config server config containing the right zone settings (and defaults for the rest). * This is useful to allow applications to find out in which zone they are runnung by having the Zone * object (which is constructed from this config) injected. */ @Override public void getConfig(ConfigserverConfig.Builder builder) { builder.system(zone.system().name()); builder.environment(zone.environment().value()); builder.region(zone.region().value()); }
"which doesn't allow the nodes to be divided evenly into groups"); log.log(zone.system() == SystemName.cd ? Level.INFO : LogLevel.DEBUG, () -> "Received deploy prepare request for " + requestedCapacity + " in " + wantedGroups + " groups for application " + application + ", cluster " + cluster);
@Override public boolean isActive() { if(zone.system() == SystemName.cd) { return zone.environment() == Environment.dev || zone.environment() == Environment.prod; } if (zone.system() == SystemName.main) { if (zone.region().equals(RegionName.from("us-east-3"))) { return zone.environment() == Environment.perf || zone.environment() == Environment.prod; } else if (zone.region().equals(RegionName.from("us-west-1"))) { return zone.environment() == Environment.prod; } else if (zone.region().equals(RegionName.from("us-central-1"))) { return zone.environment() == Environment.prod; } else if (zone.region().equals(RegionName.from("ap-southeast-1"))) { return zone.environment() == Environment.prod; } else if (zone.region().equals(RegionName.from("ap-northeast-1"))) { return zone.environment() == Environment.prod; } else if (zone.region().equals(RegionName.from("ap-northeast-2"))) { return zone.environment() == Environment.prod; } else if (zone.region().equals(RegionName.from("eu-west-1"))) { return zone.environment() == Environment.prod; } } return false; }