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

schema.deployment.rnc Maven / Gradle / Ivy

# Copyright Vespa.ai. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
# RELAX NG Compact Syntax
# Vespa Deployment file

include "common.rnc"

start = element deployment {
   attribute version { "1.0" } &
   attribute major-version { text }? &
   attribute athenz-domain { xsd:string }? &
   attribute athenz-service { xsd:string }? &
   attribute cloud-account { xsd:string }? &
   attribute empty-host-ttl { xsd:string }? &
   Step &
   Dev?
}

Step =
    StepExceptInstance &
    Instance*

StepExceptInstance =
    Delay* &
    ParallelInstances* &
    Upgrade? &
    BlockChange* &
    Notifications? &
    Endpoints? &
    Bcp? &
    Test? &
    Staging? &
    Prod*

PrimitiveStep =
    Delay* &
    Region* &
    ProdTest*

Instance = element instance {
   attribute id { xsd:string } &
   attribute tags { xsd:string }? &
   attribute athenz-service { xsd:string }? &
   attribute cloud-account { xsd:string }? &
   attribute empty-host-ttl { xsd:string }? &
   StepExceptInstance
}

ParallelSteps = element parallel {
    SerialSteps* &
    PrimitiveStep*
}

SerialSteps = element steps {
    ParallelSteps* &
    PrimitiveStep*
}

ParallelInstances = element parallel {
    SerialInstances* &
    Instance*
}

SerialInstances = element steps {
    ParallelInstances* &
    Instance*
}

Upgrade = element upgrade {
    attribute policy { xsd:string }? &
    attribute revision-target { xsd:string }? &
    attribute revision-change { xsd:string }? &
    attribute min-risk { xsd:long }? &
    attribute max-risk { xsd:long }? &
    attribute max-idle-hours { xsd:long }? &
    attribute rollout { xsd:string }?
}

BlockChange = element block-change {
    attribute revision { xsd:boolean }? &
    attribute version { xsd:boolean }? &
    attribute days { xsd:string }? &
    attribute hours { xsd:string }? &
    attribute from-date { xsd:string }? &
    attribute to-date { xsd:string }? &
    attribute time-zone { xsd:string }?
}

Notifications = element notifications {
    attribute when { xsd:string }? &
    Email*
}

Email = element email {
    attribute address { xsd:string }? &
    attribute role { xsd:string }? &
    attribute when { xsd:string }?
}

Test = element test {
   attribute athenz-service { xsd:string }? &
   attribute cloud-account { xsd:string }? &
   attribute empty-host-ttl { xsd:string }? &
   Tester?
}

Staging = element staging {
   attribute athenz-service { xsd:string }? &
   attribute cloud-account { xsd:string }? &
   attribute empty-host-ttl { xsd:string }? &
   Tester?
}

Dev = element dev {
   attribute cloud-account { xsd:string }? &
   attribute empty-host-ttl { xsd:string }? &
   attribute athenz-service { xsd:string }? &
   attribute tags { xsd:string }? &
   Endpoints?
}

Prod = element prod {
   attribute athenz-service { xsd:string }? &
   attribute cloud-account { xsd:string }? &
   attribute empty-host-ttl { xsd:string }? &
   Region* &
   Delay* &
   ProdTest* &
   ParallelSteps* &
   Tester?
}

ProdTest = element test {
   attribute empty-host-ttl { xsd:string }? &
   text
}

Region = element region {
   attribute active { xsd:boolean }? &
   attribute athenz-service { xsd:string }? &
   attribute cloud-account { xsd:string }? &
   attribute empty-host-ttl { xsd:string }? &
   text
}

Delay = element delay {
   attribute hours { xsd:long }? &
   attribute minutes { xsd:long }? &
   attribute seconds { xsd:long }?
}

EndpointRegion = element region {
    text
}

EndpointInstance = element instance {
    attribute weight { xsd:long } &
    attribute region { xsd:string }? &
    text
}

AllowedUrn = element allow {
    attribute with { xsd:string } &
    attribute arn { xsd:string }? &
    attribute project { xsd:string }?
}

Endpoint = element endpoint {
    attribute id { xsd:string }? &
    attribute container-id { xsd:string } &
    attribute region { xsd:string }? &
    attribute type { xsd:string }? &
    attribute enabled { xsd:boolean }? &
    EndpointRegion* &
    EndpointInstance* &
    AllowedUrn*
}

Endpoints = element endpoints {
    Endpoint+
}

Bcp = element bcp {
    attribute deadline { xsd:string }? &
    Group*
}

Group = element group {
    attribute deadline { xsd:string }? &
    Endpoint* &
    MemberRegion+
}

MemberRegion = element region {
    attribute fraction { xsd:double }? &
    text
}

Tester = element tester {
    Nodes?
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy