module ietf-netconf-nmda { | |
yang-version 1.1; | |
namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-nmda"; | |
prefix ncds; | |
import ietf-yang-types { | |
prefix yang; | |
reference | |
"RFC 6991: Common YANG Data Types"; | |
} | |
import ietf-inet-types { | |
prefix inet; | |
reference | |
"RFC 6991: Common YANG Data Types"; | |
} | |
import ietf-datastores { | |
prefix ds; | |
reference | |
"RFC 8342: Network Management Datastore Architecture | |
(NMDA)"; | |
} | |
import ietf-origin { | |
prefix or; | |
reference | |
"RFC 8342: Network Management Datastore Architecture | |
(NMDA)"; | |
} | |
import ietf-netconf { | |
prefix nc; | |
reference | |
"RFC 6241: Network Configuration Protocol (NETCONF)"; | |
} | |
import ietf-netconf-with-defaults { | |
prefix ncwd; | |
reference | |
"RFC 6243: With-defaults Capability for NETCONF"; | |
} | |
organization | |
"IETF NETCONF Working Group"; | |
contact | |
"WG Web: <https://datatracker.ietf.org/wg/netconf/> | |
WG List: <mailto:netconf@ietf.org> | |
Author: Martin Bjorklund | |
<mailto:mbj@tail-f.com> | |
Author: Juergen Schoenwaelder | |
<mailto:j.schoenwaelder@jacobs-university.de> | |
Author: Phil Shafer | |
<mailto:phil@juniper.net> | |
Author: Kent Watsen | |
<mailto:kent+ietf@watsen.net> | |
Author: Robert Wilton | |
<mailto:rwilton@cisco.com>"; | |
description | |
"This YANG module defines a set of NETCONF operations to support | |
the Network Management Datastore Architecture (NMDA). | |
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL | |
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED', | |
'MAY', and 'OPTIONAL' in this document are to be interpreted as | |
described in BCP 14 (RFC 2119) (RFC 8174) when, and only when, | |
they appear in all capitals, as shown here. | |
Copyright (c) 2019 IETF Trust and the persons identified as | |
authors of the code. All rights reserved. | |
Redistribution and use in source and binary forms, with or | |
without modification, is permitted pursuant to, and subject to | |
the license terms contained in, the Simplified BSD License set | |
forth in Section 4.c of the IETF Trust's Legal Provisions | |
Relating to IETF Documents | |
(https://trustee.ietf.org/license-info). | |
This version of this YANG module is part of RFC 8526; see | |
the RFC itself for full legal notices."; | |
revision 2019-01-07 { | |
description | |
"Initial revision."; | |
reference | |
"RFC 8526: NETCONF Extensions to Support the Network Management | |
Datastore Architecture"; | |
} | |
feature origin { | |
description | |
"Indicates that the server supports the 'origin' annotation."; | |
reference | |
"RFC 8342: Network Management Datastore Architecture (NMDA)"; | |
} | |
feature with-defaults { | |
description | |
"NETCONF :with-defaults capability. If the server advertises | |
the :with-defaults capability for a session, then this | |
feature must also be enabled for that session. Otherwise, | |
this feature must not be enabled."; | |
reference | |
"RFC 6243: With-defaults Capability for NETCONF, Section 4; and | |
RFC 8526: NETCONF Extensions to Support the Network Management | |
Datastore Architecture, Section 3.1.1.2"; | |
} | |
rpc get-data { | |
description | |
"Retrieve data from an NMDA datastore. The content returned | |
by get-data must satisfy all filters, i.e., the filter | |
criteria are logically ANDed. | |
Any ancestor nodes (including list keys) of nodes selected by | |
the filters are included in the response. | |
The 'with-origin' parameter is only valid for an operational | |
datastore. If 'with-origin' is used with an invalid | |
datastore, then the server MUST return an <rpc-error> element | |
with an <error-tag> value of 'invalid-value'. | |
The 'with-defaults' parameter only applies to the operational | |
datastore if the NETCONF :with-defaults and | |
:with-operational-defaults capabilities are both advertised. | |
If the 'with-defaults' parameter is present in a request for | |
which it is not supported, then the server MUST return an | |
<rpc-error> element with an <error-tag> value of | |
'invalid-value'."; | |
input { | |
leaf datastore { | |
type ds:datastore-ref; | |
mandatory true; | |
description | |
"Datastore from which to retrieve data. | |
If the datastore is not supported by the server, then the | |
server MUST return an <rpc-error> element with an | |
<error-tag> value of 'invalid-value'."; | |
} | |
choice filter-spec { | |
description | |
"The content filter specification for this request."; | |
anydata subtree-filter { | |
description | |
"This parameter identifies the portions of the | |
target datastore to retrieve."; | |
reference | |
"RFC 6241: Network Configuration Protocol (NETCONF), | |
Section 6"; | |
} | |
leaf xpath-filter { | |
if-feature "nc:xpath"; | |
type yang:xpath1.0; | |
description | |
"This parameter contains an XPath expression identifying | |
the portions of the target datastore to retrieve. | |
If the expression returns a node-set, all nodes in the | |
node-set are selected by the filter. Otherwise, if the | |
expression does not return a node-set, then the | |
<get-data> operation fails. | |
The expression is evaluated in the following XPath | |
context: | |
o The set of namespace declarations are those in | |
scope on the 'xpath-filter' leaf element. | |
o The set of variable bindings is empty. | |
o The function library is the core function library, | |
and the XPath functions are defined in Section 10 | |
of RFC 7950. | |
o The context node is the root node of the target | |
datastore."; | |
} | |
} | |
leaf config-filter { | |
type boolean; | |
description | |
"Filter for nodes with the given value for their 'config' | |
property. When this leaf is set to 'true', only 'config | |
true' nodes are selected, and when set to 'false', only | |
'config false' nodes are selected. If this leaf is not | |
present, no nodes are filtered."; | |
} | |
choice origin-filters { | |
when 'derived-from-or-self(datastore, "ds:operational")'; | |
if-feature "origin"; | |
description | |
"Filters configuration nodes based on the 'origin' | |
annotation. Configuration nodes that do not have an | |
'origin' annotation are treated as if they have the | |
'origin' annotation 'or:unknown'. | |
System state nodes are not affected by origin-filters and | |
thus not filtered. Note that system state nodes can be | |
filtered with the 'config-filter' leaf."; | |
leaf-list origin-filter { | |
type or:origin-ref; | |
description | |
"Filter based on the 'origin' annotation. A | |
configuration node matches the filter if its 'origin' | |
annotation is derived from or equal to any of the given | |
filter values."; | |
} | |
leaf-list negated-origin-filter { | |
type or:origin-ref; | |
description | |
"Filter based on the 'origin' annotation. A | |
configuration node matches the filter if its 'origin' | |
annotation is neither derived from nor equal to any of | |
the given filter values."; | |
} | |
} | |
leaf max-depth { | |
type union { | |
type uint16 { | |
range "1..65535"; | |
} | |
type enumeration { | |
enum unbounded { | |
description | |
"All descendant nodes are included."; | |
} | |
} | |
} | |
default "unbounded"; | |
description | |
"For each node selected by the filters, this parameter | |
selects how many conceptual subtree levels should be | |
returned in the reply. If the depth is 1, the reply | |
includes just the selected nodes but no children. If the | |
depth is 'unbounded', all descendant nodes are included."; | |
} | |
leaf with-origin { | |
when 'derived-from-or-self(../datastore, "ds:operational")'; | |
if-feature "origin"; | |
type empty; | |
description | |
"If this parameter is present, the server will return | |
the 'origin' annotation for the nodes that have one."; | |
} | |
uses ncwd:with-defaults-parameters { | |
if-feature "with-defaults"; | |
} | |
} | |
output { | |
anydata data { | |
description | |
"Copy of the source datastore subset that matched | |
the filter criteria (if any). An empty data | |
container indicates that the request did not | |
produce any results."; | |
} | |
} | |
} | |
rpc edit-data { | |
description | |
"Edit data in an NMDA datastore. | |
If an error condition occurs such that an error severity | |
<rpc-error> element is generated, the server will stop | |
processing the <edit-data> operation and restore the | |
specified configuration to its complete state at | |
the start of this <edit-data> operation."; | |
input { | |
leaf datastore { | |
type ds:datastore-ref; | |
mandatory true; | |
description | |
"Datastore that is the target of the <edit-data> operation. | |
If the target datastore is not writable, or is not | |
supported by the server, then the server MUST return an | |
<rpc-error> element with an <error-tag> value of | |
'invalid-value'."; | |
} | |
leaf default-operation { | |
type enumeration { | |
enum merge { | |
description | |
"The default operation is merge."; | |
} | |
enum replace { | |
description | |
"The default operation is replace."; | |
} | |
enum none { | |
description | |
"There is no default operation."; | |
} | |
} | |
default "merge"; | |
description | |
"The default operation to use."; | |
} | |
choice edit-content { | |
mandatory true; | |
description | |
"The content for the edit operation."; | |
anydata config { | |
description | |
"Inline config content."; | |
} | |
leaf url { | |
if-feature "nc:url"; | |
type inet:uri; | |
description | |
"URL-based config content."; | |
} | |
} | |
} | |
} | |
/* | |
* Augment the <lock> and <unlock> operations with a | |
* "datastore" parameter. | |
*/ | |
augment "/nc:lock/nc:input/nc:target/nc:config-target" { | |
description | |
"Add NMDA datastore as target."; | |
leaf datastore { | |
type ds:datastore-ref; | |
description | |
"Datastore to lock. | |
The <lock> operation is only supported on writable | |
datastores. | |
If the <lock> operation is not supported by the server on | |
the specified target datastore, then the server MUST return | |
an <rpc-error> element with an <error-tag> value of | |
'invalid-value'."; | |
} | |
} | |
augment "/nc:unlock/nc:input/nc:target/nc:config-target" { | |
description | |
"Add NMDA datastore as target."; | |
leaf datastore { | |
type ds:datastore-ref; | |
description | |
"Datastore to unlock. | |
The <unlock> operation is only supported on writable | |
datastores. | |
If the <unlock> operation is not supported by the server on | |
the specified target datastore, then the server MUST return | |
an <rpc-error> element with an <error-tag> value of | |
'invalid-value'."; | |
} | |
} | |
/* | |
* Augment the <validate> operation with a | |
* "datastore" parameter. | |
*/ | |
augment "/nc:validate/nc:input/nc:source/nc:config-source" { | |
description | |
"Add NMDA datastore as source."; | |
leaf datastore { | |
type ds:datastore-ref; | |
description | |
"Datastore to validate. | |
The <validate> operation is supported only on configuration | |
datastores. | |
If the <validate> operation is not supported by the server | |
on the specified target datastore, then the server MUST | |
return an <rpc-error> element with an <error-tag> value of | |
'invalid-value'."; | |
} | |
} | |
} |