summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArne Juul <arnej@yahoo-inc.com>2017-10-02 13:39:19 +0000
committerArne Juul <arnej@yahoo-inc.com>2017-10-05 06:25:33 +0000
commitdeb22c99216e4545610e08928490eba617b7b8b7 (patch)
treeca2a243d8a5893d36192d34041ea2c5d9bd5710b
parent3b2f3992cfe417e29ccd6e0dc52017664e3530b2 (diff)
update with new schema
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/LogForwarder.java47
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java16
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/AdminTestCase.java27
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/DedicatedAdminV4Test.java51
-rw-r--r--config-model/src/test/schema-test-files/services.xml3
-rw-r--r--logforwarder/src/apps/vespa-logforwarder-start/cf-handler.cpp9
-rw-r--r--logforwarder/src/apps/vespa-logforwarder-start/logforwarder.def9
-rw-r--r--logforwarder/src/main/resources/configdefinitions/logforwarder.def9
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=""