Commit e742802a authored by Jonathon Duerig's avatar Jonathon Duerig

Added generated schema files to repo

parent 571979f4
<?xml version="1.0" encoding="UTF-8"?>
<!--
EMULAB-COPYRIGHT
Copyright (c) 2008-2009 University of Utah and the Flux Group.
All rights reserved.
-->
<!--
Common definitions for advertisements, requests, and tickets
Version 0.2
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.protogeni.net/resources/rspec/2" xmlns:rspec="http://www.protogeni.net/resources/rspec/2">
<xs:include schemaLocation="any-extension-schema.xsd"/>
<xs:element name="rspec" type="rspec:RSpecContents"/>
<xs:complexType name="RSpecContents">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:choice>
<xs:group ref="rspec:AnyExtension"/>
<xs:element ref="rspec:node"/>
<xs:element ref="rspec:link"/>
</xs:choice>
<xs:element ref="rspec:external_ref"/>
</xs:choice>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="generated" type="xs:dateTime"/>
<xs:attribute name="generated_by"/>
<xs:attribute name="valid_until" type="xs:dateTime"/>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="advertisement"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:element name="external_ref" type="rspec:ExternalReferenceContents"/>
<xs:element name="node" type="rspec:NodeContents"/>
<xs:element name="link" type="rspec:LinkContents"/>
<xs:complexType name="NodeContents">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:choice>
<xs:group ref="rspec:AnyExtension"/>
<xs:element ref="rspec:relation"/>
<xs:element ref="rspec:location"/>
<xs:element ref="rspec:interface"/>
</xs:choice>
<xs:choice>
<xs:element ref="rspec:available"/>
<xs:element ref="rspec:cloud"/>
<xs:element ref="rspec:services"/>
<xs:element ref="rspec:hardware_type"/>
<xs:element ref="rspec:sliver_type"/>
</xs:choice>
</xs:choice>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="component_id" use="required"/>
<xs:attribute name="component_manager_id" use="required"/>
<xs:attribute name="component_name"/>
<xs:attribute name="exclusive" use="required" type="xs:boolean"/>
</xs:complexType>
<xs:element name="relation" type="rspec:RelationContents"/>
<xs:element name="location" type="rspec:LocationContents"/>
<xs:element name="interface" type="rspec:InterfaceContents"/>
<xs:element name="available" type="rspec:AvailableContents"/>
<xs:element name="cloud">
<xs:complexType>
<xs:group ref="rspec:AnyExtension"/>
<xs:attributeGroup ref="rspec:AnyExtension"/>
</xs:complexType>
</xs:element>
<xs:element name="services" type="rspec:ServiceContents"/>
<xs:complexType name="RelationContents">
<xs:group ref="rspec:AnyExtension"/>
<xs:attributeGroup ref="rspec:AnyExtension"/>
</xs:complexType>
<xs:complexType name="LocationContents">
<xs:group ref="rspec:AnyExtension"/>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="country" use="required"/>
<xs:attribute name="longitude"/>
<xs:attribute name="latitude"/>
</xs:complexType>
<xs:complexType name="InterfaceContents">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="rspec:AnyExtension"/>
<xs:element ref="rspec:monitoring"/>
</xs:choice>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="component_id" use="required"/>
<xs:attribute name="component_name"/>
<xs:attribute name="role">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="control"/>
<xs:enumeration value="experimental"/>
<xs:enumeration value="mixed"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="public_ipv4"/>
</xs:complexType>
<xs:element name="monitoring" type="rspec:MonitoringContents"/>
<xs:complexType name="LinkContents">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="rspec:AnyExtension"/>
<xs:element ref="rspec:property"/>
<xs:element ref="rspec:link_type"/>
<xs:element ref="rspec:interface_ref"/>
</xs:choice>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="component_id" use="required"/>
<xs:attribute name="component_manager_id" use="required"/>
<xs:attribute name="component_name"/>
</xs:complexType>
<xs:element name="property" type="rspec:LinkPropertyContents"/>
<xs:element name="interface_ref" type="rspec:InterfaceRefContents"/>
<xs:complexType name="InterfaceRefContents">
<xs:group ref="rspec:AnyExtension"/>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="component_id" use="required"/>
</xs:complexType>
<!-- The unidirectional network properties of a link. -->
<xs:complexType name="LinkPropertyContents">
<xs:group ref="rspec:AnyExtension"/>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="source_id" use="required"/>
<xs:attribute name="dest_id" use="required"/>
<xs:attribute name="capacity"/>
<xs:attribute name="latency"/>
<xs:attribute name="packet_loss"/>
</xs:complexType>
<xs:element name="link_type">
<xs:complexType>
<xs:group ref="rspec:AnyExtension"/>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="name" use="required"/>
<xs:attribute name="class"/>
</xs:complexType>
</xs:element>
<xs:element name="link_class">
<xs:complexType>
<xs:group ref="rspec:AnyExtension"/>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="sliver_type">
<xs:complexType>
<xs:group ref="rspec:AnyExtension"/>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="hardware_type">
<xs:complexType>
<xs:group ref="rspec:AnyExtension"/>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="name" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
#
# EMULAB-COPYRIGHT
# Copyright (c) 2008-2009 University of Utah and the Flux Group.
# All rights reserved.
#
#
# Prototype of an advertisement RSpec, to be used by ProtoGENI
# Version 2
#
default namespace = "http://www.protogeni.net/resources/rspec/2"
include "common.rnc"
NodeContents &=
# Component identifiers
attribute component_id { text } &
attribute component_manager_id { text } &
attribute component_name { text }? &
# Indicates whether the node is in sharing mode: exclusive is true if
# the component manager will agree to promise not to share it.
attribute exclusive { xsd:boolean } &
# Indicate whether or not this node is available - the idea is that a
# full dump of the static physical topology will not include this, but
# that we can later get updates that include only this attribute (and a
# URN)
element available { AvailableContents } &
# Marks this node as a stand-in for a large network rather than a
# single machine. This means that other CMs can make external
# references to this node without a corresponding external reference
# in this advertisement. It also means that it makes sense for
# multiple physical links to connect to the same interface.
element cloud { AnyExtension } &
# Lists services provided by the CM for this node.
element services { ServiceContents } &
# Node type. This includes both hardware and sliver type elements:
HardwareType* &
SliverType*
AvailableContents =
AnyExtension &
# Indictates current availability
attribute now { xsd:boolean }
LinkContents &=
# Component identifiers
attribute component_id { text } &
attribute component_manager_id { text } &
attribute component_name { text }?
InterfaceContents &=
attribute component_id { text } &
attribute component_name { text }? &
element monitoring { MonitoringContents }? &
attribute role { "control" | "experimental" | "mixed" }? &
attribute public_ipv4 { text }?
MonitoringContents &=
AnyExtension &
# True if user traffic moves through this interface and is available
# for monitoring.
attribute user_traffic { xsd:boolean }?
InterfaceRefContents &=
attribute component_id { text }
# Reference to components managed by other component managers.
ExternalReferenceContents &=
AnyExtension &
attribute component_id { text } &
attribute component_manager_id { text }?
ServiceContents &=
AnyExtension &
# Login services include ssh-services, serial consoles, etc.
element login { LoginServiceContents }* &
# Install services include download and extraction of a file at
# experiment startup.
element install { InstallServiceContents }* &
# Execute services include initialization scripts
element execute { ExecuteServiceContents }*
LoginServiceContents &=
AnyExtension &
# Authentication mechanism
attribute authentication { "ssh-keys" } &
# Access mechanism
attribute hostname { text } &
attribute port { text }
InstallServiceContents &=
AnyExtension &
# Type(s) of archives supported
attribute file_type { "tar.gz" | "tar.bz2" }
ExecuteServiceContents &=
AnyExtension &
# Shell environment allowed
attribute shell { "sh" }
RSpecContents &=
attribute type { "advertisement" } &
element external_ref {
ExternalReferenceContents
}*
start = RSpec
<?xml version="1.0" encoding="UTF-8"?>
<!--
EMULAB-COPYRIGHT
Copyright (c) 2008-2009 University of Utah and the Flux Group.
All rights reserved.
-->
<!--
Prototype of an advertisement RSpec, to be used by ProtoGENI
Version 2
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.protogeni.net/resources/rspec/2" xmlns:rspec="http://www.protogeni.net/resources/rspec/2">
<xs:include schemaLocation="ad-common.xsd"/>
<xs:complexType name="AvailableContents">
<xs:group ref="rspec:AnyExtension"/>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="now" use="required" type="xs:boolean"/>
</xs:complexType>
<xs:complexType name="MonitoringContents">
<xs:group ref="rspec:AnyExtension"/>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="user_traffic" type="xs:boolean"/>
</xs:complexType>
<!-- Reference to components managed by other component managers. -->
<xs:complexType name="ExternalReferenceContents">
<xs:group ref="rspec:AnyExtension"/>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="component_id" use="required"/>
<xs:attribute name="component_manager_id"/>
</xs:complexType>
<xs:complexType name="ServiceContents">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="rspec:AnyExtension"/>
<xs:element ref="rspec:login"/>
<xs:element ref="rspec:install"/>
<xs:element ref="rspec:execute"/>
</xs:choice>
<xs:attributeGroup ref="rspec:AnyExtension"/>
</xs:complexType>
<xs:element name="login" type="rspec:LoginServiceContents"/>
<xs:element name="install" type="rspec:InstallServiceContents"/>
<xs:element name="execute" type="rspec:ExecuteServiceContents"/>
<xs:complexType name="LoginServiceContents">
<xs:group ref="rspec:AnyExtension"/>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="authentication" use="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="ssh-keys"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="hostname" use="required"/>
<xs:attribute name="port" use="required"/>
</xs:complexType>
<xs:complexType name="InstallServiceContents">
<xs:group ref="rspec:AnyExtension"/>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="file_type" use="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="tar.gz"/>
<xs:enumeration value="tar.bz2"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType name="ExecuteServiceContents">
<xs:group ref="rspec:AnyExtension"/>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="shell" use="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="sh"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.protogeni.net/resources/rspec/2" >
<xs:group name="AnyExtension">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:any namespace="##other" processContents="strict"/>
</xs:choice>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="AnyExtension">
<xs:anyAttribute namespace="##other" processContents="strict"/>
</xs:attributeGroup>
</xs:schema>
default namespace rs = "http://www.protogeni.net/resources/rspec/2"
AnyExtension =
attribute * - rs:* { text }* &
element * - rs:* { text }* &
element * - rs:* { AnyExtension }*
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.protogeni.net/resources/rspec/2" xmlns:rspec="http://www.protogeni.net/resources/rspec/2">
<xs:group name="AnyExtension">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:choice>
<xs:any namespace="##other" processContents="skip"/>
<xs:any namespace="##local" processContents="skip"/>
</xs:choice>
<xs:choice>
<xs:any namespace="##other" processContents="skip"/>
<xs:any namespace="##local" processContents="skip"/>
</xs:choice>
</xs:choice>
</xs:sequence>
</xs:group>
<xs:attributeGroup name="AnyExtension">
<xs:anyAttribute processContents="skip"/>
</xs:attributeGroup>
</xs:schema>
#
# EMULAB-COPYRIGHT
# Copyright (c) 2008-2009 University of Utah and the Flux Group.
# All rights reserved.
#
#
# Common definitions for advertisements, requests, and tickets
# Version 0.2
#
default namespace = "http://www.protogeni.net/resources/rspec/2"
include "any-extension.rnc"
RSpec = element rspec {
RSpecContents
}
RSpecContents =
AnyExtension &
# When this RSpec was generated - optional, can be used for determining
# staleness
attribute generated { xsd:dateTime }? &
# Who/what generated the rspec. This is purely informative and
# should not be used for any policy consideration. The format is
# not fixed.
attribute generated_by { text }? &
# How long this rspec is valid - in the case of a ticket, this indicates
# how long the holder may use the resources. For a resource request, it's
# how long we want the resources. For an advertisement, it might be a hint
# as to how long it's okay to cache this rspec.
attribute valid_until { xsd:dateTime }? &
# One or more nodes/links
Node* &
Link*
Node = element node { NodeContents }
Link = element link { LinkContents }
NodeContents =
AnyExtension &
# A relation indicates that this node has a relationship with
# another node. It may be hosted on that node, share important
# resources, etc.
element relation { RelationContents }* &
# Information about the nodes physical location
element location { LocationContents } &
# List of interfaces on this node. Interfaces are declared here. So
# all information about a particular interface including types
# belongs in the declaration. Other references to interfaces
# should just uniquely identify them and refer back here.
element interface {
InterfaceContents
}*
RelationContents =
AnyExtension
LocationContents =
AnyExtension &
# The two-letter ISO 3166 code for the country the node is in.
attribute country { text } &
# Longitude and Latitude coordinates of the node using the
# WGS 84 standard.
attribute longitude { text }? &
attribute latitude { text }?
InterfaceContents = AnyExtension
LinkContents =
AnyExtension &
# Network properties of this link. These include capacity,
# latency, loss, etc.
element property {
LinkPropertyContents
}* &
# Link type which describes what transport mechanism this link
# will use or provides.
LinkType* &
# The interfaces which this link spans.
element interface_ref {
InterfaceRefContents
}*
InterfaceRefContents = AnyExtension
# The unidirectional network properties of a link.
LinkPropertyContents =
AnyExtension &
# URNs for the source and destination interface pair describing
# the direction. These are physical identifiers in an
# advertisement and virtual identifiers in other kinds of RSpecs.
attribute source_id { text } &
attribute dest_id { text } &
# Capacity of the link in kbps
attribute capacity { text }? &
# One-way latency of the link in ms
attribute latency { text }? &
# Static packet loss probability as a fraction (0.01 means 1% packet loss)
attribute packet_loss { text }?
LinkType = element link_type {
AnyExtension &
attribute name { text } &
attribute class { text }?
}
LinkClass = element link_class {
AnyExtension &
attribute name { text }
}
SliverType = element sliver_type {
AnyExtension &
attribute name { text }
}
HardwareType = element hardware_type {
AnyExtension &
attribute name { text }
}
<?xml version="1.0" encoding="UTF-8"?>
<!--
EMULAB-COPYRIGHT
Copyright (c) 2008-2009 University of Utah and the Flux Group.
All rights reserved.
-->
<!--
Common definitions for advertisements, requests, and tickets
Version 0.2
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.protogeni.net/resources/rspec/2" xmlns:rspec="http://www.protogeni.net/resources/rspec/2">
<xs:include schemaLocation="any-extension-schema.xsd"/>
<xs:element name="rspec" type="rspec:RSpecContents"/>
<xs:complexType name="RSpecContents">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="rspec:AnyExtension"/>
<xs:element ref="rspec:node"/>
<xs:element ref="rspec:link"/>
</xs:choice>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="generated" type="xs:dateTime"/>
<xs:attribute name="generated_by"/>
<xs:attribute name="valid_until" type="xs:dateTime"/>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="request"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:element name="node" type="rspec:NodeContents"/>
<xs:element name="link" type="rspec:LinkContents"/>
<xs:complexType name="NodeContents">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:choice>
<xs:group ref="rspec:AnyExtension"/>
<xs:element ref="rspec:relation"/>
<xs:element ref="rspec:location"/>
<xs:element ref="rspec:interface"/>
</xs:choice>
<xs:choice>
<xs:element ref="rspec:hardware_type"/>
<xs:element ref="rspec:sliver_type"/>
</xs:choice>
</xs:choice>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="client_id" use="required"/>
<xs:attribute name="component_id"/>
<xs:attribute name="component_manager_id"/>
<xs:attribute name="component_name"/>
<xs:attribute name="exclusive" type="xs:boolean"/>
<xs:attribute name="colocate"/>
<xs:attribute name="sliver_id" use="required"/>
</xs:complexType>
<xs:element name="relation" type="rspec:RelationContents"/>
<xs:element name="location" type="rspec:LocationContents"/>
<xs:element name="interface" type="rspec:InterfaceContents"/>
<xs:complexType name="RelationContents">
<xs:group ref="rspec:AnyExtension"/>
<xs:attributeGroup ref="rspec:AnyExtension"/>
</xs:complexType>
<xs:complexType name="LocationContents">
<xs:group ref="rspec:AnyExtension"/>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="country" use="required"/>
<xs:attribute name="longitude"/>
<xs:attribute name="latitude"/>
</xs:complexType>
<xs:complexType name="InterfaceContents">
<xs:group ref="rspec:AnyExtension"/>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="component_id"/>
<xs:attribute name="client_id" use="required"/>
</xs:complexType>
<xs:complexType name="LinkContents">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:choice>
<xs:group ref="rspec:AnyExtension"/>
<xs:element ref="rspec:property"/>
<xs:element ref="rspec:link_type"/>
<xs:element name="interface_ref" type="rspec:InterfaceRefContents"/>
</xs:choice>
<xs:element ref="rspec:component_hop"/>
</xs:choice>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="client_id" use="required"/>
<xs:attribute name="sliver_id" use="required"/>
</xs:complexType>
<xs:element name="property" type="rspec:LinkPropertyContents"/>
<xs:element name="component_hop" type="rspec:ComponentHopContents"/>
<xs:complexType name="InterfaceRefContents">
<xs:group ref="rspec:AnyExtension"/>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="client_id" use="required"/>
</xs:complexType>
<!-- The unidirectional network properties of a link. -->
<xs:complexType name="LinkPropertyContents">
<xs:group ref="rspec:AnyExtension"/>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="source_id" use="required"/>
<xs:attribute name="dest_id" use="required"/>
<xs:attribute name="capacity"/>
<xs:attribute name="latency"/>
<xs:attribute name="packet_loss"/>
</xs:complexType>
<xs:element name="link_type">
<xs:complexType>
<xs:group ref="rspec:AnyExtension"/>
<xs:attributeGroup ref="rspec:AnyExtension"/>
<xs:attribute name="name" use="required"/>
<xs:attribute name="class"/></