# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. Admin = AdminV2 | AdminV3 | AdminV4 AdminV2 = element admin { attribute version { "2.0" } & element adminserver { service.attlist } & element minSlobroksPerCluster { xsd:positiveInteger }? & # TODO: Remove when no applications use this GenericConfig* & LogServer? & (ConfigServer | ConfigServers)? & FileDistribution? & AdminSlobroks? & (LegacyAdminMonitoring | AdminMonitoring)? & (LegacyMetricConsumers | Metrics)? & ClusterControllers? & LogForwarding? } AdminV3 = element admin { attribute version { "3.0" } & element minSlobroksPerCluster { xsd:positiveInteger }? & # TODO: Remove when no applications use this GenericConfig* & Nodes } AdminV4 = element admin { attribute version { "4.0" } & element minSlobroksPerCluster { xsd:positiveInteger }? & # TODO: Remove when no applications use this AdminV4Slobroks? & AdminV4LogServers? & GenericConfig* & (LegacyAdminMonitoring | AdminMonitoring)? & (LegacyMetricConsumers | Metrics)? & LogForwarding? } AdminV4Slobroks = element slobroks { OptionalDedicatedNodes } AdminV4LogServers = element logservers { OptionalDedicatedNodes } AdminSlobroks = element slobroks { element slobrok { service.attlist & attribute index { xsd:nonNegativeInteger }? }+ } AdminMonitoring = element monitoring { attribute interval { xsd:int }?, attribute systemname { xsd:string }? } # TODO: Alternative name for the 'monitoring' tag. Remove on Vespa 7 LegacyAdminMonitoring = element yamas { attribute interval { xsd:int }?, attribute systemname { xsd:string }? } ConfigServer = element configserver { service.attlist } ConfigServers = element configservers { ConfigServer+ } LogServer = element logserver { service.attlist } FileDistribution = element filedistribution { element uploadbitrate { xsd:string { pattern = "\d+(\.\d*)?\s*[kmgKMG]?" } }? & element downloadbitrate { xsd:string { pattern = "\d+(\.\d*)?\s*[kmgKMG]?" } }? } Metrics = element metrics { element consumer { attribute id { xsd:Name } & element metric-set { attribute id { xsd:Name } }* & element metric { attribute id { xsd:Name } & attribute display-name { xsd:Name }? }* }+ } # TODO: Remove on Vespa 7 LegacyMetricConsumers = element metric-consumers { element consumer { attribute name { xsd:string { pattern = "[a-zA-Z][_a-zA-Z0-9]*" } }& element metric { attribute name{xsd:Name} & attribute output-name{xsd:Name}? }+ }+ } ClusterControllers = element cluster-controllers { attribute standalone-zookeeper { xsd:string }? & element cluster-controller { service.attlist }+ } LogForwarding = element logforwarding { element forward { attribute type {xsd:string } & element source { element log { "access"| "vespa" }+ } & element destination { element endpoint { xsd:string } & element index { xsd:string } # TODO: Mandatory or with a default value? } }+ }