summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorIsaku Yamahata <yamahata@valinux.co.jp>2013-03-07 18:00:43 +0900
committerFUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>2013-03-08 07:19:53 +0900
commitd40b12191bdfa64b5f1046de6de885cd887ec69f (patch)
tree0a04b8e9fa08776575e67b78f91a91bb2dac0d2c
parent7f9370a1acdee41c9b4903613194e5933f6dab19 (diff)
netconf: improve schema for netconf
RFC6241 defines only message layer, doesn't operation layer. So adds definitions for operation layer. Note: notification layer is still missing yet. Plus indentation fix. Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
-rw-r--r--ryu/lib/netconf/netconf.xsd399
1 files changed, 368 insertions, 31 deletions
diff --git a/ryu/lib/netconf/netconf.xsd b/ryu/lib/netconf/netconf.xsd
index 77853eb5..581e1fff 100644
--- a/ryu/lib/netconf/netconf.xsd
+++ b/ryu/lib/netconf/netconf.xsd
@@ -15,10 +15,14 @@
</xs:annotation>
<!--
- import standard XML definitions
- -->
+ import standard XML definitions
+ -->
+ <!--
<xs:import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2001/xml.xsd">
+ -->
+ <xs:import namespace="http://www.w3.org/XML/1998/namespace"
+ schemaLocation="xml.xsd">
<xs:annotation>
<xs:documentation>
This import accesses the xml: attribute groups for the
@@ -26,17 +30,19 @@
</xs:documentation>
</xs:annotation>
</xs:import>
+
<!--
- message-id attribute
- -->
+ message-id attribute
+ -->
<xs:simpleType name="messageIdType">
<xs:restriction base="xs:string">
<xs:maxLength value="4095"/>
</xs:restriction>
</xs:simpleType>
+
<!--
- Types used for session-id
- -->
+ Types used for session-id
+ -->
<xs:simpleType name="SessionId">
<xs:restriction base="xs:unsignedInt">
<xs:minInclusive value="1"/>
@@ -45,9 +51,10 @@
<xs:simpleType name="SessionIdOrZero">
<xs:restriction base="xs:unsignedInt"/>
</xs:simpleType>
+
<!--
- <rpc> element
- -->
+ <rpc> element
+ -->
<xs:complexType name="rpcType">
<xs:sequence>
<xs:element ref="rpcOperation"/>
@@ -55,14 +62,15 @@
<xs:attribute name="message-id" type="messageIdType"
use="required"/>
<!--
- Arbitrary attributes can be supplied with <rpc> element.
- -->
+ Arbitrary attributes can be supplied with <rpc> element.
+ -->
<xs:anyAttribute processContents="lax"/>
</xs:complexType>
<xs:element name="rpc" type="rpcType"/>
+
<!--
- data types and elements used to construct rpc-errors
- -->
+ data types and elements used to construct rpc-errors
+ -->
<xs:simpleType name="ErrorType">
<xs:restriction base="xs:string">
<xs:enumeration value="transport"/>
@@ -149,9 +157,10 @@
minOccurs="0"/>
</xs:sequence>
</xs:complexType>
+
<!--
- operation attribute used in <edit-config>
- -->
+ operation attribute used in <edit-config>
+ -->
<xs:simpleType name="editOperationType">
<xs:restriction base="xs:string">
<xs:enumeration value="merge"/>
@@ -161,10 +170,23 @@
<xs:enumeration value="remove"/>
</xs:restriction>
</xs:simpleType>
- <xs:attribute name="operation" type="editOperationType"/>
+ <xs:attribute name="operation" type="editOperationType" default="merge"/>
+
<!--
- <rpc-reply> element
- -->
+ default-operation element
+ -->
+ <xs:simpleType name="DefaultOperationType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="merge"/>
+ <xs:enumeration value="replace"/>
+ <xs:enumeration value="none"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:element name="default-operation" type="DefaultOperationType"/>
+
+ <!--
+ <rpc-reply> element
+ -->
<xs:complexType name="rpcReplyType">
<xs:choice>
<xs:element name="ok"/>
@@ -174,37 +196,49 @@
<xs:element ref="rpcResponse"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
+ <xs:element ref="data" minOccurs="0"/>
</xs:choice>
<xs:attribute name="message-id" type="messageIdType"
use="optional"/>
<!--
- Any attributes supplied with <rpc> element must be returned
- on <rpc-reply>.
- -->
+ Any attributes supplied with <rpc> element must be returned
+ on <rpc-reply>.
+ -->
<xs:anyAttribute processContents="lax"/>
</xs:complexType>
<xs:element name="rpc-reply" type="rpcReplyType"/>
+
+ <xs:complexType name="dataInlineType">
+ <xs:complexContent>
+ <xs:extension base="xs:anyType"/>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="data" type="dataInlineType"/>
+
<!--
- <rpc-error> element
- -->
+ <rpc-error> element
+ -->
<xs:element name="rpc-error" type="rpcErrorType"/>
+
<!--
- rpcOperationType: used as a base type for all
- NETCONF operations
- -->
+ rpcOperationType: used as a base type for all
+ NETCONF operations
+ -->
<xs:complexType name="rpcOperationType"/>
<xs:element name="rpcOperation" type="rpcOperationType"
abstract="true"/>
+
<!--
- rpcResponseType: used as a base type for all
- NETCONF responses
- -->
+ rpcResponseType: used as a base type for all
+ NETCONF responses
+ -->
<xs:complexType name="rpcResponseType"/>
<xs:element name="rpcResponse" type="rpcResponseType"
abstract="true"/>
+
<!--
- <hello> element
- -->
+ <hello> element
+ -->
<xs:element name="hello">
<xs:complexType>
<xs:sequence>
@@ -221,5 +255,308 @@
</xs:sequence>
</xs:complexType>
</xs:element>
-</xs:schema>
+ <!--
+ <config> element
+ -->
+ <xs:complexType name="configInlineType">
+ <xs:complexContent>
+ <xs:extension base="xs:anyType"/>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="config" type="configInlineType"/>
+
+ <!--
+ Configuration datastore names
+ -->
+ <xs:complexType name="configNameType"/>
+ <xs:element name="config-name" type="configNameType"
+ abstract="true"/>
+ <xs:element name="startup" type="configNameType"
+ substitutionGroup="config-name"/>
+ <xs:element name="candidate" type="configNameType"
+ substitutionGroup="config-name"/>
+ <xs:element name="running" type="configNameType"
+ substitutionGroup="config-name"/>
+
+ <!--
+ <url> element
+ -->
+ <xs:complexType name="configUriType">
+ <xs:simpleContent>
+ <xs:extension base="xs:anyURI"/>
+ </xs:simpleContent>
+ </xs:complexType>
+ <xs:element name="url" type="configUriType"/>
+
+ <!--
+ <source> element
+ -->
+ <xs:complexType name="rpcOperationSourceType">
+ <xs:choice>
+ <xs:element ref="config"/>
+ <xs:element ref="config-name"/>
+ <xs:element ref="url"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:element name="source" type="rpcOperationSourceType"/>
+
+ <!--
+ <target> element
+ -->
+ <xs:complexType name="rpcOperationTargetType">
+ <xs:choice>
+ <xs:element ref="config-name"/>
+ <xs:element ref="url"/>
+ </xs:choice>
+ </xs:complexType>
+ <xs:element name="target" type="rpcOperationTargetType"/>
+
+ <!--
+ <filter> element
+ -->
+ <xs:simpleType name="FilterType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="subtree"/>
+ <xs:enumeration value="xpath"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:complexType name="filterInlineType">
+ <xs:complexContent>
+ <xs:extension base="xs:anyType">
+ <xs:attribute name="type" type="FilterType"
+ default="subtree"/>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="filter" type="filterInlineType"/>
+
+ <!--
+ test-option> parameter to <edit-config>
+ -->
+ <xs:simpleType name="testOptionType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="test-then-set"/>
+ <xs:enumeration value="set"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:element name="test-option" type="testOptionType"/>
+
+ <!--
+ <error-option> parameter to <edit-config>
+ -->
+ <xs:simpleType name="errorOptionType">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="stop-on-error"/>
+ <xs:enumeration value="ignore-error"/>
+ <xs:enumeration value="rollback-on-error"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:element name="error-option" type="errorOptionType"/>
+
+ <!--
+ <get> operation
+ -->
+ <xs:complexType name="getType">
+ <xs:complexContent>
+ <xs:extension base="rpcOperationType">
+ <xs:sequence>
+ <xs:element ref="filter" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="get" type="getType" substitutionGroup="rpcOperation"/>
+
+ <!--
+ <get-config> operation
+ -->
+ <xs:complexType name="getConfigType">
+ <xs:complexContent>
+ <xs:extension base="rpcOperationType">
+ <xs:sequence>
+ <xs:element ref="source"/>
+ <xs:element ref="filter" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="get-config" type="getConfigType"
+ substitutionGroup="rpcOperation"/>
+
+ <!--
+ <edit-config> operation
+ -->
+ <xs:complexType name="editConfigType">
+ <xs:complexContent>
+ <xs:extension base="rpcOperationType">
+ <xs:sequence>
+ <xs:element ref="target"/>
+ <xs:element ref="default-operation" minOccurs="0"/>
+ <xs:element ref="test-option" minOccurs="0"/>
+ <xs:element ref="error-option" minOccurs="0"/>
+ <xs:element ref="config" minOccurs="0"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="edit-config" type="editConfigType"
+ substitutionGroup="rpcOperation"/>
+
+ <!--
+ <copy-config> operation
+ -->
+ <xs:complexType name="copyConfigType">
+ <xs:complexContent>
+ <xs:extension base="rpcOperationType">
+ <xs:sequence>
+ <xs:element ref="source"/>
+ <xs:element ref="target"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="copy-config" type="copyConfigType"
+ substitutionGroup="rpcOperation"/>
+
+ <!--
+ <delete-config> operation
+ -->
+ <xs:complexType name="delete-configType">
+ <xs:complexContent>
+ <xs:extension base="rpcOperationType">
+ <xs:sequence>
+ <xs:element ref="target"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="delete-config" type="delete-configType"
+ substitutionGroup="rpcOperation"/>
+
+ <!--
+ <lock> operation
+ -->
+ <xs:complexType name="lockType">
+ <xs:complexContent>
+ <xs:extension base="rpcOperationType">
+ <xs:sequence>
+ <xs:element ref="target"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="lock" type="lockType"
+ substitutionGroup="rpcOperation"/>
+
+ <!--
+ <unlock> operation
+ -->
+ <xs:complexType name="unlockType">
+ <xs:complexContent>
+ <xs:extension base="rpcOperationType">
+ <xs:sequence>
+ <xs:element ref="target"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="unlock" type="unlockType"
+ substitutionGroup="rpcOperation"/>
+
+ <!--
+ <validate> operation
+ -->
+ <xs:complexType name="validateType">
+ <xs:complexContent>
+ <xs:extension base="rpcOperationType">
+ <xs:sequence>
+ <xs:element ref="source"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="validate" type="validateType"
+ substitutionGroup="rpcOperation"/>
+
+ <!--
+ <commit> operation
+ -->
+ <xs:simpleType name="confirmTimeoutType">
+ <xs:restriction base="xs:unsignedInt"/>
+ </xs:simpleType>
+ <xs:simpleType name="persistIdType">
+ <xs:restriction base="xs:string"/>
+ </xs:simpleType>
+
+ <xs:complexType name="commitType">
+ <xs:complexContent>
+ <xs:extension base="rpcOperationType">
+ <xs:sequence>
+ <xs:element name="confirmed" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="confirm-timeout" type="confirmTimeoutType"
+ minOccurs="0" maxOccurs="1"/>
+ <xs:element name="persist" minOccurs="0" maxOccurs="1"/>
+ <xs:element name="persist-id" type="persistIdType"
+ minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="commit" type="commitType"
+ substitutionGroup="rpcOperation"/>
+
+ <!--
+ <cancel-commit> operation
+ -->
+ <xs:complexType name="cancelCommitType">
+ <xs:complexContent>
+ <xs:extension base="rpcOperationType">
+ <xs:sequence>
+ <xs:element name="persist-id" type="persistIdType"
+ minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="cancel-commit" type="cancelCommitType"
+ substitutionGroup="rpcOperation"/>
+
+ <!--
+ <discard-changes> operation
+ -->
+ <xs:complexType name="discardChangesType">
+ <xs:complexContent>
+ <xs:extension base="rpcOperationType"/>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="discard-changes" type="discardChangesType"
+ substitutionGroup="rpcOperation"/>
+
+ <!--
+ <close-session> operation
+ -->
+ <xs:complexType name="closeSessionType">
+ <xs:complexContent>
+ <xs:extension base="rpcOperationType"/>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="close-session" type="closeSessionType"
+ substitutionGroup="rpcOperation"/>
+
+ <!--
+ <kill-session> operation
+ -->
+ <xs:complexType name="killSessionType">
+ <xs:complexContent>
+ <xs:extension base="rpcOperationType">
+ <xs:sequence>
+ <xs:element name="session-id" minOccurs="0" maxOccurs="1"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element name="kill-session" type="killSessionType"
+ substitutionGroup="rpcOperation"/>
+
+</xs:schema>