public DeployLogger deployLogger() { return deployState.getDeployLogger(); }
public DeployLogger getDeployLogger() { return deployState.getDeployLogger(); } public DeployState getDeployState() { return deployState; }
private List<Configserver> parseConfigservers(DeployState deployState, Admin admin, Element adminE) { List<Configserver> configservers; if (multitenant) { configservers = getConfigServersFromSpec(deployState.getDeployLogger(), admin); } else { configservers = getConfigServers(deployState, admin, adminE); } int count = configservers.size(); if (count % 2 == 0) { deployState.getDeployLogger().log(Level.WARNING, "An even number (" + count + ") of config servers have been configured. " + "This is discouraged, see doc for configuration server "); } return configservers; }
private void initializeProducer(AbstractConfigProducer child, DeployState deployState, Element producerSpec) { UserConfigRepo userConfigs = UserConfigBuilder.build(producerSpec, deployState, deployState.getDeployLogger()); // TODO: must be made to work: //userConfigs.applyWarnings(child); log.log(LogLevel.DEBUG, "Adding user configs " + userConfigs + " for " + producerSpec); child.mergeUserConfigs(userConfigs); }
private void addCommonServices(HostResource host, DeployState deployState) { addConfigSentinel(deployState.getDeployLogger(), host, deployState.getProperties().applicationId(), deployState.zone()); addLogd(deployState.getDeployLogger(), host); addConfigProxy(deployState.getDeployLogger(), host); addFileDistribution(host); if (logForwarderConfig != null) { addLogForwarder(deployState.getDeployLogger(), host); } }
private void sendUserConfiguredFiles(DeployState deployState) { // Files referenced from user configs to all components. for (Component<?, ?> component : getAllComponents()) { FileSender.sendUserConfiguredFiles(component, containers, deployState.getDeployLogger()); } }
@Override public void validate(VespaModel model, DeployState deployState) { List<AbstractSearchCluster> searchClusters = model.getSearchClusters(); for (AbstractSearchCluster cluster : searchClusters) { if (!cluster.isStreaming()) { continue; } SearchCluster sc = (SearchCluster) cluster; warnStreamingAttributes(sc, deployState.getDeployLogger()); warnStreamingGramMatching(sc, deployState.getDeployLogger()); failStreamingDocumentReferences(sc); } }
public StorageGroup buildRootGroup(DeployState deployState) { Optional<ModelElement> group = Optional.ofNullable(clusterElement.getChild("group")); Optional<ModelElement> nodes = getNodes(clusterElement); if (group.isPresent() && nodes.isPresent()) throw new IllegalStateException("Both group and nodes exists, only one of these tags is legal"); if (group.isPresent() && (group.get().getStringAttribute("name") != null || group.get().getIntegerAttribute("distribution-key") != null)) deployState.getDeployLogger().log(LogLevel.INFO, "'distribution-key' attribute on a content cluster's root group is ignored"); GroupBuilder groupBuilder = collectGroup(group, nodes, null, null); if (owner.isHostedVespa()) { return groupBuilder.buildHosted(deployState, owner, Optional.empty()); } else { return groupBuilder.buildNonHosted(deployState, owner, Optional.empty()); } }
/** * Adds services to all hosts in the system. */ public void addPerHostServices(List<HostResource> hosts, DeployState deployState) { if (slobroks.isEmpty()) // TODO: Move to caller slobroks.addAll(createDefaultSlobrokSetup(deployState.getDeployLogger())); for (HostResource host : hosts) { if (!host.getHost().runsConfigServer()) { addCommonServices(host, deployState); } } } private void addCommonServices(HostResource host, DeployState deployState) {
private void assignLogserver(DeployState deployState, NodesSpecification nodesSpecification, Admin admin) { if (nodesSpecification.count() > 1) throw new IllegalArgumentException("You can only request a single log server"); if (nodesSpecification.isDedicated()) { Collection<HostResource> hosts = allocateHosts(admin.getHostSystem(), "logserver", nodesSpecification); if (hosts.isEmpty()) return; // No log server can be created (and none is needed) Logserver logserver = createLogserver(deployState.getDeployLogger(), admin, hosts); createAdditionalContainerOnLogserverHost(deployState, admin, logserver.getHostResource()); } else if (containerModels.iterator().hasNext()) { List<HostResource> hosts = sortedContainerHostsFrom(containerModels.iterator().next(), nodesSpecification.count(), false); if (hosts.isEmpty()) return; // No log server can be created (and none is needed) createLogserver(deployState.getDeployLogger(), admin, hosts); } else { context.getDeployLogger().log(LogLevel.INFO, "No container host available to use for running logserver"); } }
public MockRoot(String rootConfigId, DeployState deployState) { super(rootConfigId); hostSystem = new HostSystem(this, "hostsystem", deployState.getProvisioner(), deployState.getDeployLogger()); this.deployState = deployState; fileDistributor = new FileDistributor(deployState.getFileRegistry(), null); }
/** 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); }
private void deriveSingleSearchDefinition(com.yahoo.searchdefinition.Search localSearch, DeployState deployState) { if (!localSearch.getName().equals(docTypeName)) { throw new IllegalStateException("Mismatch between document type name (" + docTypeName + ") and name of search definition (" + localSearch.getName() + ")"); } this.sdConfig = new DerivedConfiguration(localSearch, deployState.getDeployLogger(), deployState.rankProfileRegistry(), deployState.getQueryProfiles().getRegistry(), deployState.getImportedModels()); } @Override
@Override protected void doBuildAdmin(DeployState deployState, Admin admin, Element w3cAdminElement) { ModelElement adminElement = new ModelElement(w3cAdminElement); admin.addConfigservers(getConfigServersFromSpec(deployState.getDeployLogger(), admin)); // Note: These two elements only exists in admin version 4.0 // This build handles admin version 3.0 by ignoring its content (as the content is not useful) Optional<NodesSpecification> requestedSlobroks = NodesSpecification.optionalDedicatedFromParent(adminElement.getChild("slobroks"), context); Optional<NodesSpecification> requestedLogservers = NodesSpecification.optionalDedicatedFromParent(adminElement.getChild("logservers"), context); assignSlobroks(deployState.getDeployLogger(), requestedSlobroks.orElse(NodesSpecification.nonDedicated(3, context)), admin); assignLogserver(deployState, requestedLogservers.orElse(createNodesSpecificationForLogserver()), admin); addLogForwarders(adminElement.getChild("logforwarding"), admin); }
@Override protected ConnectorFactory doBuild(DeployState deployState, AbstractConfigProducer ancestor, Element serverSpec) { String name = XmlHelper.getIdString(serverSpec); int port = HttpBuilder.readPort(serverSpec, deployState.isHosted(), deployState.getDeployLogger()); SimpleComponent sslProviderComponent = getSslConfigComponents(name, serverSpec); return new ConnectorFactory(name, port, sslProviderComponent); }
private void addSearchDefinitions(DeployState deployState, List<ModelElement> searchDefs, AbstractSearchCluster sc) { for (ModelElement e : searchDefs) { SearchDefinitionXMLHandler searchDefinitionXMLHandler = new SearchDefinitionXMLHandler(e); SearchDefinition searchDefinition = searchDefinitionXMLHandler.getResponsibleSearchDefinition(deployState.getSearchDefinitions()); if (searchDefinition == null) throw new RuntimeException("Search definition parsing error or file does not exist: '" + searchDefinitionXMLHandler.getName() + "'"); // TODO: remove explicit building of user configs when the complete content model is built using builders. sc.getLocalSDS().add(new AbstractSearchCluster.SearchDefinitionSpec(searchDefinition, UserConfigBuilder.build(e.getXml(), deployState, deployState.getDeployLogger()))); //need to get the document names from this sdfile sc.addDocumentNames(searchDefinition); } }
private static StorageNode createStorageNode(DeployState deployState, ContentCluster parent, HostResource hostResource, StorageGroup parentGroup, ClusterMembership clusterMembership) { StorageNode sNode = new StorageNode(parent.getStorageNodes(), null, clusterMembership.index(), clusterMembership.retired()); sNode.setHostResource(hostResource); sNode.initService(deployState.getDeployLogger()); // TODO: Supplying null as XML is not very nice PersistenceEngine provider = parent.getPersistence().create(deployState, sNode, parentGroup, null); Distributor d = new Distributor(parent.getDistributorNodes(), clusterMembership.index(), null, provider); d.setHostResource(sNode.getHostResource()); d.initService(deployState.getDeployLogger()); return sNode; } }
@Override protected ApplicationConfigProducerRoot doBuild(DeployState deployState, AbstractConfigProducer parent, Element producerSpec) { ApplicationConfigProducerRoot root = new ApplicationConfigProducerRoot(parent, name, deployState.getDocumentModel(), deployState.getVespaVersion(), deployState.getProperties().applicationId()); root.setHostSystem(new HostSystem(root, "hosts", deployState.getProvisioner(), deployState.getDeployLogger())); new Client(root); return root; } }
@Override protected void deriveAllSearchDefinitions(List<SearchDefinitionSpec> localSearches, DeployState deployState) { for (SearchDefinitionSpec spec : localSearches) { com.yahoo.searchdefinition.Search search = spec.getSearchDefinition().getSearch(); if ( ! (search instanceof DocumentOnlySearch)) { DocumentDatabase db = new DocumentDatabase(this, search.getName(), new DerivedConfiguration(search, deployState.getDeployLogger(), deployState.rankProfileRegistry(), deployState.getQueryProfiles().getRegistry(), deployState.getImportedModels())); // TODO: remove explicit adding of user configs when the complete content model is built using builders. db.mergeUserConfigs(spec.getUserConfigs()); documentDbs.add(db); } } }
private void createAdditionalContainerOnLogserverHost(DeployState deployState, Admin admin, HostResource hostResource) { ContainerCluster logServerCluster = new ContainerCluster(admin, "logserver-cluster", "logserver-cluster", deployState); ContainerModel logserverClusterModel = new ContainerModel(context.withParent(admin).withId(logServerCluster.getSubId())); // Add base handlers and the log handler logServerCluster.addMetricStateHandler(); logServerCluster.addApplicationStatusHandler(); logServerCluster.addDefaultRootHandler(); logServerCluster.addVipHandler(); addLogHandler(logServerCluster); logserverClusterModel.setCluster(logServerCluster); Container container = new Container(logServerCluster, "" + 0, 0, deployState.isHosted()); container.setHostResource(hostResource); container.initService(deployState.getDeployLogger()); logServerCluster.addContainer(container); admin.addAndInitializeService(deployState.getDeployLogger(), hostResource, container); admin.setLogserverContainerCluster(logServerCluster); }