386 lines
13 KiB
YANG
386 lines
13 KiB
YANG
|
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'.";
|
||
|
}
|
||
|
}
|
||
|
}
|