diff options
author | Zhipeng (Howard) Huang <huangzhipeng@huawei.com> | 2017-02-27 13:08:54 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@opnfv.org> | 2017-02-27 13:08:54 +0000 |
commit | 69e33063b3703ae4529b556b63b3c4cc239c3d9a (patch) | |
tree | b30d14715b34f2e4e06928c555c940ddb3365534 /verigraph/src/main/schema/nffg.xsd | |
parent | 280310852bb5e1c7639dedf7ce268e1e66157a51 (diff) | |
parent | 53d83244c1bf36af86e90ce5fe758a369f73563e (diff) |
Merge "Add verigraph code base"
Diffstat (limited to 'verigraph/src/main/schema/nffg.xsd')
-rw-r--r-- | verigraph/src/main/schema/nffg.xsd | 363 |
1 files changed, 363 insertions, 0 deletions
diff --git a/verigraph/src/main/schema/nffg.xsd b/verigraph/src/main/schema/nffg.xsd new file mode 100644 index 0000000..77e6f40 --- /dev/null +++ b/verigraph/src/main/schema/nffg.xsd @@ -0,0 +1,363 @@ +<?xml version="1.0" encoding="UTF-8"?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:tns="http://www.example.org/nffg/" + xmlns:net="http://www.example.org/net/" + targetNamespace="http://www.example.org/nffg/" + elementFormDefault="qualified"> + + <import namespace="http://www.example.org/net/" schemaLocation="net_types.xsd"/> + + <annotation> + <documentation xml:lang="it"> + Il formato prevede si possa avere come radice "nffg-set" oppure "nffg". + Nel primo caso ci sono più nf-fg contenuti nello stesso documento XML. + </documentation> + </annotation> + + <group name="L2HeaderParameters"> + <sequence> + <element name="Mac" minOccurs="0"> + <complexType> + <attribute name="src" type="net:macAddressType" use="optional"/> + <attribute name="dst" type="net:macAddressType" use="optional"/> + <attribute name="ethertype" type="net:ethertypeType" use="optional"/> + <attribute name="vlanId" type="net:vlanIdType" use="optional"/> + <attribute name="vlanPcp" type="net:vlanPcpType" use="optional"/> + </complexType> + </element> + </sequence> + </group> + + <group name="L3HeaderParameters"> + <sequence> + <element name="Ip" minOccurs="0"> + <complexType> + <attribute name="src" type="net:ipAddressType" use="optional"/> + <attribute name="dst" type="net:ipAddressType" use="optional"/> + <attribute name="ipProtocol" type="unsignedByte" use="optional"/> + <attribute name="tos" type="unsignedByte" use="optional"/> + </complexType> + </element> + </sequence> + </group> + + <!-- controllare nel programma che non ci siano combinazioni non ammesse --> + <group name="L4HeaderParameters"> + <choice> + <element name="Tcp" minOccurs="0"> + <complexType> + <attribute name="src" type="net:portNumberType" use="optional"/> + <attribute name="dst" type="net:portNumberType" use="optional"/> + </complexType> + </element> + <element name="Udp" minOccurs="0"> + <complexType> + <attribute name="src" type="net:portNumberType" use="optional"/> + <attribute name="dst" type="net:portNumberType" use="optional"/> + </complexType> + </element> + </choice> + </group> + + <!-- alla fine controlloare tutti gli xpath perchè dopo dei cambiamenti potrebbero non andare più bene --> + <element name="nffg-set" type="tns:nffg-setType"> + <unique name="nffgIdUnique"> + <selector xpath="tns:nf-fg"/> + <field xpath="@id"/> + </unique> + + <!-- forse la NF va spostata dentro graphs e resa referenziabile (condivisibile da più nffg) --> + <!-- così facendo però, si deve trovare un modo per avere le NF dentro nffg nel caso sia questo la radice --> + <unique name="nfIdUnique"> + <selector xpath="tns:nf-fg/tns:network_functions/tns:network_function"/> + <field xpath="@id"/> + </unique> + </element> + + <element name="nffg" type="tns:nffgType"> + <unique name="epIdUnique"> + <selector xpath="tns:endpoints/tns:endpoint"/> + <field xpath="@id"/> + </unique> + + <unique name="cpIdUnique"> + <selector xpath="tns:network_functions/tns:network_function/tns:connection_points/tns:connection_point"/> + <field xpath="@id"/> + </unique> + + <unique name="portIdUnique"> + <selector xpath="tns:network_functions/tns:network_function/tns:connection_points/tns:connection_point/tns:port"/> + <field xpath="@id"/> + </unique> + + <unique name="ciIdUnique"> + <selector xpath="tns:network_functions/tns:network_function/tns:control_interfaces/tns:control_interface"/> + <field xpath="@id"/> + </unique> + + <unique name="neIdUnique"> + <selector xpath="tns:network_elements/tns:network_element"/> + <field xpath="@id"/> + </unique> + + <unique name="epcpIdRefUnique"> + <selector xpath="tns:network_elements/tns:network_element/tns:eps-cps/tns:ep-cp"/> + <field xpath="@id_ref"/> + </unique> + </element> + + <complexType name="monParamsType"> + <sequence> + <element name="parameter" maxOccurs="unbounded"> + <complexType> + <attribute name="value" type="NMTOKENS" use="required"/> + </complexType> + </element> + </sequence> + </complexType> + + <complexType name="nffg-setType"> + <sequence> + <element ref="tns:nffg" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <complexType name="nffgType"> + <sequence> + <element name="endpoints" type="tns:epointsType" nillable="true"/> + <element name="network_functions" type="tns:nfunctionsType" nillable="true"/> + <element name="network_elements" type="tns:nelementsType" nillable="true"/> + <element name="monitoring_parameters" type="tns:monParamsType" nillable="true"/> + </sequence> + <attribute name="id" type="tns:nffgIdType" use="optional"/> + <attribute name="version" type="string" use="optional"/> + </complexType> + + <simpleType name="nffgIdType"> + <restriction base="string"> + <pattern value="nffg_\d+"/> + </restriction> + </simpleType> + + <complexType name="epointsType"> + <sequence> + <element name="endpoint" type="tns:epType" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <complexType name="epType"> + <sequence> + <!-- valutare se renderlo nillable o tenere la cardinalità a * --> + <element name="flowspace"> + <complexType> + <sequence> + <group ref="tns:L2HeaderParameters"/> + <group ref="tns:L3HeaderParameters"/> + <group ref="tns:L4HeaderParameters"/> + </sequence> + <attribute name="nodeId" type="string" use="optional"/> + <attribute name="ingPhysPort" type="string" use="optional"/> + </complexType> + </element> + </sequence> + <attribute name="id" type="tns:epIdType" use="required"/> + </complexType> + + <simpleType name="epIdType"> + <restriction base="string"> + <pattern value="[a-z]*_\d+"/> + </restriction> + </simpleType> + + <complexType name="nfunctionsType"> + <sequence> + <element name="network_function" type="tns:nfType" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <complexType name="nfType"> + <sequence> + <element name="specification" type="tns:specType"/> + <element name="connection_points" type="tns:cpointsType"/> + <element name="control_interfaces" type="tns:ctrlInterfacesType"/> + <element name="monitoring_parameters" type="tns:monParamsType" nillable="true"/> + </sequence> + <attribute name="id" type="tns:nfIdType" use="required"/> + <attribute name="functionalType" type="string" use="required"/> + </complexType> + + <simpleType name="nfIdType"> + <restriction base="string"> + <pattern value="[a-z]*_\d+"/> + </restriction> + </simpleType> + + <complexType name="specType"> + <sequence> + <element name="deployment"> + <complexType> + <attribute name="type" type="string" use="optional" default="N.A."/> + </complexType> + </element> + <element name="image"> + <complexType> + <!-- controllare come viene mappata la info --> + <attribute name="uri" type="anyURI" use="optional" default="N.A."/> + </complexType> + </element> + <element name="cpu"> + <complexType> + <attribute name="model" type="string" use="optional" default="N.A."/> + <attribute name="architecture" type="string" use="optional" default="N.A."/> + <attribute name="numCores" type="unsignedByte" use="optional" default="1"/> + <attribute name="clockSpeed" type="string" use="optional" default="N.A."/> + </complexType> + </element> + <element name="memory"> + <complexType> + <attribute name="type" type="string" use="optional" default="N.A."/> + <attribute name="size" type="string" use="optional" default="N.A."/> + </complexType> + </element> + <element name="storage"> + <complexType> + <attribute name="type" type="string" use="optional" default="N.A."/> + <attribute name="size" type="string" use="optional" default="N.A."/> + </complexType> + </element> + </sequence> + </complexType> + + <complexType name="cpointsType"> + <sequence> + <element name="connection_point" type="tns:cpType" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <complexType name="cpType"> + <sequence> + <element name="port" type="tns:portType"/> + </sequence> + <attribute name="id" type="tns:cpIdType" use="required"/> + </complexType> + + <complexType name="portType"> + <attribute name="id" type="unsignedShort" use="required"/> + <attribute name="direction" type="tns:portDirEnumType" use="required"/> + <attribute name="type" type="string" use="optional" default="N.A."/> + </complexType> + + <simpleType name="portDirEnumType"> + <restriction base="string"> + <enumeration value="in"/> + <enumeration value="out"/> + <enumeration value="both"/> + </restriction> + </simpleType> + + <simpleType name="cpIdType"> + <restriction base="string"> + <pattern value="cp_\d+"/> + </restriction> + </simpleType> + + <complexType name="ctrlInterfacesType"> + <sequence> + <!-- valutare se renderlo nillable --> + <element name="control_interface" type="tns:ciType" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <complexType name="ciType"> + <sequence> + <element name="attributes"> + <complexType> + <sequence> + <element name="attribute" minOccurs="0" maxOccurs="unbounded"> + <complexType> + <attribute name="value" type="string" use="required"/> + </complexType> + </element> + </sequence> + </complexType> + </element> + </sequence> + <attribute name="id" type="tns:ciIdType" use="required"/> + </complexType> + + <simpleType name="ciIdType"> + <restriction base="string"> + <pattern value="ci_\d+"/> + </restriction> + </simpleType> + + <complexType name="nelementsType"> + <sequence> + <element name="network_element" type="tns:neType" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <complexType name="neType"> + <sequence> + <element name="eps-cps" type="tns:eps-cpsType"/> + <element name="monitoring_parameters" type="tns:monParamsType" nillable="true"/> + </sequence> + <attribute name="id" type="tns:neIdType" use="required"/> + <attribute name="type" type="string" use="required"/> + </complexType> + + <simpleType name="neIdType"> + <restriction base="string"> + <pattern value="ne_\d+"/> + </restriction> + </simpleType> + + <complexType name="eps-cpsType"> + <sequence> + <element name="ep-cp" type="tns:ep-cpType" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <complexType name="ep-cpType"> + <sequence> + <element name="flowrules" type="tns:flowrulesType" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + <attribute name="id_ref" type="string" use="required"/> + </complexType> + + <complexType name="flowrulesType"> + <sequence> + <!-- da fare valutazioni analoghe al flowspace di sopra --> + <element name="flowspace"> + <complexType> + <sequence> + <group ref="tns:L2HeaderParameters"/> + <group ref="tns:L3HeaderParameters"/> + <group ref="tns:L4HeaderParameters"/> + </sequence> + <attribute name="ingPort" type="string" use="optional"/> + </complexType> + </element> + <element name="actions" type="tns:actionsType"/> + </sequence> + </complexType> + + <complexType name="actionsType"> + <sequence> + <element name="action" type="tns:actionType" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <complexType name="actionType"> + <attribute name="type" type="tns:actionEnumType" use="required"/> + <attribute name="port" type="string" use="optional"/> + </complexType> + + <!-- controllare via SW che se l'aziione è output la porta deve esserci --> + <simpleType name="actionEnumType"> + <restriction base="string"> + <enumeration value="discard"/> + <enumeration value="output"/> + </restriction> + </simpleType> +</schema>
\ No newline at end of file |