--- /dev/null
+start = RSpec
+RSpec = element RSpec {
+ attribute type { xsd:NMTOKEN },
+ cloud
+}
+cloud = element cloud {
+ attribute id { xsd:NMTOKEN },
+ user-info?,
+ ipv4,
+ keypairs,
+ images,
+ cluster+
+}
+user-info = element user-info {
+ credential
+}
+keypairs = element keypairs { keypair+ }
+images = element images { image+ }
+image = element image {
+ attribute id { xsd:ID },
+ type,
+ arch,
+ state,
+ location
+}
+cluster = element cluster {
+ attribute id { xsd:ID },
+ ipv4,
+ vm-types
+}
+vm-types = element vm-types { vm-type+ }
+vm-type = element vm-type {
+ attribute name { xsd:ID },
+ free-slots,
+ max-instances,
+ cores,
+ memory,
+ disk-space,
+ request?
+}
+request = element request {
+ instances,
+ kernel-image,
+ ramdisk,
+ disk-image,
+ keypair
+}
+credential = element credential { text }
+ipv4 = element ipv4 { text }
+keypair = element keypair { text }
+type = element type { text }
+arch = element arch { text }
+state = element state { text }
+location = element location { text }
+free-slots = element free-slots { text }
+max-instances = element max-instances { text }
+cores = element cores { text }
+memory = element memory {
+ attribute unit { xsd:NMTOKEN },
+ text
+}
+disk-space = element disk-space {
+ attribute unit { xsd:NMTOKEN },
+ text
+}
+instances = element instances { text }
+kernel-image = element kernel-image {
+ attribute id { xsd:IDREF },
+ empty
+}
+ramdisk = element ramdisk {
+ attribute id { xsd:IDREF }?,
+ empty
+}
+disk-image = element disk-image {
+ attribute id { xsd:IDREF },
+ empty
+}
--- /dev/null
+<?xml version="1.0"?>
+<RSpec type="eucalyptus">
+ <cloud id="Emulab-Cloud">
+ <!-- This element added by the user -->
+ <user-info>
+ <credential>foobarbaz</credential>
+ </user-info>
+ <ipv4>155.98.39.85</ipv4>
+ <keypairs>
+ <keypair>cortex</keypair>
+ <keypair>mykey</keypair>
+ </keypairs>
+ <images>
+ <image id="emi-88760F45">
+ <type>machine</type>
+ <arch>x86_64</arch>
+ <state>available</state>
+ <location>images/ttylinux.img.manifest.xml</location>
+ </image>
+ <image id="eki-F26610C6">
+ <type>kernel</type>
+ <arch>x86_64</arch>
+ <state>available</state>
+ <location>images/vmlinuz-2.6.16.33-xen.manifest.xml</location>
+ </image>
+ </images>
+ <cluster id="pcluster">
+ <ipv4>10.1.1.2</ipv4>
+ <vm-types>
+ <vm-type name="m1.small">
+ <free-slots>2</free-slots>
+ <max-instances>2</max-instances>
+ <cores>1</cores>
+ <memory unit="MB">128</memory>
+ <disk-space unit="GB">2</disk-space>
+ <!-- A request for an instance of this type, added by the user -->
+ <request>
+ <instances>1</instances>
+ <kernel-image id="eki-F26610C6"/>
+ <ramdisk/>
+ <disk-image id="emi-88760F45"/>
+ <keypair>cortex</keypair>
+ </request>
+ </vm-type>
+ <vm-type name="c1.medium">
+ <free-slots>1</free-slots>
+ <max-instances>2</max-instances>
+ <cores>1</cores>
+ <memory unit="MB">256</memory>
+ <disk-space unit="GB">5</disk-space>
+ </vm-type>
+ <vm-type name="m1.large">
+ <free-slots>0</free-slots>
+ <max-instances>1</max-instances>
+ <cores>2</cores>
+ <memory unit="MB">512</memory>
+ <disk-space unit="GB">10</disk-space>
+ </vm-type>
+ <vm-type name="m1.xlarge">
+ <free-slots>0</free-slots>
+ <max-instances>1</max-instances>
+ <cores>2</cores>
+ <memory unit="MB">1024</memory>
+ <disk-space unit="GB">20</disk-space>
+ </vm-type>
+ <vm-type name="c1.xlarge">
+ <free-slots>0</free-slots>
+ <max-instances>0</max-instances>
+ <cores>4</cores>
+ <memory unit="MB">2048</memory>
+ <disk-space unit="GB">20</disk-space>
+ </vm-type>
+ </vm-types>
+ </cluster>
+ </cloud>
+</RSpec>