Class VespaModel

  • All Implemented Interfaces:
    com.yahoo.config.ConfigInstance.Producer, com.yahoo.config.model.api.Model, ConfigProducer, ConfigProducerRoot, java.io.Serializable

    public final class VespaModel
    extends AbstractConfigProducerRoot
    implements java.io.Serializable, com.yahoo.config.model.api.Model

    The root ConfigProducer node for all Vespa systems (there is currently only one). The main class for building the Vespa model.

    The vespa model starts in an unfrozen state, where children can be added freely, but no structure dependent information can be used. When frozen, structure dependent information(such as config id and controller) are made available, but no additional config producers can be added.

    Author:
    gjoranv
    See Also:
    Serialized Form
    • Field Detail

      • log

        public static final java.util.logging.Logger log
      • ROOT_CONFIGID

        public static final java.lang.String ROOT_CONFIGID
        The config id for the root config producer
        See Also:
        Constant Field Values
    • Constructor Detail

      • VespaModel

        public VespaModel​(com.yahoo.config.application.api.ApplicationPackage app)
                   throws java.io.IOException,
                          org.xml.sax.SAXException
        Creates a Vespa Model from internal model types only
        Throws:
        java.io.IOException
        org.xml.sax.SAXException
      • VespaModel

        public VespaModel​(DeployState deployState)
                   throws java.io.IOException,
                          org.xml.sax.SAXException
        Creates a Vespa Model from internal model types only
        Throws:
        java.io.IOException
        org.xml.sax.SAXException
      • VespaModel

        public VespaModel​(com.yahoo.config.application.api.ApplicationPackage app,
                          ConfigModelRegistry configModelRegistry)
                   throws java.io.IOException,
                          org.xml.sax.SAXException
        Constructs vespa model using config given in app
        Parameters:
        app - the application to create a model from
        configModelRegistry - a registry of config model "main" classes which may be used to instantiate config models
        Throws:
        java.io.IOException
        org.xml.sax.SAXException
      • VespaModel

        public VespaModel​(ConfigModelRegistry configModelRegistry,
                          DeployState deployState)
                   throws java.io.IOException,
                          org.xml.sax.SAXException
        Constructs vespa model using config given in app
        Parameters:
        configModelRegistry - a registry of config model "main" classes which may be used to instantiate config models
        deployState - the global deploy state to use for this model.
        Throws:
        java.io.IOException
        org.xml.sax.SAXException
    • Method Detail

      • applicationPackage

        public com.yahoo.config.application.api.ApplicationPackage applicationPackage()
        Returns the application package owning this
      • rankingConstants

        public RankingConstants rankingConstants()
        Returns the global ranking constants of this
      • createIncomplete

        public static VespaModel createIncomplete​(DeployState deployState)
                                           throws java.io.IOException,
                                                  org.xml.sax.SAXException
        Creates a mutable model with no services instantiated
        Throws:
        java.io.IOException
        org.xml.sax.SAXException
      • rankProfileList

        public RankProfileList rankProfileList()
        Returns the global rank profiles as a rank profile list
      • getHosts

        public java.util.Set<com.yahoo.config.model.api.HostInfo> getHosts()
        Return a collection of all hostnames used in this application
        Specified by:
        getHosts in interface com.yahoo.config.model.api.Model
      • fileReferences

        public java.util.Set<com.yahoo.config.FileReference> fileReferences()
        Specified by:
        fileReferences in interface com.yahoo.config.model.api.Model
      • allowModelVersionMismatch

        public boolean allowModelVersionMismatch​(java.time.Instant now)
        Specified by:
        allowModelVersionMismatch in interface com.yahoo.config.model.api.Model
      • skipOldConfigModels

        public boolean skipOldConfigModels​(java.time.Instant now)
        Specified by:
        skipOldConfigModels in interface com.yahoo.config.model.api.Model
      • version

        public com.yahoo.component.Version version()
        Specified by:
        version in interface com.yahoo.config.model.api.Model
      • getConfig

        public <CONFIGTYPE extends com.yahoo.config.ConfigInstance> CONFIGTYPE getConfig​(java.lang.Class<CONFIGTYPE> clazz,
                                                                                         java.lang.String configId)
        Resolves config of the given type and config id, by first instantiating the correct ConfigInstance.Builder, calling getConfig(com.yahoo.config.ConfigInstance.Builder, String). The default values used will be those of the config types in the model.
        Specified by:
        getConfig in interface ConfigProducerRoot
        Parameters:
        clazz - the type of config
        configId - the config id
        Returns:
        a config instance of the given type
      • getConfig

        public static <CONFIGTYPE extends com.yahoo.config.ConfigInstance> CONFIGTYPE getConfig​(java.lang.Class<CONFIGTYPE> configClass,
                                                                                                ConfigProducer configProducer)
        Populates an instance of configClass with config produced by configProducer.
      • checkId

        protected void checkId​(java.lang.String configId)
        Throw if the config id does not exist in the model.
        Parameters:
        configId - a config id
      • getConfig

        public com.yahoo.config.ConfigInstance.Builder getConfig​(com.yahoo.config.ConfigInstance.Builder builder,
                                                                 java.lang.String configId)
        Resolves config for a given config id and populates the given builder with the config.
        Specified by:
        getConfig in interface ConfigProducerRoot
        Parameters:
        builder - a configinstance builder
        configId - the config id for the config client
        Returns:
        the builder if a producer was found, and it did apply config, null otherwise
      • getConfig

        public com.yahoo.vespa.config.ConfigPayload getConfig​(com.yahoo.vespa.config.ConfigKey configKey,
                                                              com.yahoo.vespa.config.buildergen.ConfigDefinition targetDef)
        Resolve config for a given key and config definition
        Specified by:
        getConfig in interface com.yahoo.config.model.api.Model
        Parameters:
        configKey - The key to resolve.
        targetDef - The config definition to use for the schema
        Returns:
        The payload as a list of strings
      • allConfigsProduced

        public java.util.Set<com.yahoo.vespa.config.ConfigKey<?>> allConfigsProduced()
        Specified by:
        allConfigsProduced in interface com.yahoo.config.model.api.Model
      • allConfigIds

        public java.util.Set<java.lang.String> allConfigIds()
        The set of all config ids present
        Specified by:
        allConfigIds in interface com.yahoo.config.model.api.Model
        Returns:
        set of config ids
      • distributeFiles

        public void distributeFiles​(com.yahoo.config.model.api.FileDistribution fileDistribution)
        Specified by:
        distributeFiles in interface com.yahoo.config.model.api.Model
      • allocatedHosts

        public com.yahoo.config.provision.AllocatedHosts allocatedHosts()
        Specified by:
        allocatedHosts in interface com.yahoo.config.model.api.Model
      • getConfigIds

        public java.util.Set<java.lang.String> getConfigIds()
        Specified by:
        getConfigIds in interface ConfigProducerRoot
        Returns:
        an unmodifiable copy of the set of configIds in this VespaModel.
      • getAdmin

        public Admin getAdmin()
        Returns the admin component of the vespamodel.
        Specified by:
        getAdmin in interface ConfigProducerRoot
        Returns:
        Admin
      • addDescendant

        public void addDescendant​(java.lang.String configId,
                                  AbstractConfigProducer descendant)
        Adds the descendant (at any depth level), so it can be looked up on configId in the Map.
        Specified by:
        addDescendant in interface ConfigProducerRoot
        Parameters:
        configId - the id to register with, not necessarily equal to descendant.getConfigId().
        descendant - The configProducer descendant to add
      • getClients

        public Clients getClients()
      • getSearchClusters

        public java.util.List<AbstractSearchCluster> getSearchClusters()
        Returns all search clusters, both in Search and Content
      • getContentClusters

        public java.util.Map<java.lang.String,​ContentCluster> getContentClusters()
        Returns a map of content clusters by ID
      • getContainerClusters

        public java.util.Map<java.lang.String,​ApplicationContainerCluster> getContainerClusters()
        Returns a map of container clusters by ID
      • getRouting

        public Routing getRouting()
        Returns the routing config model. This might be null.
      • serviceClusters

        public java.util.List<ServiceCluster> serviceClusters()
        The clusters of application specific generic services
      • id2producer

        public java.util.Map<java.lang.String,​ConfigProducer> id2producer()
        Returns an unmodifiable view of the mapping of config id to ConfigProducer
      • provisioned

        public com.yahoo.config.model.api.Provisioned provisioned()
        If provisioning through the node repo, returns the provision requests issued during build of this
      • allClusters

        public java.util.Set<com.yahoo.config.provision.ClusterSpec.Id> allClusters()
        Returns the id of all clusters in this