diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2017-01-29 23:33:27 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2017-01-29 23:33:27 +0100 |
commit | cbfd3edbea5217fba5fd189aba33261e4510bd7d (patch) | |
tree | c3c3e7217387d69e9a8cc792baa469c40f422911 | |
parent | b69c1cad6dae7506c22e13ceb2432d8f1839ab4d (diff) |
Split vespa_zkfacade__restrict on space too
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()); } |