You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
192 lines
6.4 KiB
192 lines
6.4 KiB
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."; |
|
} |
|
} |
|
} |
|
} |
|
} |
|
}
|
|
|