# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. # RELAX NG Compact Syntax # Vespa Deployment file start = element deployment { attribute version { "1.0" } & attribute major-version { text }? & attribute athenz-domain { xsd:string }? & attribute athenz-service { xsd:string }? & Upgrade? & BlockChange* & Notifications? & Endpoints? & Test? & Staging? & Prod* } Upgrade = element upgrade { attribute policy { xsd:string } } BlockChange = element block-change { attribute revision { xsd:boolean }? & attribute version { xsd:boolean }? & attribute days { xsd:string } & attribute hours { 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 tester-flavor { xsd:string }? & text } Staging = element staging { attribute athenz-service { xsd:string }? & attribute tester-flavor { xsd:string }? & text } Prod = element prod { attribute global-service-id { text }? & attribute athenz-service { xsd:string }? & attribute tester-flavor { xsd:string }? & Region* & Delay* & Parallel* } Region = element region { attribute active { xsd:boolean } & text } Delay = element delay { attribute hours { xsd:long }? & attribute minutes { xsd:long }? & attribute seconds { xsd:long }? } Parallel = element parallel { Region* } EndpointRegion = element region { text } Endpoint = element endpoint { attribute id { xsd:string }? & attribute container-id { xsd:string } & EndpointRegion* } Endpoints = element endpoints { Endpoint+ }