aboutsummaryrefslogtreecommitdiffstats
path: root/config-model/src
diff options
context:
space:
mode:
authorArne Juul <arnej@yahooinc.com>2022-12-07 13:49:39 +0000
committerArne Juul <arnej@yahooinc.com>2022-12-08 12:08:11 +0000
commitb63e8fcf5afcc0cc00ee07f2155c62d318849258 (patch)
tree9d2ce1dc6a8eb59eb1fa4242c53b0cfec5672228 /config-model/src
parent99b1c7795757d0f337d319bfa8f559382692665d (diff)
add logctl override
Diffstat (limited to 'config-model/src')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/Service.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java9
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminBuilderBase.java17
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java1
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java1
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainer.java11
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java17
-rw-r--r--config-model/src/main/resources/schema/admin.rnc16
9 files changed, 78 insertions, 0 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java b/config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java
index 43b59abd5b5..dfb5b1d3e22 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/ConfigSentinel.java
@@ -100,6 +100,9 @@ public class ConfigSentinel extends AbstractService implements SentinelConfig.Pr
for (var entry : s.getEnvVars().entrySet()) {
serviceBuilder.environ(b -> b.varname(entry.getKey()).varvalue(entry.getValue().toString()));
}
+ for (var entry : s.getLogctlSpecs()) {
+ serviceBuilder.logctl(b -> b.componentSpec(entry.componentSpec).levelsModSpec(entry.levelsModSpec));
+ }
setPreShutdownCommand(serviceBuilder, s);
return serviceBuilder;
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/Service.java b/config-model/src/main/java/com/yahoo/vespa/model/Service.java
index f529b22cc45..2daa6ff66ba 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/Service.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/Service.java
@@ -4,6 +4,7 @@ package com.yahoo.vespa.model;
import com.yahoo.config.model.api.ServiceInfo;
import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import java.util.Optional;
@@ -24,6 +25,8 @@ public interface Service extends ConfigProducer, NetworkPortRequestor {
// environment variables specific for this service:
Map<String, Object> getEnvVars();
+ default List<LogctlSpec> getLogctlSpecs() { return List.of(); }
+
/**
* Services that wish that a command should be run before shutdown
* should return the command here. The command will be executed
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java b/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java
index 79f65264249..e29615b7fb3 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/admin/Admin.java
@@ -15,6 +15,7 @@ import com.yahoo.vespa.model.AbstractService;
import com.yahoo.vespa.model.ConfigProxy;
import com.yahoo.vespa.model.ConfigSentinel;
import com.yahoo.vespa.model.HostResource;
+import com.yahoo.vespa.model.LogctlSpec;
import com.yahoo.vespa.model.Logd;
import com.yahoo.vespa.model.admin.clustercontroller.ClusterControllerContainer;
import com.yahoo.vespa.model.admin.clustercontroller.ClusterControllerContainerCluster;
@@ -68,6 +69,14 @@ public class Admin extends AbstractConfigProducer<Admin> implements Serializable
this.logForwarderIncludeAdmin = includeAdmin;
}
+ private final List<LogctlSpec> logctlSpecs = new ArrayList<>();
+ public List<LogctlSpec> getLogctlSpecs() {
+ return logctlSpecs;
+ }
+ public void addLogctlCommand(String componentSpec, String levelsModSpec) {
+ logctlSpecs.add(new LogctlSpec(componentSpec, levelsModSpec));
+ }
+
/**
* The single cluster controller cluster shared by all content clusters by default when not multitenant.
* If multitenant, this is null.
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 06453bffaaf..ecd4baf6b5e 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
@@ -110,4 +110,21 @@ public abstract class DomAdminBuilderBase extends VespaDomBuilder.DomConfigProdu
}
}
+ private void addLoggingSpec(ModelElement loggingSpec, Admin admin) {
+ if (loggingSpec == null) return;
+ String componentSpec = loggingSpec.requiredStringAttribute("name");
+ String levelsModSpec = loggingSpec.requiredStringAttribute("levels");
+ admin.addLogctlCommand(componentSpec, levelsModSpec);
+ }
+
+ void addLoggingSpecs(ModelElement loggingElement, Admin admin) {
+ if (loggingElement == null) return;
+ for (ModelElement e : loggingElement.children("class")) {
+ addLoggingSpec(e, admin);
+ }
+ for (ModelElement e : loggingElement.children("package")) {
+ addLoggingSpec(e, admin);
+ }
+ }
+
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java
index ac5633a1461..10a9688d52d 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV2Builder.java
@@ -47,6 +47,7 @@ public class DomAdminV2Builder extends DomAdminBuilderBase {
admin.setClusterControllers(addConfiguredClusterControllers(deployState, admin, adminE), deployState);
addLogForwarders(new ModelElement(adminE).child("logforwarding"), admin);
+ addLoggingSpecs(new ModelElement(adminE).child("logging"), admin);
}
private List<Configserver> parseConfigservers(DeployState deployState, Admin admin, Element adminE) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java
index d27f78f6a8a..567ccbfa88b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java
@@ -56,6 +56,7 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
assignLogserver(deployState, requestedLogservers.orElse(createNodesSpecificationForLogserver()), admin);
addLogForwarders(adminElement.child("logforwarding"), admin);
+ addLoggingSpecs(adminElement.child("logging"), admin);
}
private void assignSlobroks(DeployState deployState, NodesSpecification nodesSpecification, Admin admin) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainer.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainer.java
index 1971ccc3035..53858f8cc0e 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainer.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainer.java
@@ -9,8 +9,10 @@ import com.yahoo.config.model.producer.AbstractConfigProducer;
import com.yahoo.config.provision.ClusterSpec;
import com.yahoo.config.provision.NodeResources;
import com.yahoo.search.config.QrStartConfig;
+import com.yahoo.vespa.model.LogctlSpec;
import com.yahoo.vespa.model.container.component.SimpleComponent;
+import java.util.List;
import java.util.Optional;
import static com.yahoo.vespa.defaults.Defaults.getDefaults;
@@ -42,6 +44,15 @@ public final class ApplicationContainer extends Container implements
addComponent(new SimpleComponent("com.yahoo.container.jdisc.ClusterInfoProvider"));
}
+ private List<LogctlSpec> logctlSpecs = List.of();
+ void setLogctlSpecs(List<LogctlSpec> logctlSpecs) {
+ this.logctlSpecs = logctlSpecs;
+ }
+ @Override
+ public List<LogctlSpec> getLogctlSpecs() {
+ return logctlSpecs;
+ }
+
@Override
public void getConfig(QrStartConfig.Builder builder) {
if (getHostResource() != null) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java
index c097f856da2..db43dfc0beb 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ApplicationContainerCluster.java
@@ -31,6 +31,7 @@ import com.yahoo.vespa.config.search.core.OnnxModelsConfig;
import com.yahoo.vespa.config.search.core.RankingConstantsConfig;
import com.yahoo.vespa.config.search.core.RankingExpressionsConfig;
import com.yahoo.vespa.model.AbstractService;
+import com.yahoo.vespa.model.VespaModel;
import com.yahoo.vespa.model.admin.metricsproxy.MetricsProxyContainer;
import com.yahoo.vespa.model.container.component.BindingPattern;
import com.yahoo.vespa.model.container.component.Component;
@@ -125,11 +126,27 @@ public final class ApplicationContainerCluster extends ContainerCluster<Applicat
: defaultHeapSizePercentageOfTotalNodeMemory;
}
+ private void wireLogctlSpecs() {
+ var parent = getParent();
+ if (parent != null) {
+ var r = parent.getRoot();
+ if (r instanceof VespaModel model) {
+ var admin = model.getAdmin();
+ if (admin != null) {
+ for (var c : getContainers()) {
+ c.setLogctlSpecs(admin.getLogctlSpecs());
+ }
+ }
+ }
+ }
+ }
+
@Override
protected void doPrepare(DeployState deployState) {
addAndSendApplicationBundles(deployState);
sendUserConfiguredFiles(deployState);
createEndpointList(deployState);
+ wireLogctlSpecs();
}
private void addAndSendApplicationBundles(DeployState deployState) {
diff --git a/config-model/src/main/resources/schema/admin.rnc b/config-model/src/main/resources/schema/admin.rnc
index 6f4c90159d8..392572e1f12 100644
--- a/config-model/src/main/resources/schema/admin.rnc
+++ b/config-model/src/main/resources/schema/admin.rnc
@@ -12,6 +12,7 @@ AdminV2 =
AdminMonitoring? &
Metrics? &
ClusterControllers? &
+ LoggingSpecs? &
LogForwarding?
}
@@ -30,6 +31,7 @@ AdminV4 =
GenericConfig* &
AdminMonitoring? &
Metrics? &
+ LoggingSpecs? &
LogForwarding?
}
@@ -113,3 +115,17 @@ LogForwarding = element logforwarding {
attribute phone-home-interval { xsd:positiveInteger }?
}
}
+
+LoggingSpecs = element logging {
+ (
+ element class {
+ attribute name { xsd:Name } &
+ attribute levels { xsd:string }
+ }
+ |
+ element package {
+ attribute name { xsd:Name } &
+ attribute levels { xsd:string }
+ }
+ )*
+}