mirror of
https://github.com/Telecominfraproject/oopt-gnpy.git
synced 2025-10-29 17:22:42 +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