From ca786efb5558b5ced4c36faf83a746a547ae9fe6 Mon Sep 17 00:00:00 2001 From: jonmv Date: Tue, 10 Jan 2023 21:24:14 +0100 Subject: Read tags from deployment spec in package --- .../config/server/session/SessionPreparer.java | 24 +++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'configserver/src') diff --git a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java index 6589d9d721a..7629fdd8bfd 100644 --- a/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java +++ b/configserver/src/main/java/com/yahoo/vespa/config/server/session/SessionPreparer.java @@ -11,7 +11,9 @@ import com.yahoo.config.application.XmlPreProcessor; import com.yahoo.config.application.api.ApplicationMetaData; import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.config.application.api.DeployLogger; +import com.yahoo.config.application.api.DeploymentInstanceSpec; import com.yahoo.config.application.api.FileRegistry; +import com.yahoo.config.application.api.xml.DeploymentSpecXmlReader; import com.yahoo.config.model.api.ConfigDefinitionRepo; import com.yahoo.config.model.api.ContainerEndpoint; import com.yahoo.config.model.api.EndpointCertificateMetadata; @@ -24,6 +26,7 @@ import com.yahoo.config.provision.ApplicationId; import com.yahoo.config.provision.AthenzDomain; import com.yahoo.config.provision.CloudAccount; import com.yahoo.config.provision.DockerImage; +import com.yahoo.config.provision.InstanceName; import com.yahoo.config.provision.Tags; import com.yahoo.config.provision.Zone; import com.yahoo.container.jdisc.secretstore.SecretStore; @@ -267,11 +270,17 @@ public class SessionPreparer { File hostsXml = applicationPackage.getFileReference(Path.fromString("hosts.xml")); // Validate after doing our own preprocessing on these two files - if(servicesXml.exists()) { - vespaPreprocess(applicationPackageDir.getAbsoluteFile(), servicesXml, applicationPackage.getMetaData()); + ApplicationMetaData meta = applicationPackage.getMetaData(); + InstanceName instance = meta.getApplicationId().instance(); + Tags tags = applicationPackage.getDeployment().map(new DeploymentSpecXmlReader(false)::read) + .flatMap(spec -> spec.instance(instance)) + .map(DeploymentInstanceSpec::tags) + .orElse(Tags.empty()); + if (servicesXml.exists()) { + vespaPreprocess(applicationPackageDir.getAbsoluteFile(), servicesXml, meta, tags); } - if(hostsXml.exists()) { - vespaPreprocess(applicationPackageDir.getAbsoluteFile(), hostsXml, applicationPackage.getMetaData()); + if (hostsXml.exists()) { + vespaPreprocess(applicationPackageDir.getAbsoluteFile(), hostsXml, meta, tags); } if (zone.system().isPublic()) { @@ -315,14 +324,15 @@ public class SessionPreparer { } } - void vespaPreprocess(File appDir, File inputXml, ApplicationMetaData metaData) { + void vespaPreprocess(File appDir, File inputXml, ApplicationMetaData metaData, Tags tags) { try { + InstanceName instance = metaData.getApplicationId().instance(); new XmlPreProcessor(appDir, inputXml, - metaData.getApplicationId().instance(), + instance, zone.environment(), zone.region(), - metaData.getTags()) + tags) .run(); } catch (ParserConfigurationException | IOException | SAXException | TransformerException e) { throw new RuntimeException(e); -- cgit v1.2.3