public ApplicationPackage getApplicationPackage() { return deployState.getApplicationPackage(); } public String getProducerId() { return producerId; }
private List<Element> allChainElements(DeployState deployState, AbstractConfigProducer ancestor, Element chainsElement) { List<Element> chainsElements = new ArrayList<>(); if (outerChainsElem != null) chainsElements.add(outerChainsElem); chainsElements.add(chainsElement); if (appPkgChainsDir != null) chainsElements.addAll(Xml.allElemsFromPath(deployState.getApplicationPackage(), appPkgChainsDir)); return chainsElements; }
private void setApplicationMetaData(DeployState deployState) { applicationMetaData = deployState.getApplicationPackage().getMetaData(); }
@Override public void validate(VespaModel model, DeployState deployState) { Optional<Reader> deployment = deployState.getApplicationPackage().getDeployment(); if (deployment.isPresent()) { Reader deploymentReader = deployment.get(); DeploymentSpec deploymentSpec = DeploymentSpec.fromXml(deploymentReader); final Optional<String> globalServiceId = deploymentSpec.globalServiceId(); if (globalServiceId.isPresent()) { Set<ContainerCluster> containerClusters = model.getRoot().configModelRepo().getModels(ContainerModel.class).stream(). map(ContainerModel::getCluster).filter(cc -> cc.getName().equals(globalServiceId.get())).collect(Collectors.toSet()); if (containerClusters.size() != 1) { throw new IllegalArgumentException("global-service-id '" + globalServiceId.get() + "' specified in deployment.xml does not match any container cluster id"); } } } } }
@Override public ApplicationConfigProducerRoot getRoot(String name, DeployState deployState, AbstractConfigProducer parent) { try { return new DomRootBuilder(name). build(deployState, parent, XmlHelper.getDocument(deployState.getApplicationPackage().getServices()).getDocumentElement()); } catch (Exception e) { throw new IllegalArgumentException(e); } }
@Override public List<ServiceCluster> getClusters(DeployState deployState, AbstractConfigProducer parent) { List<ServiceCluster> clusters = new ArrayList<>(); Document services = XmlHelper.getDocument(deployState.getApplicationPackage().getServices()); for (Element clusterSpec : XML.getChildren(services.getDocumentElement(), "cluster")) { DomServiceClusterBuilder clusterBuilder = new DomServiceClusterBuilder(clusterSpec.getAttribute("name")); clusters.add(clusterBuilder.build(deployState, parent.getRoot(), clusterSpec)); } return clusters; }
private void addAndSendApplicationBundles(DeployState deployState) { for (ComponentInfo component : deployState.getApplicationPackage().getComponentsInfo(deployState.getVespaVersion())) { FileReference reference = FileSender.sendFileToServices(component.getPathRelativeToAppDir(), containers); applicationBundles.add(reference); } }
/** * Build a model given a deploy state. * * @param deployState An instance of {@link com.yahoo.config.model.deploy.DeployState} * @return a producer root capable of answering getConfig requests. */ public TestRoot buildModel(DeployState deployState) { MapConfigModelRegistry registry = new MapConfigModelRegistry(builders); try { validate(deployState.getApplicationPackage()); return new TestRoot(new VespaModel(registry, deployState)); } catch (IOException | SAXException e) { throw new RuntimeException(e); } }
/** Initialize part 1.: Reads the config models used in the application package. */ public void readConfigModels(DeployState deployState, VespaModel vespaModel, VespaModelBuilder builder, ApplicationConfigProducerRoot root, ConfigModelRegistry configModelRegistry) throws IOException, SAXException { Element userServicesElement = getServicesFromApp(deployState.getApplicationPackage()); readConfigModels(root, userServicesElement, deployState, vespaModel, configModelRegistry); builder.postProc(deployState.getDeployLogger(), root, this); }
@Override public void validate(VespaModel model, DeployState deployState) { ApplicationPackage app = deployState.getApplicationPackage(); for (ComponentInfo info : app.getComponentsInfo(deployState.getVespaVersion())) { try { this.jarFile = new JarFile(app.getFileReference(Path.fromString(info.getPathRelativeToAppDir()))); } catch (ZipException e) { throw new IllegalArgumentException("Error opening jar file '" + info.getPathRelativeToAppDir() + "'. Please check that this is a valid jar file"); } catch (IOException e) { e.printStackTrace(); } try { validateAll(deployState.getDeployLogger()); } catch (IOException e) { e.printStackTrace(); } } }
@Override public void validate(VespaModel model, DeployState deployState) { ApplicationPackage applicationPackage = deployState.getApplicationPackage(); ExceptionMessageCollector exceptionMessageCollector = new ExceptionMessageCollector("Invalid constant tensor file(s):"); for (SearchDefinition sd : deployState.getSearchDefinitions()) { for (RankingConstant rc : sd.getSearch().rankingConstants().asMap().values()) { try { validateRankingConstant(rc, applicationPackage); } catch (InvalidConstantTensor | FileNotFoundException ex) { exceptionMessageCollector.add(ex, rc.getName(), rc.getFileName()); } } } if (exceptionMessageCollector.exceptionsOccurred) { throw new TensorValidationFailed(exceptionMessageCollector.combinedMessage); } }
private ContainerSearch buildSearch(DeployState deployState, ContainerCluster containerCluster, Element producerSpec) { SearchChains searchChains = new DomSearchChainsBuilder(null, false).build(deployState, containerCluster, producerSpec); ContainerSearch containerSearch = new ContainerSearch(containerCluster, searchChains, new ContainerSearch.Options()); applyApplicationPackageDirectoryConfigs(deployState.getApplicationPackage(), containerSearch); containerSearch.setQueryProfiles(deployState.getQueryProfiles()); containerSearch.setSemanticRules(deployState.getSemanticRules()); return containerSearch; }
configModelRegistry = new VespaConfigModelRegistry(configModelRegistry); VespaModelBuilder builder = new VespaDomBuilder(); this.applicationPackage = deployState.getApplicationPackage(); root = builder.getRoot(VespaModel.ROOT_CONFIGID, deployState, this);