Annotation of embedaddon/libxml2/test/relaxng/libvirt.rng, revision 1.1.1.1

1.1       misho       1: <?xml version="1.0"?>
                      2: <grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
                      3:   <!-- We handle only document defining a domain -->
                      4:   <start>
                      5:     <ref name="domain"/>
                      6:   </start>
                      7: 
                      8:   <!--
                      9:       We handle only document defining a domain
                     10:     -->
                     11:   <define name="domain">
                     12:     <element name="domain">
                     13:       <ref name="hvs"/>
                     14:       <ref name="ids"/>
                     15:       <interleave>
                     16:         <ref name="os"/>
                     17:         <ref name="clock"/>
                     18:         <ref name="resources"/>
                     19:         <ref name="features"/>
                     20:         <ref name="termination"/>
                     21:         <optional>
                     22:           <ref name="devices"/>
                     23:         </optional>
                     24:         <optional>
                     25:           <ref name="seclabel"/>
                     26:         </optional>
                     27:       </interleave>
                     28:     </element>
                     29:   </define>
                     30:   <define name="seclabel">
                     31:     <element name="seclabel">
                     32:       <attribute name="model">
                     33:         <text/>
                     34:       </attribute>
                     35:       <attribute name="type">
                     36:         <choice>
                     37:           <value>dynamic</value>
                     38:           <value>static</value>
                     39:         </choice>
                     40:       </attribute>
                     41:       <element name="label">
                     42:         <text/>
                     43:       </element>
                     44:     </element>
                     45:   </define>
                     46:   <define name="hvs">
                     47:     <attribute name="type">
                     48:       <choice>
                     49:         <value>xen</value>
                     50:         <value>kvm</value>
                     51:         <value>kqemu</value>
                     52:         <value>qemu</value>
                     53:         <value>lxc</value>
                     54:         <value>openvz</value>
                     55:         <value>test</value>
                     56:       </choice>
                     57:     </attribute>
                     58:   </define>
                     59:   <define name="os">
                     60:     <choice>
                     61:       <ref name="osxen"/>
                     62:       <ref name="oshvm"/>
                     63:       <ref name="osexe"/>
                     64:     </choice>
                     65:   </define>
                     66:   <define name="osxen">
                     67:     <choice>
                     68:       <group>
                     69:         <optional>
                     70:           <ref name="bootloader"/>
                     71:         </optional>
                     72:         <element name="os">
                     73:           <ref name="ostypexen"/>
                     74:           <ref name="osbootkernel"/>
                     75:         </element>
                     76:       </group>
                     77:       <group>
                     78:         <ref name="bootloader"/>
                     79:         <optional>
                     80:           <element name="os">
                     81:             <ref name="ostypexen"/>
                     82:             <optional>
                     83:               <ref name="osbootkernel"/>
                     84:             </optional>
                     85:           </element>
                     86:         </optional>
                     87:       </group>
                     88:     </choice>
                     89:   </define>
                     90:   <define name="oshvm">
                     91:     <element name="os">
                     92:       <ref name="ostypehvm"/>
                     93:       <interleave>
                     94:         <optional>
                     95:           <element name="loader">
                     96:             <ref name="absFilePath"/>
                     97:           </element>
                     98:         </optional>
                     99:         <choice>
                    100:           <ref name="osbootkernel"/>
                    101:           <ref name="osbootdev"/>
                    102:         </choice>
                    103:       </interleave>
                    104:     </element>
                    105:   </define>
                    106:   <define name="ostypexen">
                    107:     <element name="type">
                    108:       <optional>
                    109:         <attribute name="arch">
                    110:           <choice>
                    111:             <value>i686</value>
                    112:             <value>x86_64</value>
                    113:             <value>ia64</value>
                    114:           </choice>
                    115:         </attribute>
                    116:       </optional>
                    117:       <optional>
                    118:         <attribute name="machine">
                    119:           <choice>
                    120:             <value>xenpv</value>
                    121:             <value>xenner</value>
                    122:           </choice>
                    123:         </attribute>
                    124:       </optional>
                    125:       <choice>
                    126:         <value>xen</value>
                    127:         <value>linux</value>
                    128:       </choice>
                    129:     </element>
                    130:   </define>
                    131:   <define name="ostypehvm">
                    132:     <element name="type">
                    133:       <optional>
                    134:         <choice>
                    135:           <ref name="hvmx86"/>
                    136:           <ref name="hvmmips"/>
                    137:           <ref name="hvmsparc"/>
                    138:           <ref name="hvmppc"/>
                    139:         </choice>
                    140:       </optional>
                    141:       <value>hvm</value>
                    142:     </element>
                    143:   </define>
                    144:   <define name="hvmx86">
                    145:     <group>
                    146:       <attribute name="arch">
                    147:         <choice>
                    148:           <value>i686</value>
                    149:           <value>x86_64</value>
                    150:         </choice>
                    151:       </attribute>
                    152:       <attribute name="machine">
                    153:         <choice>
                    154:           <value>xenfv</value>
                    155:           <value>pc</value>
                    156:           <value>isapc</value>
                    157:         </choice>
                    158:       </attribute>
                    159:     </group>
                    160:   </define>
                    161:   <define name="hvmmips">
                    162:     <group>
                    163:       <attribute name="arch">
                    164:         <value>mips</value>
                    165:       </attribute>
                    166:       <attribute name="machine">
                    167:         <value>mips</value>
                    168:       </attribute>
                    169:     </group>
                    170:   </define>
                    171:   <define name="hvmsparc">
                    172:     <group>
                    173:       <attribute name="arch">
                    174:         <value>sparc</value>
                    175:       </attribute>
                    176:       <attribute name="machine">
                    177:         <value>sun4m</value>
                    178:       </attribute>
                    179:     </group>
                    180:   </define>
                    181:   <define name="hvmppc">
                    182:     <group>
                    183:       <attribute name="arch">
                    184:         <value>ppc</value>
                    185:       </attribute>
                    186:       <attribute name="machine">
                    187:         <choice>
                    188:           <value>g3beige</value>
                    189:           <value>mac99</value>
                    190:           <value>prep</value>
                    191:         </choice>
                    192:       </attribute>
                    193:     </group>
                    194:   </define>
                    195:   <define name="osexe">
                    196:     <element name="os">
                    197:       <element name="type">
                    198:         <value>exe</value>
                    199:       </element>
                    200:       <interleave>
                    201:         <optional>
                    202:           <element name="init">
                    203:             <ref name="absFilePath"/>
                    204:           </element>
                    205:         </optional>
                    206:       </interleave>
                    207:     </element>
                    208:   </define>
                    209:   <!--
                    210:       The Identifiers can be:
                    211:       - an optional id attribute with a number on the domain element
                    212:       - a mandatory name
                    213:       - an optional uuid
                    214:     -->
                    215:   <define name="ids">
                    216:     <optional>
                    217:       <attribute name="id">
                    218:         <ref name="unsignedInt"/>
                    219:       </attribute>
                    220:     </optional>
                    221:     <interleave>
                    222:       <element name="name">
                    223:         <ref name="domainName"/>
                    224:       </element>
                    225:       <optional>
                    226:         <element name="uuid">
                    227:           <ref name="UUID"/>
                    228:         </element>
                    229:       </optional>
                    230:     </interleave>
                    231:   </define>
                    232:   <!--
                    233:       Resources usage defines the amount of memory (maximum and possibly
                    234:       current usage) and number of virtual CPUs used by that domain.
                    235:       We can't check here the rule that currentMemory <= memory
                    236:     -->
                    237:   <define name="resources">
                    238:     <interleave>
                    239:       <element name="memory">
                    240:         <ref name="memoryKB"/>
                    241:       </element>
                    242:       <optional>
                    243:         <element name="currentMemory">
                    244:           <ref name="memoryKB"/>
                    245:         </element>
                    246:       </optional>
                    247:       <optional>
                    248:        <element name="memoryBacking">
                    249:          <optional>
                    250:            <element name="hugepages">
                    251:              <empty/>
                    252:            </element>
                    253:          </optional>
                    254:        </element>
                    255:       </optional>
                    256:       <optional>
                    257:         <element name="vcpu">
                    258:           <optional>
                    259:             <attribute name="cpuset"/>
                    260:           </optional>
                    261:           <ref name="countCPU"/>
                    262:         </element>
                    263:       </optional>
                    264:     </interleave>
                    265:   </define>
                    266:   <define name="clock">
                    267:     <optional>
                    268:       <element name="clock">
                    269:         <attribute name="offset">
                    270:           <choice>
                    271:             <value>localtime</value>
                    272:             <value>utc</value>
                    273:           </choice>
                    274:         </attribute>
                    275:         <empty/>
                    276:       </element>
                    277:     </optional>
                    278:   </define>
                    279:   <!--
                    280:       A bootloader may be used to extract the OS information instead of
                    281:       defining the OS parameter in the instance. It points just to the
                    282:       binary or script used to extract the data from the first disk device.
                    283:     -->
                    284:   <define name="bootloader">
                    285:     <interleave>
                    286:       <element name="bootloader">
                    287:         <choice>
                    288:           <ref name="absFilePath"/>
                    289:           <empty/>
                    290:         </choice>
                    291:       </element>
                    292:       <optional>
                    293:         <element name="bootloader_args">
                    294:           <text/>
                    295:         </element>
                    296:       </optional>
                    297:     </interleave>
                    298:   </define>
                    299:   <define name="osbootkernel">
                    300:     <interleave>
                    301:       <element name="kernel">
                    302:         <ref name="absFilePath"/>
                    303:       </element>
                    304:       <optional>
                    305:         <element name="initrd">
                    306:           <ref name="absFilePath"/>
                    307:         </element>
                    308:       </optional>
                    309:       <optional>
                    310:         <element name="root">
                    311:           <ref name="devicePath"/>
                    312:         </element>
                    313:       </optional>
                    314:       <optional>
                    315:         <element name="cmdline">
                    316:           <text/>
                    317:         </element>
                    318:       </optional>
                    319:     </interleave>
                    320:   </define>
                    321:   <define name="osbootdev">
                    322:     <element name="boot">
                    323:       <attribute name="dev">
                    324:         <choice>
                    325:           <value>hd</value>
                    326:           <value>fd</value>
                    327:           <value>cdrom</value>
                    328:           <value>network</value>
                    329:         </choice>
                    330:       </attribute>
                    331:       <empty/>
                    332:     </element>
                    333:   </define>
                    334:   <define name="diskspec">
                    335:     <optional>
                    336:       <ref name="driver"/>
                    337:     </optional>
                    338:     <ref name="target"/>
                    339:     <optional>
                    340:       <element name="readonly">
                    341:         <empty/>
                    342:       </element>
                    343:     </optional>
                    344:     <optional>
                    345:       <element name="shareable">
                    346:         <empty/>
                    347:       </element>
                    348:     </optional>
                    349:     <optional>
                    350:       <element name="serial">
                    351:         <ref name="diskSerial"/>
                    352:       </element>
                    353:     </optional>
                    354:   </define>
                    355:   <!--
                    356:       A disk description can be either of type file or block
                    357:       The name of the attribute on the source element depends on the type
                    358: 
                    359:     -->
                    360:   <define name="disk">
                    361:     <element name="disk">
                    362:       <optional>
                    363:         <attribute name="device">
                    364:           <choice>
                    365:             <value>floppy</value>
                    366:             <value>disk</value>
                    367:             <value>cdrom</value>
                    368:           </choice>
                    369:         </attribute>
                    370:       </optional>
                    371:       <choice>
                    372:         <group>
                    373:           <attribute name="type">
                    374:             <value>file</value>
                    375:           </attribute>
                    376:           <interleave>
                    377:             <optional>
                    378:               <element name="source">
                    379:                 <attribute name="file">
                    380:                   <ref name="absFilePath"/>
                    381:                 </attribute>
                    382:                 <empty/>
                    383:               </element>
                    384:             </optional>
                    385:             <ref name="diskspec"/>
                    386:           </interleave>
                    387:         </group>
                    388:         <group>
                    389:           <attribute name="type">
                    390:             <value>block</value>
                    391:           </attribute>
                    392:           <interleave>
                    393:             <optional>
                    394:               <element name="source">
                    395:                 <attribute name="dev">
                    396:                   <ref name="deviceName"/>
                    397:                 </attribute>
                    398:                 <empty/>
                    399:               </element>
                    400:             </optional>
                    401:             <ref name="diskspec"/>
                    402:           </interleave>
                    403:         </group>
                    404:         <ref name="diskspec"/>
                    405:       </choice>
                    406:     </element>
                    407:   </define>
                    408:   <define name="target">
                    409:     <element name="target">
                    410:       <attribute name="dev">
                    411:         <ref name="deviceName"/>
                    412:       </attribute>
                    413:       <optional>
                    414:         <attribute name="bus">
                    415:           <choice>
                    416:             <value>ide</value>
                    417:             <value>fdc</value>
                    418:             <value>scsi</value>
                    419:             <value>virtio</value>
                    420:             <value>xen</value>
                    421:             <value>usb</value>
                    422:             <value>uml</value>
                    423:           </choice>
                    424:         </attribute>
                    425:       </optional>
                    426:     </element>
                    427:   </define>
                    428:   <!--
                    429:       Disk may use a special driver for access. Currently this is
                    430:       only defined for Xen for tap/aio and file, but will certainly be
                    431:       extended in the future, and libvirt doesn't look for specific values.
                    432:     -->
                    433:   <define name="driver">
                    434:     <element name="driver">
                    435:       <choice>
                    436:         <group>
                    437:           <ref name="driverFormat"/>
                    438:           <optional>
                    439:             <ref name="driverCache"/>
                    440:           </optional>
                    441:         </group>
                    442:         <group>
                    443:           <optional>
                    444:             <ref name="driverFormat"/>
                    445:           </optional>
                    446:           <ref name="driverCache"/>
                    447:         </group>
                    448:       </choice>
                    449:       <empty/>
                    450:     </element>
                    451:   </define>
                    452:   <define name="driverFormat">
                    453:     <attribute name="name">
                    454:       <ref name="genericName"/>
                    455:     </attribute>
                    456:     <optional>
                    457:       <attribute name="type">
                    458:         <ref name="genericName"/>
                    459:       </attribute>
                    460:     </optional>
                    461:   </define>
                    462:   <define name="driverCache">
                    463:     <attribute name="cache">
                    464:       <choice>
                    465:         <value>none</value>
                    466:         <value>writeback</value>
                    467:         <value>writethrough</value>
                    468:       </choice>
                    469:     </attribute>
                    470:   </define>
                    471:   <define name="filesystem">
                    472:     <element name="filesystem">
                    473:       <choice>
                    474:         <group>
                    475:           <attribute name="type">
                    476:             <value>file</value>
                    477:           </attribute>
                    478:           <interleave>
                    479:             <element name="source">
                    480:               <attribute name="file">
                    481:                 <ref name="absFilePath"/>
                    482:               </attribute>
                    483:               <empty/>
                    484:             </element>
                    485:             <ref name="filesystemtgt"/>
                    486:           </interleave>
                    487:         </group>
                    488:         <group>
                    489:           <attribute name="type">
                    490:             <value>block</value>
                    491:           </attribute>
                    492:           <interleave>
                    493:             <element name="source">
                    494:               <attribute name="dev">
                    495:                 <ref name="deviceName"/>
                    496:               </attribute>
                    497:               <empty/>
                    498:             </element>
                    499:             <ref name="filesystemtgt"/>
                    500:           </interleave>
                    501:         </group>
                    502:         <group>
                    503:           <attribute name="type">
                    504:             <value>mount</value>
                    505:           </attribute>
                    506:           <interleave>
                    507:             <element name="source">
                    508:               <attribute name="dir">
                    509:                 <ref name="absFilePath"/>
                    510:               </attribute>
                    511:               <empty/>
                    512:             </element>
                    513:             <ref name="filesystemtgt"/>
                    514:           </interleave>
                    515:         </group>
                    516:         <group>
                    517:           <attribute name="type">
                    518:             <value>template</value>
                    519:           </attribute>
                    520:           <interleave>
                    521:             <element name="source">
                    522:               <attribute name="name">
                    523:                 <ref name="genericName"/>
                    524:               </attribute>
                    525:               <empty/>
                    526:             </element>
                    527:             <ref name="filesystemtgt"/>
                    528:           </interleave>
                    529:         </group>
                    530:       </choice>
                    531:     </element>
                    532:   </define>
                    533:   <define name="filesystemtgt">
                    534:     <element name="target">
                    535:       <attribute name="dir">
                    536:         <ref name="absDirPath"/>
                    537:       </attribute>
                    538:       <empty/>
                    539:     </element>
                    540:   </define>
                    541:   <!--
                    542:       An interface description can either be of type bridge in which case
                    543:       it will use a bridging source, or of type ethernet which uses a device
                    544:       source and a device target instead. They both share a set of interface
                    545:       options. FIXME
                    546:     -->
                    547:   <define name="interface">
                    548:     <element name="interface">
                    549:       <choice>
                    550:         <group>
                    551:           <attribute name="type">
                    552:             <value>bridge</value>
                    553:           </attribute>
                    554:           <interleave>
                    555:             <optional>
                    556:               <element name="source">
                    557:                 <attribute name="bridge">
                    558:                   <ref name="deviceName"/>
                    559:                 </attribute>
                    560:                 <empty/>
                    561:               </element>
                    562:             </optional>
                    563:             <ref name="interface-options"/>
                    564:           </interleave>
                    565:         </group>
                    566:         <group>
                    567:           <attribute name="type">
                    568:             <value>ethernet</value>
                    569:           </attribute>
                    570:           <interleave>
                    571:             <optional>
                    572:               <element name="source">
                    573:                 <attribute name="dev">
                    574:                   <ref name="deviceName"/>
                    575:                 </attribute>
                    576:                 <empty/>
                    577:               </element>
                    578:             </optional>
                    579:             <ref name="interface-options"/>
                    580:           </interleave>
                    581:         </group>
                    582:         <group>
                    583:           <attribute name="type">
                    584:             <value>network</value>
                    585:           </attribute>
                    586:           <interleave>
                    587:             <element name="source">
                    588:               <attribute name="network">
                    589:                 <ref name="deviceName"/>
                    590:               </attribute>
                    591:               <empty/>
                    592:             </element>
                    593:             <ref name="interface-options"/>
                    594:           </interleave>
                    595:         </group>
                    596:         <group>
                    597:           <attribute name="type">
                    598:             <value>user</value>
                    599:           </attribute>
                    600:           <interleave>
                    601:             <ref name="interface-options"/>
                    602:           </interleave>
                    603:         </group>
                    604:         <group>
                    605:           <attribute name="type">
                    606:             <value>internal</value>
                    607:           </attribute>
                    608:           <interleave>
                    609:             <element name="source">
                    610:               <attribute name="name">
                    611:                 <ref name="deviceName"/>
                    612:               </attribute>
                    613:               <empty/>
                    614:             </element>
                    615:             <ref name="interface-options"/>
                    616:           </interleave>
                    617:         </group>
                    618:       </choice>
                    619:     </element>
                    620:   </define>
                    621:   <!--
                    622:       The interface options possible are:
                    623:         - the MAC address
                    624:         - the IP address bound to the interface
                    625:         - the name of the script used to set up the binding
                    626:         - the target device used
                    627:     -->
                    628:   <define name="interface-options">
                    629:     <interleave>
                    630:       <optional>
                    631:         <element name="target">
                    632:           <attribute name="dev">
                    633:             <ref name="deviceName"/>
                    634:           </attribute>
                    635:           <empty/>
                    636:         </element>
                    637:       </optional>
                    638:       <optional>
                    639:         <element name="mac">
                    640:           <attribute name="address">
                    641:             <ref name="addrMAC"/>
                    642:           </attribute>
                    643:           <empty/>
                    644:         </element>
                    645:       </optional>
                    646:       <optional>
                    647:         <element name="ip">
                    648:           <attribute name="address">
                    649:             <ref name="addrIP"/>
                    650:           </attribute>
                    651:           <empty/>
                    652:         </element>
                    653:       </optional>
                    654:       <optional>
                    655:         <element name="script">
                    656:           <attribute name="path">
                    657:             <ref name="filePath"/>
                    658:           </attribute>
                    659:           <empty/>
                    660:         </element>
                    661:       </optional>
                    662:       <optional>
                    663:         <element name="model">
                    664:           <attribute name="type"/>
                    665:           <empty/>
                    666:         </element>
                    667:       </optional>
                    668:     </interleave>
                    669:   </define>
                    670:   <!--
                    671:       An emulator description is just a path to the binary used for the task
                    672:     -->
                    673:   <define name="emulator">
                    674:     <element name="emulator">
                    675:       <ref name="absFilePath"/>
                    676:     </element>
                    677:   </define>
                    678:   <!--
                    679:       A graphic description, currently in Xen only 2 types are supported:
                    680:         - sdl with optional display, xauth and fullscreen
                    681:         - vnc with a required port and optional listen IP address, password
                    682:           and keymap
                    683:     -->
                    684:   <define name="graphic">
                    685:     <element name="graphics">
                    686:       <choice>
                    687:         <group>
                    688:           <attribute name="type">
                    689:             <value>sdl</value>
                    690:           </attribute>
                    691:           <optional>
                    692:             <attribute name="display">
                    693:               <text/>
                    694:             </attribute>
                    695:           </optional>
                    696:           <optional>
                    697:             <attribute name="xauth">
                    698:               <text/>
                    699:             </attribute>
                    700:           </optional>
                    701:           <optional>
                    702:             <attribute name="fullscreen">
                    703:               <choice>
                    704:                 <value>yes</value>
                    705:                 <value>no</value>
                    706:               </choice>
                    707:             </attribute>
                    708:           </optional>
                    709:         </group>
                    710:         <group>
                    711:           <attribute name="type">
                    712:             <value>vnc</value>
                    713:           </attribute>
                    714:           <optional>
                    715:             <attribute name="port">
                    716:               <ref name="PortNumber"/>
                    717:             </attribute>
                    718:           </optional>
                    719:           <optional>
                    720:             <attribute name="autoport">
                    721:               <choice>
                    722:                 <value>yes</value>
                    723:                 <value>no</value>
                    724:               </choice>
                    725:             </attribute>
                    726:           </optional>
                    727:           <optional>
                    728:             <attribute name="listen">
                    729:               <ref name="addrIP"/>
                    730:             </attribute>
                    731:           </optional>
                    732:           <optional>
                    733:             <attribute name="passwd">
                    734:               <text/>
                    735:             </attribute>
                    736:           </optional>
                    737:           <optional>
                    738:             <attribute name="keymap">
                    739:               <text/>
                    740:             </attribute>
                    741:           </optional>
                    742:         </group>
                    743:         <group>
                    744:           <attribute name="type">
                    745:             <value>rdp</value>
                    746:           </attribute>
                    747:           <optional>
                    748:             <attribute name="port">
                    749:               <ref name="PortNumber"/>
                    750:             </attribute>
                    751:           </optional>
                    752:           <optional>
                    753:             <attribute name="autoport">
                    754:               <choice>
                    755:                 <value>yes</value>
                    756:                 <value>no</value>
                    757:               </choice>
                    758:             </attribute>
                    759:           </optional>
                    760:           <optional>
                    761:             <attribute name="replaceUser">
                    762:               <choice>
                    763:                 <value>yes</value>
                    764:                 <value>no</value>
                    765:               </choice>
                    766:             </attribute>
                    767:           </optional>
                    768:           <optional>
                    769:             <attribute name="multiUser">
                    770:               <choice>
                    771:                 <value>yes</value>
                    772:                 <value>no</value>
                    773:               </choice>
                    774:             </attribute>
                    775:           </optional>
                    776:           <optional>
                    777:             <attribute name="listen">
                    778:               <ref name="addrIP"/>
                    779:             </attribute>
                    780:           </optional>
                    781:         </group>
                    782:         <group>
                    783:           <attribute name="type">
                    784:             <value>desktop</value>
                    785:           </attribute>
                    786:           <optional>
                    787:             <attribute name="display">
                    788:               <text/>
                    789:             </attribute>
                    790:           </optional>
                    791:           <optional>
                    792:             <attribute name="fullscreen">
                    793:               <choice>
                    794:                 <value>yes</value>
                    795:                 <value>no</value>
                    796:               </choice>
                    797:             </attribute>
                    798:           </optional>
                    799:         </group>
                    800:       </choice>
                    801:     </element>
                    802:   </define>
                    803:   <!--
                    804:      A graphic description, currently in Xen only 2 types are supported:
                    805:        - sdl with optional display, xauth and fullscreen
                    806:        - vnc with a required port and optional listen IP address, password
                    807:          and keymap
                    808:    -->
                    809:   <define name="video">
                    810:     <element name="video">
                    811:       <optional>
                    812:        <element name="model">
                    813:           <attribute name="type">
                    814:             <choice>
                    815:               <value>vga</value>
                    816:               <value>cirrus</value>
                    817:               <value>vmvga</value>
                    818:               <value>xen</value>
                    819:               <value>vbox</value>
                    820:             </choice>
                    821:           </attribute>
                    822:           <optional>
                    823:             <attribute name="vram">
                    824:               <ref name="unsignedInt"/>
                    825:             </attribute>
                    826:           </optional>
                    827:           <optional>
                    828:             <attribute name="heads">
                    829:               <ref name="unsignedInt"/>
                    830:             </attribute>
                    831:           </optional>
                    832:           <optional>
                    833:             <element name="acceleration">
                    834:               <optional>
                    835:                 <attribute name="accel3d">
                    836:                   <choice>
                    837:                     <value>yes</value>
                    838:                     <value>no</value>
                    839:                   </choice>
                    840:                 </attribute>
                    841:               </optional>
                    842:               <optional>
                    843:                 <attribute name="accel2d">
                    844:                   <choice>
                    845:                     <value>yes</value>
                    846:                     <value>no</value>
                    847:                   </choice>
                    848:                 </attribute>
                    849:               </optional>
                    850:             </element>
                    851:           </optional>
                    852:        </element>
                    853:       </optional>
                    854:     </element>
                    855:   </define>
                    856:   <!--
                    857:       When a domain terminates multiple policies can be applied depending
                    858:       on how it ended:
                    859:     -->
                    860:   <define name="termination">
                    861:     <interleave>
                    862:       <optional>
                    863:         <element name="on_reboot">
                    864:           <ref name="offOptions"/>
                    865:         </element>
                    866:       </optional>
                    867:       <optional>
                    868:         <element name="on_poweroff">
                    869:           <ref name="offOptions"/>
                    870:         </element>
                    871:       </optional>
                    872:       <optional>
                    873:         <element name="on_crash">
                    874:           <ref name="offOptions"/>
                    875:         </element>
                    876:       </optional>
                    877:     </interleave>
                    878:   </define>
                    879:   <!--
                    880:       Options when a domain terminates:
                    881:       destroy: The domain is cleaned up
                    882:       restart: A new domain is started in place of the old one
                    883:       preserve: The domain will remain in memory until it is destroyed manually
                    884:       rename-restart: a variant of the previous one but where the old domain is
                    885:                       renamed before being saved to allow a restart
                    886:     -->
                    887:   <define name="offOptions">
                    888:     <choice>
                    889:       <value>destroy</value>
                    890:       <value>restart</value>
                    891:       <value>preserve</value>
                    892:       <value>rename-restart</value>
                    893:     </choice>
                    894:   </define>
                    895:   <!--
                    896:       Specific setup for a qemu emulated character device.  Note: this
                    897:       definition doesn't fully specify the constraints on this node.
                    898:     -->
                    899:   <define name="qemucdev">
                    900:     <attribute name="type">
                    901:       <choice>
                    902:         <value>dev</value>
                    903:         <value>file</value>
                    904:         <value>pipe</value>
                    905:         <value>unix</value>
                    906:         <value>tcp</value>
                    907:         <value>udp</value>
                    908:         <value>null</value>
                    909:         <value>stdio</value>
                    910:         <value>vc</value>
                    911:         <value>pty</value>
                    912:       </choice>
                    913:     </attribute>
                    914:     <interleave>
                    915:       <optional>
                    916:         <oneOrMore>
                    917:           <element name="source">
                    918:             <optional>
                    919:               <attribute name="mode"/>
                    920:             </optional>
                    921:             <optional>
                    922:               <attribute name="path"/>
                    923:             </optional>
                    924:             <optional>
                    925:               <attribute name="host"/>
                    926:             </optional>
                    927:             <optional>
                    928:               <attribute name="service"/>
                    929:             </optional>
                    930:             <optional>
                    931:               <attribute name="wiremode"/>
                    932:             </optional>
                    933:           </element>
                    934:         </oneOrMore>
                    935:       </optional>
                    936:       <optional>
                    937:         <element name="protocol">
                    938:           <optional>
                    939:             <attribute name="type"/>
                    940:           </optional>
                    941:         </element>
                    942:       </optional>
                    943:       <optional>
                    944:         <element name="target">
                    945:           <optional>
                    946:             <attribute name="port"/>
                    947:           </optional>
                    948:         </element>
                    949:       </optional>
                    950:     </interleave>
                    951:   </define>
                    952:   <!--
                    953:       The description for a console
                    954:       just a tty device
                    955:     -->
                    956:   <define name="console">
                    957:     <element name="console">
                    958:       <choice>
                    959:         <group>
                    960:           <optional>
                    961:             <attribute name="tty">
                    962:               <ref name="devicePath"/>
                    963:             </attribute>
                    964:           </optional>
                    965:           <empty/>
                    966:         </group>
                    967:         <ref name="qemucdev"/>
                    968:       </choice>
                    969:     </element>
                    970:   </define>
                    971:   <define name="sound">
                    972:     <element name="sound">
                    973:       <attribute name="model">
                    974:         <choice>
                    975:           <value>sb16</value>
                    976:           <value>es1370</value>
                    977:           <value>pcspk</value>
                    978:           <value>ac97</value>
                    979:         </choice>
                    980:       </attribute>
                    981:     </element>
                    982:   </define>
                    983:   <define name="parallel">
                    984:     <element name="parallel">
                    985:       <ref name="qemucdev"/>
                    986:     </element>
                    987:   </define>
                    988:   <define name="serial">
                    989:     <element name="serial">
                    990:       <ref name="qemucdev"/>
                    991:     </element>
                    992:   </define>
                    993:   <define name="input">
                    994:     <element name="input">
                    995:       <attribute name="type">
                    996:         <choice>
                    997:           <value>tablet</value>
                    998:           <value>mouse</value>
                    999:         </choice>
                   1000:       </attribute>
                   1001:       <optional>
                   1002:         <attribute name="bus">
                   1003:           <choice>
                   1004:             <value>ps2</value>
                   1005:             <value>usb</value>
                   1006:             <value>xen</value>
                   1007:           </choice>
                   1008:         </attribute>
                   1009:       </optional>
                   1010:     </element>
                   1011:   </define>
                   1012:   <define name="hostdev">
                   1013:     <element name="hostdev">
                   1014:       <optional>
                   1015:         <attribute name="mode">
                   1016:           <choice>
                   1017:             <value>subsystem</value>
                   1018:             <value>capabilities</value>
                   1019:           </choice>
                   1020:         </attribute>
                   1021:         <attribute name="type">
                   1022:           <choice>
                   1023:             <value>usb</value>
                   1024:             <value>pci</value>
                   1025:           </choice>
                   1026:         </attribute>
                   1027:         <attribute name="managed">
                   1028:           <choice>
                   1029:             <value>yes</value>
                   1030:             <value>no</value>
                   1031:           </choice>
                   1032:         </attribute>
                   1033:       </optional>
                   1034:       <group>
                   1035:         <element name="source">
                   1036:           <choice>
                   1037:             <ref name="usbproduct"/>
                   1038:             <ref name="usbaddress"/>
                   1039:             <ref name="pciaddress"/>
                   1040:           </choice>
                   1041:         </element>
                   1042:       </group>
                   1043:     </element>
                   1044:   </define>
                   1045:   <define name="usbproduct">
                   1046:     <element name="vendor">
                   1047:       <attribute name="id">
                   1048:         <ref name="usbId"/>
                   1049:       </attribute>
                   1050:     </element>
                   1051:     <element name="product">
                   1052:       <attribute name="id">
                   1053:         <ref name="usbId"/>
                   1054:       </attribute>
                   1055:     </element>
                   1056:   </define>
                   1057:   <define name="usbaddress">
                   1058:     <element name="address">
                   1059:       <attribute name="bus">
                   1060:         <ref name="usbAddr"/>
                   1061:       </attribute>
                   1062:       <attribute name="device">
                   1063:         <ref name="usbAddr"/>
                   1064:       </attribute>
                   1065:     </element>
                   1066:   </define>
                   1067:   <define name="pciaddress">
                   1068:     <element name="address">
                   1069:       <optional>
                   1070:         <attribute name="domain">
                   1071:           <ref name="pciDomain"/>
                   1072:         </attribute>
                   1073:       </optional>
                   1074:       <attribute name="bus">
                   1075:         <ref name="pciBus"/>
                   1076:       </attribute>
                   1077:       <attribute name="slot">
                   1078:         <ref name="pciSlot"/>
                   1079:       </attribute>
                   1080:       <attribute name="function">
                   1081:         <ref name="pciFunc"/>
                   1082:       </attribute>
                   1083:     </element>
                   1084:   </define>
                   1085:   <!--
                   1086:       Devices attached to a domain.
                   1087:     -->
                   1088:   <define name="devices">
                   1089:     <element name="devices">
                   1090:       <interleave>
                   1091:         <optional>
                   1092:           <ref name="emulator"/>
                   1093:         </optional>
                   1094:         <zeroOrMore>
                   1095:           <choice>
                   1096:             <ref name="disk"/>
                   1097:             <ref name="filesystem"/>
                   1098:             <ref name="interface"/>
                   1099:             <ref name="input"/>
                   1100:             <ref name="sound"/>
                   1101:             <ref name="hostdev"/>
                   1102:             <ref name="graphic"/>
                   1103:             <ref name="video"/>
                   1104:             <ref name="console"/>
                   1105:             <ref name="parallel"/>
                   1106:             <ref name="serial"/>
                   1107:           </choice>
                   1108:         </zeroOrMore>
                   1109:       </interleave>
                   1110:     </element>
                   1111:   </define>
                   1112:   <!--
                   1113:       A set of optional features: PAE, APIC and ACPI support
                   1114:     -->
                   1115:   <define name="features">
                   1116:     <optional>
                   1117:       <element name="features">
                   1118:         <interleave>
                   1119:           <optional>
                   1120:             <element name="pae">
                   1121:               <empty/>
                   1122:             </element>
                   1123:           </optional>
                   1124:           <optional>
                   1125:             <element name="apic">
                   1126:               <empty/>
                   1127:             </element>
                   1128:           </optional>
                   1129:           <optional>
                   1130:             <element name="acpi">
                   1131:               <empty/>
                   1132:             </element>
                   1133:           </optional>
                   1134:         </interleave>
                   1135:       </element>
                   1136:     </optional>
                   1137:   </define>
                   1138:   <!--
                   1139:        Type library
                   1140: 
                   1141:        Our unsignedInt doesn't allow a leading '+' in its lexical form
                   1142:        A domain name shoul be made of ascii, numbers, _-+ and is non-empty
                   1143:        UUID currently allows only the 32 characters strict syntax
                   1144:        memoryKB request at least 4Mbytes though Xen will grow bigger if too low
                   1145:     -->
                   1146:   <define name="unsignedInt">
                   1147:     <data type="unsignedInt">
                   1148:       <param name="pattern">[0-9]+</param>
                   1149:     </data>
                   1150:   </define>
                   1151:   <define name="countCPU">
                   1152:     <data type="unsignedShort">
                   1153:       <param name="pattern">[0-9]+</param>
                   1154:       <param name="minInclusive">1</param>
                   1155:     </data>
                   1156:   </define>
                   1157:   <define name="PortNumber">
                   1158:     <data type="short">
                   1159:       <param name="minInclusive">-1</param>
                   1160:     </data>
                   1161:   </define>
                   1162:   <define name="memoryKB">
                   1163:     <data type="unsignedInt">
                   1164:       <param name="pattern">[0-9]+</param>
                   1165:       <param name="minInclusive">4000</param>
                   1166:     </data>
                   1167:   </define>
                   1168:   <define name="domainName">
                   1169:     <data type="string">
                   1170:       <param name="pattern">[A-Za-z0-9_\.\+\-&amp;:/]+</param>
                   1171:     </data>
                   1172:   </define>
                   1173:   <define name="diskSerial">
                   1174:     <data type="string">
                   1175:       <param name="pattern">[A-Za-z0-9_\.\+\-]+</param>
                   1176:     </data>
                   1177:   </define>
                   1178:   <define name="genericName">
                   1179:     <data type="string">
                   1180:       <param name="pattern">[a-zA-Z0-9_\+\-]+</param>
                   1181:     </data>
                   1182:   </define>
                   1183:   <define name="UUID">
                   1184:     <choice>
                   1185:       <data type="string">
                   1186:         <param name="pattern">[a-fA-F0-9]{32}</param>
                   1187:       </data>
                   1188:       <data type="string">
                   1189:         <param name="pattern">[a-fA-F0-9]{8}\-([a-fA-F0-9]{4}\-){3}[a-fA-F0-9]{12}</param>
                   1190:       </data>
                   1191:     </choice>
                   1192:   </define>
                   1193:   <define name="filePath">
                   1194:     <data type="string">
                   1195:       <param name="pattern">[a-zA-Z0-9_\.\+\-&amp;/%]+</param>
                   1196:     </data>
                   1197:   </define>
                   1198:   <define name="absFilePath">
                   1199:     <data type="string">
                   1200:       <param name="pattern">/[a-zA-Z0-9_\.\+\-&amp;/%]+</param>
                   1201:     </data>
                   1202:   </define>
                   1203:   <define name="absDirPath">
                   1204:     <data type="string">
                   1205:       <param name="pattern">/[a-zA-Z0-9_\.\+\-&amp;/%]*</param>
                   1206:     </data>
                   1207:   </define>
                   1208:   <define name="devicePath">
                   1209:     <data type="string">
                   1210:       <param name="pattern">/[a-zA-Z0-9_\+\-/%]+</param>
                   1211:     </data>
                   1212:   </define>
                   1213:   <define name="deviceName">
                   1214:     <data type="string">
                   1215:       <param name="pattern">[a-zA-Z0-9_\.\-:/]+</param>
                   1216:     </data>
                   1217:   </define>
                   1218:   <define name="addrMAC">
                   1219:     <data type="string">
                   1220:       <param name="pattern">([a-fA-F0-9]{2}:){5}[a-fA-F0-9]{2}</param>
                   1221:     </data>
                   1222:   </define>
                   1223:   <define name="addrIP">
                   1224:     <data type="string">
                   1225:       <param name="pattern">([0-2]?[0-9]?[0-9]\.){3}[0-2]?[0-9]?[0-9]</param>
                   1226:     </data>
                   1227:   </define>
                   1228:   <define name="usbId">
                   1229:     <data type="string">
                   1230:       <param name="pattern">(0x)?[0-9a-fA-F]{1,4}</param>
                   1231:     </data>
                   1232:   </define>
                   1233:   <define name="usbAddr">
                   1234:     <data type="string">
                   1235:       <param name="pattern">(0x)?[0-9a-fA-F]{1,3}</param>
                   1236:     </data>
                   1237:   </define>
                   1238:   <define name="pciDomain">
                   1239:     <data type="string">
                   1240:       <param name="pattern">(0x)?[0-9a-fA-F]{1,4}</param>
                   1241:     </data>
                   1242:   </define>
                   1243:   <define name="pciBus">
                   1244:     <data type="string">
                   1245:       <param name="pattern">(0x)?[0-9a-fA-F]{1,2}</param>
                   1246:     </data>
                   1247:   </define>
                   1248:   <define name="pciSlot">
                   1249:     <data type="string">
                   1250:       <param name="pattern">(0x)?[0-1]?[0-9a-fA-F]</param>
                   1251:     </data>
                   1252:   </define>
                   1253:   <define name="pciFunc">
                   1254:     <data type="string">
                   1255:       <param name="pattern">(0x)?[0-7]</param>
                   1256:     </data>
                   1257:   </define>
                   1258: </grammar>

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>