GCube Service XSD
From Gcube Wiki
The related file can be downloaded by following this link.
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:annotation> <xs:documentation xml:lang="en"> XML Schema for gCube Services Version 1.2.0 Last modified:16/05/2011 Contact: http://www.gcube-system.org </xs:documentation> </xs:annotation> <!-- SERVICE --> <xs:redefine schemaLocation="CommonTypeDefinitions.xsd"> <xs:complexType name="ProfileType"> <xs:complexContent> <xs:restriction base="ProfileType"> <xs:sequence> <xs:element name="Description" type="xs:string" minOccurs="0" /> <xs:element ref="Class" /> <xs:element ref="Name" /> <xs:element ref="Version" /> <xs:element ref="Configuration" minOccurs="0" /> <xs:element name="Dependencies" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="Dependency" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element ref="Class" /> <xs:element ref="Name" /> <xs:element ref="Version" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Packages"> <xs:complexType> <xs:choice> <xs:sequence> <xs:element ref="Main" /> <xs:element ref="Software" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> <xs:element ref="Software" maxOccurs="unbounded" /> <xs:sequence> <xs:element ref="Plugin" /> <xs:element ref="Software" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:choice> </xs:complexType> </xs:element> <xs:element name="SpecificData" type="FreeTextType" minOccurs="0" /> </xs:sequence> </xs:restriction> </xs:complexContent> </xs:complexType> </xs:redefine> <xs:element name="Class" type="xs:string" /> <xs:element name="Name" type="xs:string" /> <xs:element name="Version" type="xs:string" /> <xs:element name="Configuration"> <xs:complexType> <xs:sequence> <xs:element name="Static" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="Configs" minOccurs="0"> <xs:annotation> <xs:documentation xml:lang="en"> These configurations have to refer to predefined configuration files distributed with the MAIN package. At VRE creation time, the VRE designer will choose one. </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element name="Config" type="ConfigurationType" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Template" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="Params"> <xs:complexType> <xs:sequence> <xs:element name="Param" type="TemplateParam" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Dynamic" minOccurs="0"> <xs:complexType /> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:complexType name="ConfigurationType"> <xs:sequence> <xs:element name="File" type="xs:string" /> <xs:element name="Description" type="xs:string" /> <xs:element name="Label" type="xs:string" /> </xs:sequence> <xs:attribute name="default" type="xs:boolean" use="required" /> </xs:complexType> <xs:complexType name="TemplateParam"> <xs:sequence> <xs:element name="Name" type="xs:string" /> <xs:element name="Description" type="xs:string" /> <xs:element name="AllowedValues"> <xs:complexType> <xs:sequence> <xs:element name="Value" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="Description" type="xs:string" /> <xs:element name="Literal" type="xs:string" /> <xs:element name="Label" type="xs:string" /> </xs:sequence> <xs:attribute name="default" type="xs:boolean" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <!-- PACKAGE --> <xs:complexType name="Package"> <xs:sequence> <xs:element name="Description" type="xs:string" minOccurs="0" /> <xs:element name="Name" type="xs:string" /> <xs:element name="Version" type="xs:string" /> <xs:element name="MavenCoordinates" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element name="groupId" type="xs:string" minOccurs="1" maxOccurs="1" /> <xs:element name="artifactId" type="xs:string" minOccurs="1" maxOccurs="1" /> <xs:element name="version" type="xs:string" minOccurs="1" maxOccurs="1" /> <xs:element name="classifier" type="xs:string" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="TargetPlatform" type="PlatformDescription" minOccurs="0" maxOccurs="1" /> <xs:element name="MultiVersion" type="BooleanValueType" minOccurs="0" /> <xs:element name="Mandatory" minOccurs="0"> <xs:complexType> <xs:attribute name="level" type="Scopes" use="required" /> </xs:complexType> </xs:element> <xs:element name="Shareable" minOccurs="0"> <xs:complexType> <xs:attribute name="level" type="Scopes" default="VO" /> </xs:complexType> </xs:element> <xs:element name="GHNRequirements" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element ref="Requirement" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="InstallScripts" type="FileListType" minOccurs="0" /> <xs:element name="UninstallScripts" type="FileListType" minOccurs="0" /> <xs:element name="RebootScripts" type="FileListType" minOccurs="0" /> <xs:element name="Dependencies" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element ref="Dependency" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="SpecificData" type="FreeTextType" minOccurs="0" /> </xs:sequence> <xs:attribute name="deployable" type="xs:boolean" use="optional" default="true" /> </xs:complexType> <xs:element name="Dependency"> <xs:complexType> <xs:sequence> <xs:element ref="Service" /> <xs:element name="Package" type="xs:string" /> <xs:element name="Version" type="xs:string" default="1.0" minOccurs="0" maxOccurs="1" /> <xs:element name="Scope"> <xs:complexType> <xs:attribute name="level" type="Scopes" use="optional" default="GHN" /> </xs:complexType> </xs:element> <xs:element name="Optional" type="xs:boolean" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Service"> <xs:complexType> <xs:sequence> <xs:element ref="Class" /> <xs:element ref="Name" /> <xs:element ref="Version" minOccurs="0" maxOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="Scopes"> <xs:restriction base="xs:string"> <xs:enumeration value="NONE" /> <xs:enumeration value="GHN" /> <xs:enumeration value="VRE" /> <xs:enumeration value="VO" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="CategoryType"> <xs:restriction base="xs:string"> <xs:enumeration value="MEM_RAM_AVAILABLE" /> <xs:enumeration value="MEM_RAM_SIZE" /> <xs:enumeration value="MEM_VIRTUAL_AVAILABLE" /> <xs:enumeration value="MEM_VIRTUAL_SIZE" /> <xs:enumeration value="HOST" /> <xs:enumeration value="OS" /> <xs:enumeration value="DISK_SPACE" /> <xs:enumeration value="LOAD1MIN" /> <xs:enumeration value="LOAD5MIN" /> <xs:enumeration value="LOAD15MIN" /> <xs:enumeration value="PLATFORM" /> <xs:enumeration value="PROCESSOR_NUM" /> <xs:enumeration value="PROCESSOR_BOGOMIPS" /> <xs:enumeration value="SITE_LOCATION" /> <xs:enumeration value="SITE_COUNTRY" /> <xs:enumeration value="SITE_DOMAIN" /> <xs:enumeration value="RUNTIME_ENV_STRING" /> <xs:enumeration value="RUNTIME_ENV_NUMBER" /> </xs:restriction> </xs:simpleType> <xs:element name="Requirement"> <xs:annotation> <xs:documentation xml:lang="en"> - the "category" is represented by a tag name of a GHN profile - the "requirement" is one of the attributes defined for the selected category in the GHN profile - the "value" is the value of the selected attribute defined for the category in the GHN profile </xs:documentation> </xs:annotation> <xs:complexType> <xs:attribute name="category" type="xs:string" use="required" /> <!-- to be considered, must use one of the above enum values --> <xs:attribute name="key" type="xs:string" use="optional" /> <xs:attribute name="requirement" type="xs:string" use="optional" /> <xs:attribute name="value" type="xs:string" use="required" /> <xs:attribute name="operator" type="OpType" use="required" /> </xs:complexType> </xs:element> <xs:simpleType name="OpType"> <xs:restriction base="xs:string"> <xs:enumeration value="eq" /> <xs:enumeration value="exist" /> <xs:enumeration value="ge" /> <xs:enumeration value="gt" /> <xs:enumeration value="le" /> <xs:enumeration value="lt" /> <xs:enumeration value="ne" /> <xs:enumeration value="contains" /> </xs:restriction> </xs:simpleType> <xs:element name="Main"> <xs:complexType> <xs:complexContent> <xs:extension base="Package"> <xs:sequence> <xs:element name="GARArchive" type="xs:string" /> <xs:element name="ServiceEquivalenceFunctions" type="ServiceFunctionType" minOccurs="0" /> <xs:element name="PortType" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="Name" type="xs:string" /> <xs:element name="Security" type="SecurityType" minOccurs="0" /> <xs:element name="WSDL" type="FreeTextType" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:complexType name="ServiceFunctionType"> <xs:sequence> <xs:element name="Function" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="Name" type="xs:string" /> <xs:element name="FormalParameters"> <xs:complexType> <xs:sequence minOccurs="0" maxOccurs="unbounded"> <xs:element name="Name" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Body" type="FreeTextType" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:element name="Software"> <xs:complexType> <xs:complexContent> <xs:extension base="Package"> <xs:sequence> <xs:element name="Type" default="library" minOccurs="0"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="library" /> <xs:enumeration value="application" /> <xs:enumeration value="plugin" /> <xs:enumeration value="webapplication" /> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name="EntryPoint" type="xs:string" minOccurs="0" maxOccurs="unbounded" /> <xs:choice> <xs:element name="Files" type="FileListType" /> <xs:element name="URI" type="xs:anyURI" /> </xs:choice> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="Plugin"> <xs:complexType> <xs:complexContent> <xs:extension base="Package"> <xs:sequence> <xs:element name="TargetService" minOccurs="1" maxOccurs="1"> <xs:complexType> <xs:sequence> <xs:element ref="Service" minOccurs="1" maxOccurs="1" /> <xs:element name="Package" type="xs:string" minOccurs="1" maxOccurs="1" /> <xs:element name="Version" type="xs:string" minOccurs="1" maxOccurs="1" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="EntryPoint" type="xs:string" minOccurs="0" /> <xs:element name="Files" type="FileListType" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <!--<xs:element name="Webapp"> <xs:complexType> <xs:complexContent> <xs:extension base="Package"> <xs:sequence> <xs:element name="TargetPlatform" type="PlatformDescription" minOccurs="1" maxOccurs="1"/> <xs:element name="EntryPoint" type="xs:string" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> --> <xs:complexType name="SecurityType"> <xs:sequence> <xs:element name="Descriptor" type="FreeXMLType" minOccurs="0" /> <xs:element name="Operations" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element ref="Operation" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element ref="Roles" minOccurs="0" /> </xs:sequence> <xs:attribute name="name" type="xs:string" /> </xs:complexType> <xs:element name="Roles"> <xs:complexType> <xs:sequence> <xs:element name="Role" maxOccurs="unbounded"> <xs:complexType> <xs:attribute name="value" type="xs:string" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="Operation"> <xs:complexType> <xs:sequence> <xs:element ref="Roles" minOccurs="0" /> </xs:sequence> <xs:attribute name="id" type="xs:string" use="required" /> <xs:attribute name="name" type="xs:string" use="required" /> <xs:attribute name="description" type="xs:string" use="required" /> </xs:complexType> </xs:element> </xs:schema>