mirror of
https://github.com/Telecominfraproject/oopt-gnpy.git
synced 2025-11-02 19:18:02 +00:00
YANG: import: IETF models for network topologies
These will be used by our own topology. I've obtained them from YangModels/yang@5b7ffd4e. Change-Id: I90c8e3566293f4e747865a9739a0e5ce0cafea42
This commit is contained in:
294
gnpy/yang/ext/ietf-network-topology@2018-02-26.yang
Normal file
294
gnpy/yang/ext/ietf-network-topology@2018-02-26.yang
Normal file
@@ -0,0 +1,294 @@
|
|||||||
|
module ietf-network-topology {
|
||||||
|
yang-version 1.1;
|
||||||
|
namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology";
|
||||||
|
prefix nt;
|
||||||
|
|
||||||
|
import ietf-inet-types {
|
||||||
|
prefix inet;
|
||||||
|
reference
|
||||||
|
"RFC 6991: Common YANG Data Types";
|
||||||
|
}
|
||||||
|
import ietf-network {
|
||||||
|
prefix nw;
|
||||||
|
reference
|
||||||
|
"RFC 8345: A YANG Data Model for Network Topologies";
|
||||||
|
}
|
||||||
|
|
||||||
|
organization
|
||||||
|
"IETF I2RS (Interface to the Routing System) Working Group";
|
||||||
|
|
||||||
|
contact
|
||||||
|
"WG Web: <https://datatracker.ietf.org/wg/i2rs/>
|
||||||
|
WG List: <mailto:i2rs@ietf.org>
|
||||||
|
|
||||||
|
Editor: Alexander Clemm
|
||||||
|
<mailto:ludwig@clemm.org>
|
||||||
|
|
||||||
|
Editor: Jan Medved
|
||||||
|
<mailto:jmedved@cisco.com>
|
||||||
|
|
||||||
|
Editor: Robert Varga
|
||||||
|
<mailto:robert.varga@pantheon.tech>
|
||||||
|
|
||||||
|
Editor: Nitin Bahadur
|
||||||
|
<mailto:nitin_bahadur@yahoo.com>
|
||||||
|
|
||||||
|
Editor: Hariharan Ananthakrishnan
|
||||||
|
<mailto:hari@packetdesign.com>
|
||||||
|
|
||||||
|
Editor: Xufeng Liu
|
||||||
|
<mailto:xufeng.liu.ietf@gmail.com>";
|
||||||
|
|
||||||
|
description
|
||||||
|
"This module defines a common base model for a network topology,
|
||||||
|
augmenting the base network data model with links to connect
|
||||||
|
nodes, as well as termination points to terminate links
|
||||||
|
on nodes.
|
||||||
|
|
||||||
|
Copyright (c) 2018 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 8345;
|
||||||
|
see the RFC itself for full legal notices.";
|
||||||
|
|
||||||
|
revision 2018-02-26 {
|
||||||
|
description
|
||||||
|
"Initial revision.";
|
||||||
|
reference
|
||||||
|
"RFC 8345: A YANG Data Model for Network Topologies";
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef link-id {
|
||||||
|
type inet:uri;
|
||||||
|
description
|
||||||
|
"An identifier for a link in a topology. The precise
|
||||||
|
structure of the link-id will be up to the implementation.
|
||||||
|
The identifier SHOULD be chosen such that the same link in a
|
||||||
|
real network topology will always be identified through the
|
||||||
|
same identifier, even if the data model is instantiated in
|
||||||
|
separate datastores. An implementation MAY choose to capture
|
||||||
|
semantics in the identifier -- for example, to indicate the
|
||||||
|
type of link and/or the type of topology of which the link is
|
||||||
|
a part.";
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef tp-id {
|
||||||
|
type inet:uri;
|
||||||
|
description
|
||||||
|
"An identifier for termination points on a node. The precise
|
||||||
|
structure of the tp-id will be up to the implementation.
|
||||||
|
The identifier SHOULD be chosen such that the same termination
|
||||||
|
point in a real network topology will always be identified
|
||||||
|
through the same identifier, even if the data model is
|
||||||
|
instantiated in separate datastores. An implementation MAY
|
||||||
|
choose to capture semantics in the identifier -- for example,
|
||||||
|
to indicate the type of termination point and/or the type of
|
||||||
|
node that contains the termination point.";
|
||||||
|
}
|
||||||
|
|
||||||
|
grouping link-ref {
|
||||||
|
description
|
||||||
|
"This grouping can be used to reference a link in a specific
|
||||||
|
network. Although it is not used in this module, it is
|
||||||
|
defined here for the convenience of augmenting modules.";
|
||||||
|
leaf link-ref {
|
||||||
|
type leafref {
|
||||||
|
path "/nw:networks/nw:network[nw:network-id=current()/../"+
|
||||||
|
"network-ref]/nt:link/nt:link-id";
|
||||||
|
require-instance false;
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"A type for an absolute reference to a link instance.
|
||||||
|
(This type should not be used for relative references.
|
||||||
|
In such a case, a relative path should be used instead.)";
|
||||||
|
}
|
||||||
|
uses nw:network-ref;
|
||||||
|
}
|
||||||
|
|
||||||
|
grouping tp-ref {
|
||||||
|
description
|
||||||
|
"This grouping can be used to reference a termination point
|
||||||
|
in a specific node. Although it is not used in this module,
|
||||||
|
it is defined here for the convenience of augmenting
|
||||||
|
modules.";
|
||||||
|
leaf tp-ref {
|
||||||
|
type leafref {
|
||||||
|
path "/nw:networks/nw:network[nw:network-id=current()/../"+
|
||||||
|
"network-ref]/nw:node[nw:node-id=current()/../"+
|
||||||
|
"node-ref]/nt:termination-point/nt:tp-id";
|
||||||
|
require-instance false;
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"A type for an absolute reference to a termination point.
|
||||||
|
(This type should not be used for relative references.
|
||||||
|
In such a case, a relative path should be used instead.)";
|
||||||
|
}
|
||||||
|
uses nw:node-ref;
|
||||||
|
}
|
||||||
|
|
||||||
|
augment "/nw:networks/nw:network" {
|
||||||
|
description
|
||||||
|
"Add links to the network data model.";
|
||||||
|
list link {
|
||||||
|
key "link-id";
|
||||||
|
description
|
||||||
|
"A network link connects a local (source) node and
|
||||||
|
a remote (destination) node via a set of the respective
|
||||||
|
node's termination points. It is possible to have several
|
||||||
|
links between the same source and destination nodes.
|
||||||
|
Likewise, a link could potentially be re-homed between
|
||||||
|
termination points. Therefore, in order to ensure that we
|
||||||
|
would always know to distinguish between links, every link
|
||||||
|
is identified by a dedicated link identifier. Note that a
|
||||||
|
link models a point-to-point link, not a multipoint link.";
|
||||||
|
leaf link-id {
|
||||||
|
type link-id;
|
||||||
|
description
|
||||||
|
"The identifier of a link in the topology.
|
||||||
|
A link is specific to a topology to which it belongs.";
|
||||||
|
}
|
||||||
|
container source {
|
||||||
|
description
|
||||||
|
"This container holds the logical source of a particular
|
||||||
|
link.";
|
||||||
|
leaf source-node {
|
||||||
|
type leafref {
|
||||||
|
path "../../../nw:node/nw:node-id";
|
||||||
|
require-instance false;
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"Source node identifier. Must be in the same topology.";
|
||||||
|
}
|
||||||
|
leaf source-tp {
|
||||||
|
type leafref {
|
||||||
|
path "../../../nw:node[nw:node-id=current()/../"+
|
||||||
|
"source-node]/termination-point/tp-id";
|
||||||
|
require-instance false;
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"This termination point is located within the source node
|
||||||
|
and terminates the link.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
container destination {
|
||||||
|
description
|
||||||
|
"This container holds the logical destination of a
|
||||||
|
particular link.";
|
||||||
|
leaf dest-node {
|
||||||
|
type leafref {
|
||||||
|
path "../../../nw:node/nw:node-id";
|
||||||
|
require-instance false;
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"Destination node identifier. Must be in the same
|
||||||
|
network.";
|
||||||
|
}
|
||||||
|
leaf dest-tp {
|
||||||
|
type leafref {
|
||||||
|
path "../../../nw:node[nw:node-id=current()/../"+
|
||||||
|
"dest-node]/termination-point/tp-id";
|
||||||
|
require-instance false;
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"This termination point is located within the
|
||||||
|
destination node and terminates the link.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
list supporting-link {
|
||||||
|
key "network-ref link-ref";
|
||||||
|
description
|
||||||
|
"Identifies the link or links on which this link depends.";
|
||||||
|
leaf network-ref {
|
||||||
|
type leafref {
|
||||||
|
path "../../../nw:supporting-network/nw:network-ref";
|
||||||
|
require-instance false;
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"This leaf identifies in which underlay topology
|
||||||
|
the supporting link is present.";
|
||||||
|
}
|
||||||
|
|
||||||
|
leaf link-ref {
|
||||||
|
type leafref {
|
||||||
|
path "/nw:networks/nw:network[nw:network-id=current()/"+
|
||||||
|
"../network-ref]/link/link-id";
|
||||||
|
require-instance false;
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"This leaf identifies a link that is a part
|
||||||
|
of this link's underlay. Reference loops in which
|
||||||
|
a link identifies itself as its underlay, either
|
||||||
|
directly or transitively, are not allowed.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
augment "/nw:networks/nw:network/nw:node" {
|
||||||
|
description
|
||||||
|
"Augments termination points that terminate links.
|
||||||
|
Termination points can ultimately be mapped to interfaces.";
|
||||||
|
list termination-point {
|
||||||
|
key "tp-id";
|
||||||
|
description
|
||||||
|
"A termination point can terminate a link.
|
||||||
|
Depending on the type of topology, a termination point
|
||||||
|
could, for example, refer to a port or an interface.";
|
||||||
|
leaf tp-id {
|
||||||
|
type tp-id;
|
||||||
|
description
|
||||||
|
"Termination point identifier.";
|
||||||
|
}
|
||||||
|
list supporting-termination-point {
|
||||||
|
key "network-ref node-ref tp-ref";
|
||||||
|
description
|
||||||
|
"This list identifies any termination points on which a
|
||||||
|
given termination point depends or onto which it maps.
|
||||||
|
Those termination points will themselves be contained
|
||||||
|
in a supporting node. This dependency information can be
|
||||||
|
inferred from the dependencies between links. Therefore,
|
||||||
|
this item is not separately configurable. Hence, no
|
||||||
|
corresponding constraint needs to be articulated.
|
||||||
|
The corresponding information is simply provided by the
|
||||||
|
implementing system.";
|
||||||
|
|
||||||
|
leaf network-ref {
|
||||||
|
type leafref {
|
||||||
|
path "../../../nw:supporting-node/nw:network-ref";
|
||||||
|
require-instance false;
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"This leaf identifies in which topology the
|
||||||
|
supporting termination point is present.";
|
||||||
|
}
|
||||||
|
leaf node-ref {
|
||||||
|
type leafref {
|
||||||
|
path "../../../nw:supporting-node/nw:node-ref";
|
||||||
|
require-instance false;
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"This leaf identifies in which node the supporting
|
||||||
|
termination point is present.";
|
||||||
|
}
|
||||||
|
leaf tp-ref {
|
||||||
|
type leafref {
|
||||||
|
path "/nw:networks/nw:network[nw:network-id=current()/"+
|
||||||
|
"../network-ref]/nw:node[nw:node-id=current()/../"+
|
||||||
|
"node-ref]/termination-point/tp-id";
|
||||||
|
require-instance false;
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"Reference to the underlay node (the underlay node must
|
||||||
|
be in a different topology).";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
192
gnpy/yang/ext/ietf-network@2018-02-26.yang
Normal file
192
gnpy/yang/ext/ietf-network@2018-02-26.yang
Normal file
@@ -0,0 +1,192 @@
|
|||||||
|
module ietf-network {
|
||||||
|
yang-version 1.1;
|
||||||
|
namespace "urn:ietf:params:xml:ns:yang:ietf-network";
|
||||||
|
prefix nw;
|
||||||
|
|
||||||
|
import ietf-inet-types {
|
||||||
|
prefix inet;
|
||||||
|
reference
|
||||||
|
"RFC 6991: Common YANG Data Types";
|
||||||
|
}
|
||||||
|
|
||||||
|
organization
|
||||||
|
"IETF I2RS (Interface to the Routing System) Working Group";
|
||||||
|
|
||||||
|
contact
|
||||||
|
"WG Web: <https://datatracker.ietf.org/wg/i2rs/>
|
||||||
|
WG List: <mailto:i2rs@ietf.org>
|
||||||
|
|
||||||
|
Editor: Alexander Clemm
|
||||||
|
<mailto:ludwig@clemm.org>
|
||||||
|
|
||||||
|
Editor: Jan Medved
|
||||||
|
<mailto:jmedved@cisco.com>
|
||||||
|
|
||||||
|
Editor: Robert Varga
|
||||||
|
<mailto:robert.varga@pantheon.tech>
|
||||||
|
|
||||||
|
Editor: Nitin Bahadur
|
||||||
|
<mailto:nitin_bahadur@yahoo.com>
|
||||||
|
|
||||||
|
Editor: Hariharan Ananthakrishnan
|
||||||
|
<mailto:hari@packetdesign.com>
|
||||||
|
|
||||||
|
Editor: Xufeng Liu
|
||||||
|
<mailto:xufeng.liu.ietf@gmail.com>";
|
||||||
|
description
|
||||||
|
"This module defines a common base data model for a collection
|
||||||
|
of nodes in a network. Node definitions are further used
|
||||||
|
in network topologies and inventories.
|
||||||
|
|
||||||
|
Copyright (c) 2018 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 8345;
|
||||||
|
see the RFC itself for full legal notices.";
|
||||||
|
|
||||||
|
revision 2018-02-26 {
|
||||||
|
description
|
||||||
|
"Initial revision.";
|
||||||
|
reference
|
||||||
|
"RFC 8345: A YANG Data Model for Network Topologies";
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef node-id {
|
||||||
|
type inet:uri;
|
||||||
|
description
|
||||||
|
"Identifier for a node. The precise structure of the node-id
|
||||||
|
will be up to the implementation. For example, some
|
||||||
|
implementations MAY pick a URI that includes the network-id
|
||||||
|
as part of the path. The identifier SHOULD be chosen
|
||||||
|
such that the same node in a real network topology will
|
||||||
|
always be identified through the same identifier, even if
|
||||||
|
the data model is instantiated in separate datastores. An
|
||||||
|
implementation MAY choose to capture semantics in the
|
||||||
|
identifier -- for example, to indicate the type of node.";
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef network-id {
|
||||||
|
type inet:uri;
|
||||||
|
description
|
||||||
|
"Identifier for a network. The precise structure of the
|
||||||
|
network-id will be up to the implementation. The identifier
|
||||||
|
SHOULD be chosen such that the same network will always be
|
||||||
|
identified through the same identifier, even if the data model
|
||||||
|
is instantiated in separate datastores. An implementation MAY
|
||||||
|
choose to capture semantics in the identifier -- for example,
|
||||||
|
to indicate the type of network.";
|
||||||
|
}
|
||||||
|
|
||||||
|
grouping network-ref {
|
||||||
|
description
|
||||||
|
"Contains the information necessary to reference a network --
|
||||||
|
for example, an underlay network.";
|
||||||
|
leaf network-ref {
|
||||||
|
type leafref {
|
||||||
|
path "/nw:networks/nw:network/nw:network-id";
|
||||||
|
require-instance false;
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"Used to reference a network -- for example, an underlay
|
||||||
|
network.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
grouping node-ref {
|
||||||
|
description
|
||||||
|
"Contains the information necessary to reference a node.";
|
||||||
|
leaf node-ref {
|
||||||
|
type leafref {
|
||||||
|
path "/nw:networks/nw:network[nw:network-id=current()/../"+
|
||||||
|
"network-ref]/nw:node/nw:node-id";
|
||||||
|
require-instance false;
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"Used to reference a node.
|
||||||
|
Nodes are identified relative to the network that
|
||||||
|
contains them.";
|
||||||
|
}
|
||||||
|
uses network-ref;
|
||||||
|
}
|
||||||
|
|
||||||
|
container networks {
|
||||||
|
description
|
||||||
|
"Serves as a top-level container for a list of networks.";
|
||||||
|
list network {
|
||||||
|
key "network-id";
|
||||||
|
description
|
||||||
|
"Describes a network.
|
||||||
|
A network typically contains an inventory of nodes,
|
||||||
|
topological information (augmented through the
|
||||||
|
network-topology data model), and layering information.";
|
||||||
|
leaf network-id {
|
||||||
|
type network-id;
|
||||||
|
description
|
||||||
|
"Identifies a network.";
|
||||||
|
}
|
||||||
|
container network-types {
|
||||||
|
description
|
||||||
|
"Serves as an augmentation target.
|
||||||
|
The network type is indicated through corresponding
|
||||||
|
presence containers augmented into this container.";
|
||||||
|
}
|
||||||
|
list supporting-network {
|
||||||
|
key "network-ref";
|
||||||
|
description
|
||||||
|
"An underlay network, used to represent layered network
|
||||||
|
topologies.";
|
||||||
|
leaf network-ref {
|
||||||
|
type leafref {
|
||||||
|
path "/nw:networks/nw:network/nw:network-id";
|
||||||
|
require-instance false;
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"References the underlay network.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
list node {
|
||||||
|
key "node-id";
|
||||||
|
description
|
||||||
|
"The inventory of nodes of this network.";
|
||||||
|
leaf node-id {
|
||||||
|
type node-id;
|
||||||
|
description
|
||||||
|
"Uniquely identifies a node within the containing
|
||||||
|
network.";
|
||||||
|
}
|
||||||
|
list supporting-node {
|
||||||
|
key "network-ref node-ref";
|
||||||
|
description
|
||||||
|
"Represents another node that is in an underlay network
|
||||||
|
and that supports this node. Used to represent layering
|
||||||
|
structure.";
|
||||||
|
leaf network-ref {
|
||||||
|
type leafref {
|
||||||
|
path "../../../nw:supporting-network/nw:network-ref";
|
||||||
|
require-instance false;
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"References the underlay network of which the
|
||||||
|
underlay node is a part.";
|
||||||
|
}
|
||||||
|
leaf node-ref {
|
||||||
|
type leafref {
|
||||||
|
path "/nw:networks/nw:network/nw:node/nw:node-id";
|
||||||
|
require-instance false;
|
||||||
|
}
|
||||||
|
description
|
||||||
|
"References the underlay node itself.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user