All Downloads are FREE. Search and download functionalities are using the official Maven repository.

schema.containercluster.rnc Maven / Gradle / Ivy

# Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
ContainerCluster = element container {
    attribute version { "1.0" } &
    attribute id { xsd:NCName }? &
    Include* &
    ContainerServices &    
    DocumentBinding* &
    NodesOfContainerCluster? &
    ClientAuthorize?
}

ContainerServices =
    SearchInContainer? &
    DocprocInContainer? &
    ProcessingInContainer? &
    ModelEvaluation? &
    DocumentApi? &
    Components* &
    Component* &
    Handler* &
    Server* &
    Http? &
    AccessLog* &
    SecretStore? &
    ZooKeeper? &
    GenericConfig* &
    Clients?

# TODO(ogronnesby): Change this configuration syntax
ClientAuthorize = element client-authorize { empty }

Components = element components {
    Include* &
    Component*
}

Include = element \include {
    attribute dir { text }
}

Http = element http {
    (Filtering & HttpServer+) |
    HttpServer+ |
    empty
}

Filtering = element filtering {
    attribute strict-mode { xsd:boolean }? &
    HttpFilter* &
    AccessControl? &
    element request-chain {
        HttpFilterChain
    }* &
    element response-chain {
        HttpFilterChain
    }*
}

HttpServer =  element server {
    attribute port { xsd:nonNegativeInteger }? &
    attribute required { xsd:boolean }? &
    attribute default-request-chain { xsd:string }? &
    attribute default-response-chain { xsd:string }? &
    ComponentId &
    (Ssl | SslProvider)? &
    GenericConfig*
}

AccessLog = element accesslog {
    attribute type { string "yapache" | string "vespa" | string "json" | string "disabled" }? &
    attribute fileNamePattern { string }? &
    attribute compressOnRotation { xsd:boolean }? &
    attribute symlinkName { string }? &
    attribute compressionType { string "gzip" | string "zstd" }? &
    attribute queueSize { xsd:nonNegativeInteger }? &
    attribute bufferSize { xsd:nonNegativeInteger }? &
    attribute rotationInterval { string }?
}

SecretStore = element secret-store {
    attribute type { string "oath-ckms" | string "cloud" } &
    element group {
      attribute name { string } &
      attribute environment { string "alpha" | string "corp" | string "prod" | string "aws" | string "aws_stage" }
    } * &
    element store {
      attribute id { string } &
      element aws-parameter-store {
        attribute account { string } &
        attribute aws-region { string }
      } *
    }?
}

ZooKeeper = element zookeeper {
    attribute session-timeout-seconds { string }?
}

ModelEvaluation = element model-evaluation {
    element onnx {
        element models {
            element model {
                attribute name { string } &
                element intraop-threads { xsd:nonNegativeInteger }? &
                element interop-threads { xsd:nonNegativeInteger }? &
                element execution-mode { string "sequential" | string "parallel" }? &
                element gpu-device {
                  xsd:nonNegativeInteger
                }?
            }*
        }?
    }?
}

Ssl = element ssl {
    element private-key-file { string } &
    element certificate-file { string } &
    element ca-certificates-file { string }? &
    element client-authentication { string "disabled" | string "want" | string "need" }? &
    element cipher-suites { string }? &
    element protocols { string }?
}

SslProvider = element ssl-provider {
    BundleSpec
}

Threadpool = element threadpool {
    ((
        # TODO Vespa 9 Remove max-threads / min-threads / queue-size
        element max-threads { xsd:nonNegativeInteger } &
        element min-threads { xsd:nonNegativeInteger } &
        element queue-size { xsd:nonNegativeInteger }
    )|(
        element threads { xsd:double { minExclusive = "0.0" } & attribute boost { xsd:double { minExclusive = "0.0" } }? }? &
        element queue { xsd:double { minInclusive = "0.0" } }?
    ))
}

Significance = element significance {
    element model { ModelReference }*
}

Clients = element clients {
    Client*
}

Client = element client {
    ComponentId &
    attribute permissions { string } &
    (
        element certificate { attribute file { string } }+
    |
        element token { attribute id { string } }+
    )
}

# SEARCH:

SearchInContainer = element search {
    Include* &
    ServerBindings? &
    Searcher* &
    SearchChain* &
    Provider* &
    Renderer* &
    GenericConfig* &
    Threadpool? &
    Significance?
}

SearchChain = element chain {
    GenericSearchChain
}

GenericSearchChain =
    ComponentId &
    SearchChainInheritance &
    attribute searchers { text }? &
    Searcher* &
    Phase* &
    GenericConfig*

SearchChainInheritance =
    attribute inherits { text }? &
    attribute excludes { text }? &
    element inherits {
        element chain { ComponentSpec }* &
        element exclude { ComponentSpec }*
    }?


# DOCPROC:

DocprocInContainer = element document-processing {
    Include* &
    DocprocClusterAttributes? &
    DocumentProcessorV3* &
    ChainInDocprocInContainerCluster* &
    GenericConfig*
}
ChainInDocprocInContainerCluster = element chain {
    DocprocChainV3Contents
}
SchemaMapping = element map {
  element field {
    attribute doctype { text }?,
    attribute in-document { text },
    attribute in-processor { text }
  }+
}

# TODO Here we need a thorough cleaning
DocprocClusterAttributes = attribute compressdocuments { xsd:boolean }? &
  attribute numnodesperclient { xsd:positiveInteger }? & # TODO: Remove in Vespa 9
  attribute preferlocalnode { xsd:boolean }? & # TODO: Remove in Vespa 9
  attribute maxmessagesinqueue { xsd:nonNegativeInteger }? &
  attribute maxqueuebytesize { xsd:string { minLength = "1" } }? &  # TODO: Remove in Vespa 9
  attribute maxqueuewait { xsd:positiveInteger }? &
  attribute maxconcurrentfactor { xsd:double { minExclusive = "0.0" maxExclusive = "1.0" } }? &
  attribute documentexpansionfactor { xsd:double { minExclusive = "0.0" } }? &
  attribute containercorememory { xsd:nonNegativeInteger }?


DocprocChainV3Contents = attribute name { xsd:NCName }? &
        ComponentId &
        SchemaMapping? &
        DocprocChainInheritance &
        attribute documentprocessors { text }? &
        DocumentProcessorV3* &
        Phase* &
        GenericConfig*


DocprocChainInheritance =
    attribute inherits { text }? &
    attribute excludes { text }? &
    element inherits {
        element docprocchain { ComponentSpec }* &
        element exclude { ComponentSpec }*
    }?

DocumentProcessorV3 =
    element documentprocessor {
        BundleSpec &
        SchemaMapping? &
        GenericSearcherOrDocumentProcessor
    }


# PROCESSING:

ProcessingInContainer = element processing {
    Include* &
    ServerBindings? &
    Processor* &
    Chain* &
    ProcessingRenderer* &
    GenericConfig*
}



# DOCUMENT API:

DocumentApi = element document-api {
   ServerBindings &
   GenericConfig* &
   element ignore-undefined-fields { xsd:boolean }? &
   element abortondocumenterror { xsd:boolean }? &
   element retryenabled { xsd:boolean }? &
   element route { text }? &
   element maxpendingdocs { xsd:positiveInteger }? &
   element maxpendingbytes { xsd:positiveInteger }? &
   element retrydelay { xsd:double { minInclusive = "0.0" } }? &
   element timeout { xsd:double { minInclusive = "0.0" } }? &
   element tracelevel { xsd:positiveInteger }? &
   element mbusport { xsd:positiveInteger }? &
   DocumentRestApi? &
   HttpClientApi?
}

DocumentRestApi = element rest-api { empty }

HttpClientApi = element http-client-api {
    Threadpool?
}

# NODES:

NodesOfContainerCluster = element nodes {
    attribute jvm-options { text }? & # Remove in Vespa 9
    attribute jvm-gc-options { text }? & # Remove in Vespa 9
    attribute preload { text }? &
    attribute allocated-memory { text }? &  # Remove in Vespa 9
    attribute cpu-socket-affinity { xsd:boolean }? &
    element jvm {
        attribute options { text }? &
        attribute gc-options { text }? &
        attribute allocated-memory { text }?
    } ? &
    Resources? &
    element environment-variables {
      anyElement +
    } ? &
    (
      (
        attribute of { xsd:string } &
        attribute required { xsd:boolean }?
      )
      |
      attribute type { xsd:string }
      |
      (
        attribute count { xsd:positiveInteger | xsd:string  }? &
        attribute flavor { xsd:string }? &
        attribute required { xsd:boolean }? &
        attribute exclusive { xsd:boolean }? &
        attribute docker-image { xsd:string }?
      )
      |
      element node {
        attribute hostalias { xsd:NCName } &
        attribute cpu-socket { xsd:positiveInteger }? &
        GenericConfig*
      }+
    )
}

#DOCUMENT BINDINGS:

DocumentBinding = element document {
    attribute type { xsd:NCName } &
    attribute class { xsd:NCName } &
    attribute bundle { xsd:NCName }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy