common-gcore-resources/src/main/resources/schema/service.xsd

392 lines
14 KiB
XML

<?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>