Annotation of embedaddon/libxml2/test/relaxng/libvirt.rng, revision 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_\.\+\-&:/]+</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_\.\+\-&/%]+</param>
! 1196: </data>
! 1197: </define>
! 1198: <define name="absFilePath">
! 1199: <data type="string">
! 1200: <param name="pattern">/[a-zA-Z0-9_\.\+\-&/%]+</param>
! 1201: </data>
! 1202: </define>
! 1203: <define name="absDirPath">
! 1204: <data type="string">
! 1205: <param name="pattern">/[a-zA-Z0-9_\.\+\-&/%]*</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>