aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@yahoo-inc.com>2017-01-29 23:33:27 +0100
committerJon Bratseth <bratseth@yahoo-inc.com>2017-01-29 23:33:27 +0100
commitcbfd3edbea5217fba5fd189aba33261e4510bd7d (patch)
treec3c3e7217387d69e9a8cc792baa469c40f422911
parentb69c1cad6dae7506c22e13ceb2432d8f1839ab4d (diff)
Split vespa_zkfacade__restrict on space too
-rw-r--r--component/src/main/java/com/yahoo/component/ComponentSpecification.java3
-rw-r--r--component/src/main/java/com/yahoo/component/Spec.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/jersey/Jersey2Servlet.java8
-rw-r--r--config-provisioning/src/main/java/com/yahoo/config/provision/HostFilter.java19
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ApplicationFilter.java3
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeTypeFilter.java3
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ParentHostFilter.java3
-rw-r--r--node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/StateFilter.java3
-rw-r--r--vespajlib/src/main/java/com/yahoo/text/StringUtilities.java18
-rw-r--r--zkfacade/src/main/java/com/yahoo/vespa/zookeeper/RestrictedServerCnxnFactory.java9
10 files changed, 43 insertions, 30 deletions
diff --git a/component/src/main/java/com/yahoo/component/ComponentSpecification.java b/component/src/main/java/com/yahoo/component/ComponentSpecification.java
index c2c31c97f8b..9662eee0f66 100644
--- a/component/src/main/java/com/yahoo/component/ComponentSpecification.java
+++ b/component/src/main/java/com/yahoo/component/ComponentSpecification.java
@@ -43,8 +43,7 @@ public final class ComponentSpecification {
}
public ComponentSpecification(String name, VersionSpecification versionSpecification, ComponentId namespace) {
- spec = new Spec<>(new VersionHandler(),
- name, versionSpecification, namespace);
+ spec = new Spec<>(new VersionHandler(), name, versionSpecification, namespace);
stringValue = spec.createStringValue();
}
diff --git a/component/src/main/java/com/yahoo/component/Spec.java b/component/src/main/java/com/yahoo/component/Spec.java
index 7911b53d23c..a3259484b4a 100644
--- a/component/src/main/java/com/yahoo/component/Spec.java
+++ b/component/src/main/java/com/yahoo/component/Spec.java
@@ -9,6 +9,7 @@ import static com.yahoo.container.util.Util.firstNonNull;
* @author tonytv
*/
final class Spec<VERSION> {
+
private final VersionHandler<VERSION> versionHandler;
interface VersionHandler<VERSION> {
@@ -21,8 +22,7 @@ final class Spec<VERSION> {
final ComponentId namespace;
@SuppressWarnings("unchecked")
- Spec(VersionHandler<VERSION> versionHandler,
- String name, VERSION version, ComponentId namespace) {
+ Spec(VersionHandler<VERSION> versionHandler, String name, VERSION version, ComponentId namespace) {
assert (name != null);
validateName(name);
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/jersey/Jersey2Servlet.java b/config-model/src/main/java/com/yahoo/vespa/model/container/jersey/Jersey2Servlet.java
index def9442f9e4..d7c9482cab4 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/jersey/Jersey2Servlet.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/jersey/Jersey2Servlet.java
@@ -12,6 +12,7 @@ import com.yahoo.vespa.model.container.component.Servlet;
* @author tonytv
*/
public class Jersey2Servlet extends Servlet {
+
public static final String BUNDLE = "container-jersey2";
public static final String CLASS = "com.yahoo.container.servlet.jersey.JerseyServletProvider";
@@ -26,10 +27,9 @@ public class Jersey2Servlet extends Servlet {
}
private static ComponentSpecification idSpecFromPath(String path) {
- return new ComponentSpecification(
- RestApi.idFromPath(path),
- VersionSpecification.emptyVersionSpecification,
- REST_API_NAMESPACE);
+ return new ComponentSpecification(RestApi.idFromPath(path),
+ VersionSpecification.emptyVersionSpecification,
+ REST_API_NAMESPACE);
}
}
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/HostFilter.java b/config-provisioning/src/main/java/com/yahoo/config/provision/HostFilter.java
index 8f3127f938f..d771f36cdc1 100644
--- a/config-provisioning/src/main/java/com/yahoo/config/provision/HostFilter.java
+++ b/config-provisioning/src/main/java/com/yahoo/config/provision/HostFilter.java
@@ -2,6 +2,7 @@
package com.yahoo.config.provision;
import com.google.common.collect.ImmutableSet;
+import com.yahoo.text.StringUtilities;
import java.util.Collection;
import java.util.Collections;
@@ -86,20 +87,10 @@ public class HostFilter {
/** Returns a host filter from three comma and-or space separated string lists. The strings may be null or empty. */
public static HostFilter from(String hostNames, String flavors, String clusterTypes, String clusterIds) {
return new HostFilter(
- split(hostNames),
- split(flavors),
- split(clusterTypes).stream().map(ClusterSpec.Type::from).collect(Collectors.toSet()),
- split(clusterIds).stream().map(ClusterSpec.Id::from).collect(Collectors.toSet()));
- }
-
- /** Splits a string on space and comma */
- public static Set<String> split(String s) {
- if (s == null || s.isEmpty()) return Collections.emptySet();
- ImmutableSet.Builder<String> b = new ImmutableSet.Builder<>();
- for (String item : s.split("[\\s\\,]"))
- if ( ! item.isEmpty())
- b.add(item);
- return b.build();
+ StringUtilities.split(hostNames),
+ StringUtilities.split(flavors),
+ StringUtilities.split(clusterTypes).stream().map(ClusterSpec.Type::from).collect(Collectors.toSet()),
+ StringUtilities.split(clusterIds).stream().map(ClusterSpec.Id::from).collect(Collectors.toSet()));
}
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ApplicationFilter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ApplicationFilter.java
index b728b862686..f17fb3ff8ca 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ApplicationFilter.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ApplicationFilter.java
@@ -8,6 +8,7 @@ import com.yahoo.config.provision.ClusterMembership;
import com.yahoo.config.provision.HostFilter;
import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.TenantName;
+import com.yahoo.text.StringUtilities;
import com.yahoo.vespa.hosted.provision.Node;
import java.util.Collections;
@@ -47,7 +48,7 @@ public class ApplicationFilter extends NodeFilter {
}
public static ApplicationFilter from(String applicationIds, NodeFilter next) {
- return new ApplicationFilter(HostFilter.split(applicationIds).stream().map(ApplicationFilter::toApplicationId).collect(Collectors.toSet()), next);
+ return new ApplicationFilter(StringUtilities.split(applicationIds).stream().map(ApplicationFilter::toApplicationId).collect(Collectors.toSet()), next);
}
public static ApplicationId toApplicationId(String applicationIdString) {
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeTypeFilter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeTypeFilter.java
index 65fd9dd9d4a..de091aebb68 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeTypeFilter.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/NodeTypeFilter.java
@@ -3,6 +3,7 @@ package com.yahoo.vespa.hosted.provision.node.filter;
import com.google.common.collect.ImmutableSet;
import com.yahoo.config.provision.HostFilter;
import com.yahoo.config.provision.NodeType;
+import com.yahoo.text.StringUtilities;
import com.yahoo.vespa.hosted.provision.Node;
import java.util.Collections;
@@ -36,7 +37,7 @@ public class NodeTypeFilter extends NodeFilter {
/** Returns a node filter which matches a comma or space-separated list of types */
public static NodeTypeFilter from(String types, NodeFilter next) {
- return new NodeTypeFilter(HostFilter.split(types).stream().map(NodeType::valueOf).collect(Collectors.toSet()), next);
+ return new NodeTypeFilter(StringUtilities.split(types).stream().map(NodeType::valueOf).collect(Collectors.toSet()), next);
}
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ParentHostFilter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ParentHostFilter.java
index edf0463835a..2eaf4c4ad39 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ParentHostFilter.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/ParentHostFilter.java
@@ -3,6 +3,7 @@ package com.yahoo.vespa.hosted.provision.node.filter;
import com.google.common.collect.ImmutableSet;
import com.yahoo.config.provision.HostFilter;
+import com.yahoo.text.StringUtilities;
import com.yahoo.vespa.hosted.provision.Node;
import java.util.Objects;
@@ -35,7 +36,7 @@ public class ParentHostFilter extends NodeFilter {
/** Returns a copy of the given filter which only matches for the given parent */
public static ParentHostFilter from(String parentNames, NodeFilter filter) {
- return new ParentHostFilter(HostFilter.split(parentNames).stream().collect(Collectors.toSet()), filter);
+ return new ParentHostFilter(StringUtilities.split(parentNames).stream().collect(Collectors.toSet()), filter);
}
}
diff --git a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/StateFilter.java b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/StateFilter.java
index fa5972e59e1..a3468cf3dfd 100644
--- a/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/StateFilter.java
+++ b/node-repository/src/main/java/com/yahoo/vespa/hosted/provision/node/filter/StateFilter.java
@@ -8,6 +8,7 @@ import com.yahoo.config.provision.ClusterMembership;
import com.yahoo.config.provision.HostFilter;
import com.yahoo.config.provision.InstanceName;
import com.yahoo.config.provision.TenantName;
+import com.yahoo.text.StringUtilities;
import com.yahoo.vespa.hosted.provision.Node;
import java.util.Collections;
@@ -45,7 +46,7 @@ public class StateFilter extends NodeFilter {
/** Returns a node filter which matches a comma or space-separated list of states */
public static StateFilter from(String states, NodeFilter next) {
- return new StateFilter(HostFilter.split(states).stream().map(Node.State::valueOf).collect(Collectors.toSet()), next);
+ return new StateFilter(StringUtilities.split(states).stream().map(Node.State::valueOf).collect(Collectors.toSet()), next);
}
}
diff --git a/vespajlib/src/main/java/com/yahoo/text/StringUtilities.java b/vespajlib/src/main/java/com/yahoo/text/StringUtilities.java
index d65681e8f5b..975e2955d3a 100644
--- a/vespajlib/src/main/java/com/yahoo/text/StringUtilities.java
+++ b/vespajlib/src/main/java/com/yahoo/text/StringUtilities.java
@@ -1,18 +1,23 @@
// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.text;
+import com.google.common.collect.ImmutableSet;
+
import java.nio.charset.Charset;
+import java.util.Collections;
import java.util.List;
import java.io.ByteArrayOutputStream;
+import java.util.Set;
/**
* Escapes strings into and out of a format where they only contain printable characters.
*
* Need to duplicate escape / unescape of strings as we have in C++ for java version of system states.
*
- * @author <a href="mailto:humbe@yahoo-inc.com">Haakon Humberset</a>
+ * @author Haakon Humberset
*/
public class StringUtilities {
+
private static Charset UTF8 = Charset.forName("utf8");
private static byte toHex(int val) { return (byte) (val < 10 ? '0' + val : 'a' + (val - 10)); }
@@ -201,4 +206,15 @@ public class StringUtilities {
public static String quote(Object object) {
return "'" + object.toString() + "'";
}
+
+ /** Splits a string on both space and comma */
+ public static Set<String> split(String s) {
+ if (s == null || s.isEmpty()) return Collections.emptySet();
+ ImmutableSet.Builder<String> b = new ImmutableSet.Builder<>();
+ for (String item : s.split("[\\s\\,]"))
+ if ( ! item.isEmpty())
+ b.add(item);
+ return b.build();
+ }
+
}
diff --git a/zkfacade/src/main/java/com/yahoo/vespa/zookeeper/RestrictedServerCnxnFactory.java b/zkfacade/src/main/java/com/yahoo/vespa/zookeeper/RestrictedServerCnxnFactory.java
index bababa9a25c..972cf577ab3 100644
--- a/zkfacade/src/main/java/com/yahoo/vespa/zookeeper/RestrictedServerCnxnFactory.java
+++ b/zkfacade/src/main/java/com/yahoo/vespa/zookeeper/RestrictedServerCnxnFactory.java
@@ -2,6 +2,7 @@ package com.yahoo.vespa.zookeeper;
import com.google.common.collect.ImmutableSet;
import com.yahoo.net.HostName;
+import com.yahoo.text.StringUtilities;
import org.apache.zookeeper.server.NIOServerCnxn;
import org.apache.zookeeper.server.NIOServerCnxnFactory;
@@ -58,7 +59,9 @@ public class RestrictedServerCnxnFactory extends NIOServerCnxnFactory {
/** Returns the allowed client host names. If the list is empty any host is allowed. */
private ImmutableSet<String> findAllowedZooKeeperClients() {
- // Environment has precedence. Note that this allows setting restrict to "" to turn off client restriction
+ // Environment has precedence. Note that
+ // - if this is set to "", client restriction is disabled
+ // - this environment variable is a public API - do not change
String environmentAllowedZooKeeperClients = System.getenv("vespa_zkfacade__restrict");
if (environmentAllowedZooKeeperClients != null)
return ImmutableSet.copyOf(toHostnameSet(environmentAllowedZooKeeperClients));
@@ -67,9 +70,9 @@ public class RestrictedServerCnxnFactory extends NIOServerCnxnFactory {
return ZooKeeperServer.getAllowedClientHostnames();
}
- private Set<String> toHostnameSet(String commaSeparatedString) {
+ private Set<String> toHostnameSet(String hosatnamesString) {
Set<String> hostnames = new HashSet<>();
- for (String hostname : commaSeparatedString.split(",")) {
+ for (String hostname : StringUtilities.split(hosatnamesString)) {
if ( ! hostname.trim().isEmpty())
hostnames.add(hostname.trim());
}