diff options
author | Arne Juul <arnej@yahoo-inc.com> | 2017-10-02 13:39:19 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahoo-inc.com> | 2017-10-05 06:25:33 +0000 |
commit | deb22c99216e4545610e08928490eba617b7b8b7 (patch) | |
tree | ca2a243d8a5893d36192d34041ea2c5d9bd5710b | |
parent | 3b2f3992cfe417e29ccd6e0dc52017664e3530b2 (diff) |
update with new schema
8 files changed, 63 insertions, 108 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java index 90fb66fc400..0df6566829c 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java @@ -10,25 +10,39 @@ import java.util.List; public class LogForwarder extends AbstractService implements LogforwarderConfig.Producer { - private final String type; - private final List<String> sources; - private final String endpoints; - private final String indexName; + public static class Config { + public final String deploymentServer; + public final String clientName; + + private Config(String ds, String cn) { + this.deploymentServer = ds; + this.clientName = cn; + } + public Config withDeploymentServer(String ds) { + return new Config(ds, clientName); + } + public Config withClientName(String cn) { + return new Config(deploymentServer, cn); + } + } + + private final Config config; /** * Creates a new LogForwarder instance. */ // TODO: Use proper types? - public LogForwarder(AbstractConfigProducer parent, int index, String type, List<String> sources, String endpoints, String indexName) { + public LogForwarder(AbstractConfigProducer parent, int index, Config config) { super(parent, "logforwarder." + index); - this.type = type; - this.sources = sources; - this.endpoints = endpoints; - this.indexName = indexName; + this.config = config; setProp("clustertype", "hosts"); setProp("clustername", "admin"); } + public static Config cfg() { + return new Config(null, null); + } + /** * LogForwarder does not need any ports. * @@ -39,21 +53,12 @@ public class LogForwarder extends AbstractService implements LogforwarderConfig. /** * @return The command used to start LogForwarder */ - public String getStartupCommand() { return "exec $ROOT/libexec/vespa/vespa-logforwarder-start " + getConfigId(); } + public String getStartupCommand() { return "exec $ROOT/libexec/vespa/vespa-logforwarder-start -c " + getConfigId(); } @Override public void getConfig(LogforwarderConfig.Builder builder) { - List<LogforwarderConfig.Sources.Builder> sourceList = new ArrayList<>(); - for (String s : this.sources) { - LogforwarderConfig.Sources.Builder source = new LogforwarderConfig.Sources.Builder(); - source.log(s); - sourceList.add(source); - } - - builder.type(type); - builder.endpoint(endpoints); - builder.index(indexName); - builder.sources(sourceList); + builder.deploymentServer(config.deploymentServer); + builder.clientName(config.clientName); } } diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java index 79340e9e7ff..0a93bee962d 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java @@ -116,18 +116,12 @@ public abstract class DomAdminBuilderBase extends VespaDomBuilder.DomConfigProdu if (logForwardingElement == null) return; int i = 0; - for (ModelElement e : logForwardingElement.getChildren("forward")) { - String type = e.getStringAttribute("type"); - List<String> sources = e.getChild("source").getChildren("log") - .stream() - .map(ModelElement::asString) - .collect(Collectors.toList()); - String index = e.getChild("destination").getChild("index").asString(); - String endpoint = e.getChild("destination").getChild("endpoint").asString(); - + for (ModelElement e : logForwardingElement.getChildren("splunk")) { + LogForwarder.Config cfg = LogForwarder.cfg() + .withDeploymentServer(e.getStringAttribute("deployment-server")) + .withClientName(e.getStringAttribute("client-name")); for (HostResource host : admin.getHostSystem().getHosts()) { - System.out.println("Adding " + e + " on host " + host.getHostName()); - LogForwarder logForwarder = new LogForwarder(admin, i, type, sources, endpoint, index); + LogForwarder logForwarder = new LogForwarder(admin, i, cfg); logForwarder.setHostResource(host); logForwarder.initService(); i++; diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java index 5ee0528ca7e..0a2690edec9 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java @@ -264,25 +264,7 @@ public class AdminTestCase { " <admin version='2.0'>" + " <adminserver hostalias='node0' />" + " <logforwarding>" + - " <forward type='splunk'>" + - " <source>" + - " <log>access</log>" + - " <log>vespa</log>" + - " </source>" + - " <destination>" + - " <endpoint>host1:port,host2:port</endpoint>" + - " <index>all</index>" + - " </destination>" + - " </forward>" + - " <forward type='splunk'>" + - " <source>" + - " <log>access</log>" + - " </source>" + - " <destination>" + - " <endpoint>host3:port</endpoint>" + - " <index>access</index>" + - " </destination>" + - " </forward>" + + " <splunk deployment-server='foo:123' client-name='foocli'/>" + " </logforwarding>" + " </admin>" + "</services>"; @@ -290,7 +272,10 @@ public class AdminTestCase { VespaModel vespaModel = new VespaModelCreatorWithMockPkg(hosts, services).create(); Set<String> configIds = vespaModel.getConfigIds(); - // 2 logforwarders on each host - IntStream.of(0, 1).forEach(i -> assertTrue(configIds.toString(), configIds.contains("admin/logforwarder." + i))); + // 1 logforwarder on each host + assertTrue(configIds.toString(), configIds.contains("admin/logforwarder.0")); } } + + + diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java index 8b451381dbe..e3f773a64c2 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java @@ -149,25 +149,7 @@ public class DedicatedAdminV4Test { " <slobroks><nodes count='2' dedicated='true'/></slobroks>" + " <logservers><nodes count='1' dedicated='true'/></logservers>" + " <logforwarding>" + - " <forward type='splunk'>" + - " <source>" + - " <log>access</log>" + - " <log>vespa</log>" + - " </source>" + - " <destination>" + - " <endpoint>host1:port,host2:port</endpoint>" + - " <index>all</index>" + - " </destination>" + - " </forward>" + - " <forward type='splunk'>" + - " <source>" + - " <log>access</log>" + - " </source>" + - " <destination>" + - " <endpoint>host3:port</endpoint>" + - " <index>access</index>" + - " </destination>" + - " </forward>" + + " <splunk deployment-server='foo:123' client-name='foocli'/>" + " </logforwarding>" + " </admin>" + "</services>"; @@ -176,15 +158,15 @@ public class DedicatedAdminV4Test { assertEquals(3, model.getHosts().size()); assertHostContainsServices(model, "hosts/myhost0", - "filedistributorservice", "logd", "logforwarder", "logforwarder2", "slobrok"); + "filedistributorservice", "logd", "logforwarder", "slobrok"); assertHostContainsServices(model, "hosts/myhost1", - "filedistributorservice", "logd", "logforwarder", "logforwarder2", "slobrok"); + "filedistributorservice", "logd", "logforwarder", "slobrok"); assertHostContainsServices(model, "hosts/myhost2", - "filedistributorservice", "logd", "logforwarder", "logforwarder2", "logserver"); + "filedistributorservice", "logd", "logforwarder", "logserver"); Set<String> configIds = model.getConfigIds(); - // 2 logforwarders on each host - IntStream.of(0, 1, 2, 3, 4, 5).forEach(i -> assertTrue(configIds.toString(), configIds.contains("admin/logforwarder." + i))); + // 1 logforwarder on each host + IntStream.of(0, 1, 2).forEach(i -> assertTrue(configIds.toString(), configIds.contains("admin/logforwarder." + i))); // First forwarder { @@ -192,27 +174,18 @@ public class DedicatedAdminV4Test { model.getConfig(builder, "admin/logforwarder.0"); LogforwarderConfig config = new LogforwarderConfig(builder); - assertEquals("splunk", config.type()); - assertEquals("host1:port,host2:port", config.endpoint()); - assertEquals("all", config.index()); - List<LogforwarderConfig.Sources> sources = config.sources(); - assertEquals(2, sources.size()); - assertEquals("access", sources.get(0).log()); - assertEquals("vespa", sources.get(1).log()); + assertEquals("foo:123", config.deploymentServer()); + assertEquals("foocli", config.clientName()); } - // Two forwarders on each host, so forwarder with id admin/logforwarder.3 should be different + // Other host's forwarder { LogforwarderConfig.Builder builder = new LogforwarderConfig.Builder(); - model.getConfig(builder, "admin/logforwarder.3"); + model.getConfig(builder, "admin/logforwarder.2"); LogforwarderConfig config = new LogforwarderConfig(builder); - assertEquals("splunk", config.type()); - assertEquals("host3:port", config.endpoint()); - assertEquals("access", config.index()); - List<LogforwarderConfig.Sources> sources = config.sources(); - assertEquals(1, sources.size()); - assertEquals("access", sources.get(0).log()); + assertEquals("foo:123", config.deploymentServer()); + assertEquals("foocli", config.clientName()); } } diff --git a/config-model/src/test/schema-test-files/services.xml b/config-model/src/test/schema-test-files/services.xml index 322f4ed8356..4b6eb12208c 100644 --- a/config-model/src/test/schema-test-files/services.xml +++ b/config-model/src/test/schema-test-files/services.xml @@ -26,6 +26,9 @@ <metric-set id="my-set2" /> </consumer> </metrics> + <logforwarding> + <splunk deployment-server="foo:8989" client-name="foobar"/> + </logforwarding> </admin> <config name="bar"> diff --git a/logforwarder/src/apps/vespa-logforwarder-start/cf-handler.cpp b/logforwarder/src/apps/vespa-logforwarder-start/cf-handler.cpp index 479bf33ab59..573a23a373e 100644 --- a/logforwarder/src/apps/vespa-logforwarder-start/cf-handler.cpp +++ b/logforwarder/src/apps/vespa-logforwarder-start/cf-handler.cpp @@ -25,12 +25,9 @@ CfHandler::doConfigure() std::unique_ptr<LogforwarderConfig> cfg(_handle->getConfig()); const LogforwarderConfig& config(*cfg); - printf("logforwarder type: %s\n", config.type.c_str()); - for (unsigned int i = 0; i < config.sources.size(); ++i) { - printf("source %d is: %s\n", i, config.sources[i].log.c_str()); - } - printf("endpoint: %s\n", config.endpoint.c_str()); - printf("index: %s\n", config.index.c_str()); + printf("logforwarder:\n"); + printf(" deployment server: %s\n", config.deploymentServer.c_str()); + printf(" client name: %s\n", config.clientName.c_str()); } void diff --git a/logforwarder/src/apps/vespa-logforwarder-start/logforwarder.def b/logforwarder/src/apps/vespa-logforwarder-start/logforwarder.def index 66750a81af8..205e8ad3b8c 100644 --- a/logforwarder/src/apps/vespa-logforwarder-start/logforwarder.def +++ b/logforwarder/src/apps/vespa-logforwarder-start/logforwarder.def @@ -1,7 +1,6 @@ namespace=cloud.config -# Forwarder that forwards onle or more types of log to an endpoint -type string -sources[].log string -endpoint string -index string +# only splunk type config for now + +deploymentServer string default="" +clientName string default="" diff --git a/logforwarder/src/main/resources/configdefinitions/logforwarder.def b/logforwarder/src/main/resources/configdefinitions/logforwarder.def index 66750a81af8..205e8ad3b8c 100644 --- a/logforwarder/src/main/resources/configdefinitions/logforwarder.def +++ b/logforwarder/src/main/resources/configdefinitions/logforwarder.def @@ -1,7 +1,6 @@ namespace=cloud.config -# Forwarder that forwards onle or more types of log to an endpoint -type string -sources[].log string -endpoint string -index string +# only splunk type config for now + +deploymentServer string default="" +clientName string default="" |