*.log
.cache
+
+models/plugins/yang/ietf-l2-topology.yang
+models/plugins/yang/ietf-network-topology.yang
+models/plugins/yang/ietf-network.yang
+models/plugins/yang/mano-rift-groupings.yang
+models/plugins/yang/mano-types.yang
+models/plugins/yang/nsd-base.yang
+models/plugins/yang/nsd.yang
+models/plugins/yang/nsr.yang
+models/plugins/yang/odl-network-topology.yang
+models/plugins/yang/project-nsd.yang
+models/plugins/yang/project-vnfd.yang
+models/plugins/yang/vlr.yang
+models/plugins/yang/vnfd-base.yang
+models/plugins/yang/vnfd.yang
+models/plugins/yang/vnffgd.yang
+models/plugins/yang/vnfr.yang
sudo mkdir -p /usr/rift/etc/default
sudo chmod 777 /usr/rift/etc/default
echo LAUNCHPAD_OPTIONS="--use-xml-mode" >> /usr/rift/etc/default/launchpad
- sudo systemctl daemon-reload
+ sudo systemctl daemon-reload || true
+
+ IM_FILES="
+ietf-l2-topology.yang
+ietf-network-topology.yang
+ietf-network.yang
+mano-rift-groupings.yang
+mano-types.yang
+nsd-base.yang
+nsd.yang
+nsr.yang
+odl-network-topology.yang
+project-nsd.yang
+project-vnfd.yang
+vlr.yang
+vnfd-base.yang
+vnfd.yang
+vnffgd.yang
+vnfr.yang
+"
+ echo "installing IM files"
+ if [ ! -d ../IM ]; then
+ echo cloning IM
+ # note that this cannot be inside the SO or else CMAKE will find it
+ git clone $(dirname $(git remote get-url origin))/IM.git ../IM
+ fi
+ for file in $IM_FILES; do
+ rm -f models/plugins/yang/$file
+ cp ../IM/models/yang/$file models/plugins/yang
+ done
# Build and install module
make -j16
#!/bin/sh
rm -rf .build
+IM_FILES="
+ietf-l2-topology.yang
+ietf-network-topology.yang
+ietf-network.yang
+mano-rift-groupings.yang
+mano-types.yang
+nsd-base.yang
+nsd.yang
+nsr.yang
+odl-network-topology.yang
+project-nsd.yang
+project-vnfd.yang
+vlr.yang
+vnfd-base.yang
+vnfd.yang
+vnffgd.yang
+vnfr.yang
+"
+echo "installing IM files"
+# note that this cannot be inside the SO or else CMAKE will find it
+tmp=$(mktemp -d)
+git clone $(dirname $(git remote get-url origin))/IM.git $tmp
+for file in $IM_FILES; do
+ rm -f models/plugins/yang/$file
+ cp $tmp/models/yang/$file models/plugins/yang
+done
+rm -rf $tmp
make NOT_DEVELOPER_BUILD=TRUE -j16 package
+++ /dev/null
-
-/*
- * NO RW COPYRIGHT
- *
- */
-
-module ietf-l2-topology {
- yang-version 1;
- namespace "urn:ietf:params:xml:ns:yang:ietf-l2-topology";
- prefix "l2t";
-
- import ietf-network {
- prefix "nw";
- }
-
- import ietf-network-topology {
- prefix "nt";
- }
-
- import ietf-inet-types {
- prefix "inet";
- }
-
- import ietf-yang-types {
- prefix "yang";
- }
-
- organization "TBD";
- contact "I-D Editor: jie.dong@huawei.com";
-
- description
- "This module defines a basic model for
- the layer-2 topology of a network";
-
- revision "2015-06-23" {
- description "Initial revision";
- reference "draft-ietf-i2rs-l2-network-topology-01";
- }
-
- /*
- * Typedefs
- */
-
- typedef vlan {
- type uint16 {
- range "0..4095";
- }
- description "VLAN ID";
- }
-
- typedef trill-nickname {
- type uint16;
- description "TRILL Nickname";
- }
-
- typedef flag-type {
- type identityref {
- base "flag-identity";
- }
- description "Base type for flags";
- }
-
- typedef l2-network-event-type {
- type enumeration {
- enum "add" {
- value 0;
- description "An L2 node or link or termination-point
- has been added";
- }
- enum "remove" {
- value 1;
- description "An L2 node or link or termination-point
- has been removed";
- }
- enum "update" {
- value 2;
- description "An L2 node or link or termination-point
- has been updated";
- }
- }
- description "l2 network event type for notifications";
- } // l2-topology-event-type
-
-
- /*
- * Features
- */
-
- feature VLAN {
- description
- "Indicates that the system supports the
- vlan functions";
- }
-
- feature QinQ {
- description
- "Indicates that the system supports the
- qinq functions";
- }
-
- feature PBB {
- description
- "Indicates that the device supports the
- provider-backbone-bridging functions";
- }
-
- feature VPLS {
- description
- "Indicates that the device supports the
- VPLS functions";
- reference "RFC 4761, RFC 4762";
- }
-
- feature TRILL {
- description
- "Indicates that the device supports the
- TRILL functions";
- reference "RFC 6325";
- }
-
- feature VXLAN {
- description
- "Indicates that the device supports the
- VXLAN functions";
- reference "RFC 7348";
- }
-
- /*
- * Identities
- */
- identity flag-identity {
- description "Base type for flags";
- }
-
- identity encapsulation-type {
- description
- "Base identity from which specific encapsulation
- types are derived.";
- }
-
- identity eth-encapsulation-type {
- base encapsulation-type;
- description
- "Base identity from which specific ethernet
- encapsulation types are derived.";
-
- }
-
- identity ethernet {
- base eth-encapsulation-type;
- description
- "native ethernet encapsulation";
- }
-
- identity vlan {
- base eth-encapsulation-type;
- description
- "vlan encapsulation";
- }
-
- identity qinq {
- base eth-encapsulation-type;
- description
- "qinq encapsulation";
- }
-
- identity pbb {
- base eth-encapsulation-type;
- description
- "pbb encapsulation";
- }
-
- identity trill {
- base eth-encapsulation-type;
- description
- "trill encapsulation";
- }
-
- identity vpls {
- base eth-encapsulation-type;
- description
- "vpls encapsulation";
- }
-
- identity vxlan {
- base eth-encapsulation-type;
- description
- "vxlan encapsulation";
- }
-
- identity frame-relay {
- base encapsulation-type;
- description
- "Frame Relay encapsulation";
- }
-
- identity ppp {
- base encapsulation-type;
- description
- "PPP encapsulation";
- }
-
- identity hdlc {
- base encapsulation-type;
- description
- "HDLC encapsulation";
- }
-
- identity atm {
- base encapsulation-type;
- description
- "Base identity from which specific ATM
- encapsulation types are derived.";
-
- }
-
- identity pwe3 {
- base encapsulation-type;
- description
- "Base identity from which specific pw
- encapsulation types are derived.";
- }
-
-
- /*
- * Groupings
- */
-
-
- grouping l2-network-type {
- description "Identify the topology type to be L2.";
- container l2-network {
- presence "indicates L2 Network";
- description
- "The presence of the container node indicates
- L2 Topology";
- }
- }
-
- grouping l2-network-attributes {
- description "L2 Topology scope attributes";
- container l2-network-attributes {
- description "Containing L2 network attributes";
- leaf name {
- type string;
- description "Name of the L2 network";
- }
-
- leaf-list flag {
- type flag-type;
- description "L2 network flags";
- }
- }
- }
-
- grouping l2-node-attributes {
- description "L2 node attributes";
- container l2-node-attributes {
- description "Containing L2 node attributes";
- leaf name {
- type string;
- description "Node name";
- }
- leaf description {
- type string;
- description "Node description";
- }
- leaf-list management-address {
- type inet:ip-address;
- description "System management address";
- }
- leaf management-vid {
- if-feature VLAN;
- type vlan;
- description "System management VID";
- }
- leaf-list nick-name {
- if-feature TRILL;
- type trill-nickname;
- description "Nickname of the RBridge";
- }
- leaf-list flag {
- type flag-type;
- description "Node operational flags";
- }
- }
- } // grouping l2-node-attributes
-
-
- grouping l2-link-attributes {
- description "L2 link attributes";
- container l2-link-attributes {
- description "Containing L2 link attributes";
- leaf name {
- type string;
- description "Link name";
- }
- leaf-list flag {
- type flag-type;
- description "Link flags";
- }
- leaf rate {
- type decimal64 {
- fraction-digits 2;
- }
- description "Link rate";
-
- }
- leaf delay {
- type uint32;
- description "Link delay in microseconds";
- }
- leaf-list srlg {
- type uint32;
- description
- "List of Shared Risk Link Groups
- this link belongs to.";
- }
- }
- } // grouping l2-link-attributes
-
- grouping l2-termination-point-attributes {
- description "L2 termination point attributes";
- container l2-termination-point-attributes {
- description "Containing L2 TP attributes";
- leaf description {
- type string;
- description "Port description";
- }
-
- leaf maximum-frame-size {
- type uint32;
- description "Maximum frame size";
- }
-
- choice l2-termination-point-type {
- description
- "Indicates termination-point type
- specific attributes";
- case ethernet {
- leaf mac-address {
- type yang:mac-address;
- description "Interface MAC address";
- }
-
- leaf eth-encapsulation {
- type identityref {
- base eth-encapsulation-type;
- }
- description
- "Encapsulation type of this
- ternimation point.";
- }
-
- leaf port-vlan-id {
- if-feature VLAN;
- type vlan;
- description "Port VLAN ID";
- }
-
- list vlan-id-name {
- if-feature VLAN;
- key "vlan-id";
- description "Interface configured VLANs";
- leaf vlan-id {
- type vlan;
- description "VLAN ID";
- }
- leaf vlan-name {
- type string;
- description "VLAN Name";
- }
- }
- } //case ethernet
-
- case legacy {
- leaf encapsulation {
- type identityref {
- base encapsulation-type;
- }
- description
- "Encapsulation type of this termination point.";
- }
- } //case legacy
-
- } //choice termination-point-type
-
- leaf tp-state {
- type enumeration {
- enum in-use {
- value 0;
- description
- "the termination point is in forwarding state";
- }
- enum blocking {
- value 1;
- description
- "the termination point is in blocking state";
- }
- enum down {
- value 2;
- description
- "the termination point is in down state";
- }
- enum others {
- value 3;
- description
- "the termination point is in other state";
- }
- }
- config false;
- description "State of the termination point";
- }
- }
- } // grouping l2-termination-point-attributes
-
-/*** grouping of network/node/link/tp leaf-refs ***/
-
- grouping network-ref {
- description
- "Grouping for an absolute reference to a network topology
- instance.";
- leaf network-ref {
- type leafref {
- path "/nw:network/nw:network-id";
- }
- description
- "An absolute reference to a network topology instance.";
- }
- }
-
- grouping link-ref {
- description
- "Grouping for an absolute reference to a link instance.";
- uses network-ref;
- leaf link-ref {
- type leafref {
- path "/nw:network"
- +"[nw:network-id = current()/../network-ref]"
- +"/nt:link/nt:link-id";
- }
- description
- "An absolute reference to a link instance.";
- }
- }
-
- grouping node-ref {
- description
- "Grouping for an absolute reference to a node instance.";
- uses network-ref;
- leaf node-ref {
- type leafref {
- path "/nw:network"
- +"[nw:network-id = current()/../network-ref]"
- +"/nw:node/nw:node-id";
- }
- description
- "An absolute reference to a node instance.";
- }
- }
-
- grouping tp-ref {
- description
- "Grouping for an absolute reference to a termination point.";
- uses node-ref;
- leaf tp-ref {
- type leafref {
- path "/nw:network"
- +"[nw:network-id = current()/../network-ref]"
- +"/nw:node[nw:node-id = current()/../node-ref]"
- +"/nt:termination-point/nt:tp-id";
- }
- description
- "Grouping for an absolute reference to a TP.";
- }
- }
-
-
- /*
- * Data nodes
- */
- augment "/nw:network/nw:network-types" {
- description
- "Introduce new network type for L2 topology";
- uses l2-network-type;
- }
-
- augment "/nw:network" {
- /* RIFT-Change: when not to be used yet
- when "nw:network-types/l2-network" {
- description
- "Augmentation parameters apply only for networks
- with L2 topology";
- }
- */
- description
- "Configuration parameters for the L2 network
- as a whole";
- uses l2-network-attributes;
- }
-
- augment "/nw:network/nw:node" {
- /* RIFT-Change: when not to be used yet
- when "../nw:network-types/l2-network" {
- description
- "Augmentation parameters apply only for networks
- with L2 topology";
- }
- */
- description
- "Configuration parameters for L2 at the node
- level";
- uses l2-node-attributes;
- }
-
- augment "/nw:network/nt:link" {
- /* RIFT-Change: when not to be used yet
- when "/nw:network/nw:network-types/l2-network" {
- description
- "Augmentation parameters apply only for networks
- with L2 topology";
- }
- */
- description "Augment L2 topology link information";
- uses l2-link-attributes;
- }
-
- augment "/nw:network/nw:node/nt:termination-point" {
- /* RIFT-Change: when not to be used yet
- when "/nw:network/nw:network-types/l2-network" {
- description
- "Augmentation parameters apply only for networks
- with L2 topology";
- }
- */
- description
- "Augment L2 topology termination point configuration";
- uses l2-termination-point-attributes;
- }
-
- /*
- * Notifications
- */
-
- notification l2-node-event {
- description "Notification event for L2 node";
- leaf event-type {
- type l2-network-event-type;
- description "Event type";
- }
- uses node-ref;
- uses l2-network-type;
- uses l2-node-attributes;
- }
-
- notification l2-link-event {
- description "Notification event for L2 link";
- leaf event-type {
- type l2-network-event-type;
- description "Event type";
- }
- uses link-ref;
- uses l2-network-type;
- uses l2-link-attributes;
- }
-
- notification l2-termination-point-event {
- description "Notification event for L2 termination point";
- leaf event-type {
- type l2-network-event-type;
- description "Event type";
- }
- uses tp-ref;
- uses l2-network-type;
- uses l2-termination-point-attributes;
- }
-
-} // module l2-topology
+++ /dev/null
-
-/*
- * NO RW COPYRIGHT
- *
- */
-
-module ietf-network-topology {
- yang-version 1;
- namespace "urn:ietf:params:xml:ns:yang:ietf-network-topology";
- prefix lnk;
-
- import ietf-inet-types {
- prefix inet;
- }
- import ietf-network {
- prefix nd;
- }
-
- organization "TBD";
- contact
- "WILL-BE-DEFINED-LATER";
- description
- "This module defines a common base model for network topology,
- augmenting the base network model with links to connect nodes,
- as well as termination points to terminate links on nodes.";
-
- revision 2015-06-08 {
- description
- "Initial revision.";
- reference "draft-ietf-i2rs-yang-network-topo-01";
- }
-
- typedef link-id {
- type inet:uri;
- description
- "An identifier for a link in a topology.
- The identifier may be opaque.
- 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 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 that the link is a part
- of.";
- }
-
- typedef tp-id {
- type inet:uri;
- description
- "An identifier for termination points on a node.
- The identifier may be opaque.
- The identifier SHOULD be chosen such that the same TP in a
- real network topology will always be identified through the
- same identifier, even if the model is instantiated in
- separate datastores. An implementation MAY choose to capture
- semantics in the identifier, for example to indicate the type
- of TP and/or the type of node and topology that the TP is a
- part of.";
- }
-
- grouping link-ref {
- description
- "References a link in a specific network.";
- leaf link-ref {
- type leafref {
- path "/nd:network[nd:network-id=current()/../"+
- "nd:network-ref]/link/link-id";
- }
- description
- "A type for an absolute reference a link instance.
- (This type should not be used for relative references.
- In such a case, a relative path should be used instead.)";
- }
- uses nd:network-ref;
- }
-
- grouping tp-ref {
- description
- "References a termination point in a specific node.";
- leaf tp-ref {
- type leafref {
- path "/nd:network[nd:network-id=current()/../"+
- "nd:network-ref]/nd:node[nd:node-id=current()/../"+
- "nd:node-ref]/termination-point/tp-id";
- }
- 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 nd:node-ref;
- }
-
- augment "/nd:network" {
- description
- "Add links to the network model.";
- list link {
- key "link-id";
-
- description
- "A Network Link connects a by Local (Source) node and
- a Remote (Destination) Network Nodes via a set of the
- nodes' termination points.
- As it is possible to have several links between the same
- source and destination nodes, and as a link could
- potentially be re-homed between termination points, 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.
- Layering dependencies on links in underlay topologies are
- not represented as the layering information of nodes and of
- termination points is sufficient.";
- container source {
- description
- "This container holds the logical source of a particular
- link.";
- leaf source-node {
- type leafref {
- // RIFT change:
- path "../../../../nd:network/nd:node/nd:node-id";
- }
- mandatory true;
- description
- "Source node identifier, must be in same topology.";
- }
- leaf source-tp {
- type leafref {
- // RIFT change:
- path "../../../../nd:network/nd:node[nd:node-id=current()/../"+
- "source-node]/termination-point/tp-id";
- }
- description
- "Termination point within source node that terminates
- the link.";
- }
- }
- container destination {
- description
- "This container holds the logical destination of a
- particular link.";
- leaf dest-node {
- type leafref {
- // RIFT change
- path "../../../../nd:network/nd:node/nd:node-id";
- }
- mandatory true;
- description
- "Destination node identifier, must be in the same
- network.";
- }
- leaf dest-tp {
- type leafref {
- // RIFT change:
- path "../../../../nd:network/nd:node[nd:node-id=current()/../"+
- "dest-node]/termination-point/tp-id";
- }
- description
- "Termination point within destination node that
- terminates the 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.";
- }
- list supporting-link {
- key "network-ref link-ref";
- description
- "Identifies the link, or links, that this link
- is dependent on.";
- leaf network-ref {
- type leafref {
- // RIFT change:
- path "../../../../nd:network/nd:supporting-network/nd:network-ref";
- }
- description
- "This leaf identifies in which underlay topology
- supporting link is present.";
- }
- leaf link-ref {
- type leafref {
- path "/nd:network[nd:network-id=current()/.."+
- "/network-ref]/link/link-id";
- }
- description
- "This leaf identifies a link which 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 "/nd:network/nd:node" {
- description
- "Augment termination points which 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
- "The leaf list identifies any termination points that
- the termination point is dependent on, or maps onto.
- Those termination points will themselves be contained
- in a supporting node.
- This dependency information can be inferred from
- the dependencies between links. For this reason,
- 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 {
- // RIFT change:
- path "/nd:network/nd:node/nd:supporting-node/nd:network-ref";
- }
- description
- "This leaf identifies in which topology the
- supporting termination point is present.";
- }
- leaf node-ref {
- type leafref {
- // RIFT change:
- path "/nd:network/nd:node/nd:supporting-node/nd:node-ref";
- }
- description
- "This leaf identifies in which node the supporting
- termination point is present.";
- }
- leaf tp-ref {
- type leafref {
- path "/nd:network[nd:network-id=current()/../"+
- "network-ref]/nd:node[nd:node-id=current()/../"+
- "node-ref]/termination-point/tp-id";
- }
- description
- "Reference to the underlay node, must be in a
- different topology";
- }
- }
- }
- }
-}
+++ /dev/null
-
-/*
- * NO RW COPYRIGHT
- *
- */
-
-module ietf-network {
- yang-version 1;
- namespace "urn:ietf:params:xml:ns:yang:ietf-network";
- prefix nd;
-
- import ietf-inet-types {
- prefix inet;
- }
-
- organization "TBD";
- contact
- "WILL-BE-DEFINED-LATER";
- description
- "This module defines a common base model for a collection
- of nodes in a network. Node definitions s are further used
- in network topologies and inventories.";
-
- revision 2015-06-08 {
- description
- "Initial revision.";
- reference "draft-ietf-i2rs-yang-network-topo-01";
- }
-
- typedef node-id {
- type inet:uri;
- description
- "Identifier for a node.";
- }
-
- typedef network-id {
- type inet:uri;
- description
- "Identifier for a network.";
- }
-
- grouping network-ref {
- description
- "Contains the information necessary to reference a network,
- for example an underlay network.";
- leaf network-ref {
- type leafref {
- path "/network/network-id";
- }
- 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 "/network[network-id=current()/../network-ref]"+
- "/node/node-id";
- }
- description
- "Used to reference a node.
- Nodes are identified relative to the network they are
- contained in.";
- }
- uses network-ref;
- }
-
- list network {
- config false;
- key "network-id";
- description
- "Describes a network.
- A network typically contains an inventory of nodes,
- topological information (augmented through
- network-topology model), as well as layering
- information.";
- container network-types {
- description
- "Serves as an augmentation target.
- The network type is indicated through corresponding
- presence containers augmented into this container.";
- }
- leaf network-id {
- type network-id;
- description
- "Identifies a network.";
- }
- leaf server-provided {
- type boolean;
- config false;
- description
- "Indicates whether the information concerning this
- particular network is populated by the server
- (server-provided true, the general case for network
- information discovered from the server),
- or whether it is configured by a client
- (server-provided true, possible e.g. for
- service overlays managed through a controller).";
- }
- list supporting-network {
- key "network-ref";
- description
- "An underlay network, used to represent layered network
- topologies.";
-
- leaf network-ref {
- type leafref {
- path "/network/network-id";
- }
- 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
- "Identifies a node uniquely within the containing
- network.";
- }
- list supporting-node {
- key "network-ref node-ref";
- description
- "Represents another node, in an underlay network, that
- this node is supported by. Used to represent layering
- structure.";
- leaf network-ref {
- type leafref {
- path "../../../supporting-network/network-ref";
- }
- description
- "References the underlay network that the
- underlay node is part of.";
- }
- leaf node-ref {
- type leafref {
- path "/network/node/node-id";
- }
- description
- "References the underlay node itself.";
- }
- }
- }
- }
-}
-
+++ /dev/null
-/*
- *
- * Copyright 2016-2017 RIFT.IO Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- *
- */
-
- module mano-rift-groupings
-{
- namespace "urn:ietf:params:xml:ns:yang:nfvo:mano-rift-groupings";
- prefix "mano-rift";
-
- import mano-types {
- prefix "manotypes";
- }
-
- grouping custom-meta-data {
- description "Grouping for instance-specific meta data";
- list custom-meta-data {
- description
- "List of meta-data to be associated with the instance";
- key "name";
- leaf name {
- description "Name of the meta-data parameter";
- type string;
- }
-
- leaf data-type {
- description "Data-type the meta-data parameter";
- type manotypes:meta-data-type;
- default "STRING";
- }
-
- leaf value {
- description "Value of the meta-data parameter";
- type string;
- }
-
- leaf destination {
- description "Type of input parameter";
- type enumeration {
- enum "CLOUD_INIT";
- enum "CLOUD_METADATA";
- }
- default "CLOUD_METADATA";
- }
- }
- }
-
- grouping volume-info-additions {
- leaf boot-volume {
- description "This flag indicates if this is boot volume or not";
- type boolean;
- }
-
- leaf boot-priority {
- description "Boot priority associated with volume";
- type int32;
- }
- }
-
- grouping http-end-point-additions {
- leaf data {
- description
- "This is the data to be sent with POST ";
- type string;
- }
- }
-
- grouping ssh-key-generated {
- container ssh-key-generated {
- description "SSH key pair generated for this NS";
- leaf public-key {
- description "Public key generated";
- type string;
- }
- leaf private-key-file {
- description "Path to the private key file";
- type string;
- }
- }
- }
-}
+++ /dev/null
-
-/*
- *
- * Copyright 2016-2017 RIFT.IO Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- *
- */
-
-module mano-types
-{
- namespace "urn:ietf:params:xml:ns:yang:nfvo:mano-types";
- prefix "manotypes";
-
- import ietf-inet-types {
- prefix "inet";
- }
-
- import rw-project {
- prefix "rw-project";
- }
-
- revision 2017-02-08 {
- description
- "Update model to support projects.";
- }
-
- revision 2015-04-23 {
- description
- "Initial revision. This YANG file defines
- the reusable base types for VNF Management
- and Orchestration (MANO).";
- reference
- "Derived from earlier versions of base YANG files";
- }
-
- typedef meta-data-type {
- type enumeration {
- enum STRING;
- }
- }
-
- typedef package-type {
- description "Type of descriptor being on-boarded";
- type enumeration {
- enum NSD;
- enum VNFD;
- }
- }
-
- typedef parameter-data-type {
- type enumeration {
- enum STRING;
- enum INTEGER;
- enum BOOLEAN;
- }
- }
-
- grouping primitive-parameter-value {
- list parameter {
- description
- "List of parameters to the configuration primitive.";
- key "name";
- leaf name {
- description
- "Name of the parameter.";
- type string;
- }
-
- leaf value {
- description
- "Value associated with the name.";
- type string;
- }
- }
- }
-
- grouping primitive-parameter {
- leaf name {
- description
- "Name of the parameter.";
- type string;
- }
-
- leaf data-type {
- description
- "Data type associated with the name.";
- type manotypes:parameter-data-type;
- }
-
- leaf mandatory {
- description "Is this field mandatory";
- type boolean;
- default false;
- }
-
- leaf default-value {
- description "The default value for this field";
- type string;
- }
-
- leaf parameter-pool {
- description "NSD parameter pool name to use for this parameter";
- type string;
- }
-
- leaf read-only {
- description
- "The value should be dimmed by the UI.
- Only applies to parameters with default values.";
- type boolean;
- default false;
- }
-
- leaf hidden {
- description
- "The value should be hidden by the UI.
- Only applies to parameters with default values.";
- type boolean;
- default false;
- }
- }
-
- grouping ui-primitive-group {
- list parameter-group {
- description
- "Grouping of parameters which are logically grouped in UI";
- key "name";
-
- leaf name {
- description
- "Name of the parameter group";
- type string;
- }
-
- list parameter {
- description
- "List of parameters for the service primitive.";
- key "name";
- uses manotypes:primitive-parameter;
- }
-
- leaf mandatory {
- description "Is this parameter group mandatory";
- type boolean;
- default true;
- }
- }
- }
-
- grouping event-config {
- leaf seq {
- description
- "Sequence number for the configuration primitive.";
- type uint64;
- }
-
- leaf name {
- description
- "Name of the configuration primitive.";
- type string;
- mandatory "true";
- }
-
- leaf user-defined-script {
- description
- "A user defined script.";
- type string;
- }
-
- list parameter {
- key "name";
- leaf name {
- type string;
- }
-
- leaf value {
- description "Value of the configuration primitive.";
- type string;
- }
- }
- }
-
- grouping image-properties {
- leaf image {
- description
- "Image name for the software image.
- If the image name is found within the VNF package it will
- be uploaded to all VIM accounts during onboarding process.
- Otherwise, the image must be added to the VIM account with
- the same name as entered here.
- ";
- type string;
- }
-
- leaf image-checksum {
- description
- "Image md5sum for the software image.
- The md5sum, if provided, along with the image name uniquely
- identifies an image uploaded to the CAL.
- ";
- type string;
- }
- }
-
-
- grouping vca-relationships {
- container vca-relationships {
- list relation {
- description "List of relations between VCA componets.";
-
- key "requires provides";
-
- leaf requires {
- description
- "Name of the required relation.";
- type string;
- }
-
- leaf provides {
- description
- "Name of the provided relation.";
- type string;
- }
- }
- }
- }
-
- grouping vca-configuration {
- description
- "Information about the VNF or VDU configuration. Note:
- If the NS contains multiple instances of the
- same VNF or VDU, each instance could have a different
- configuration.";
-
- choice config-method {
- description
- "Defines the configuration method for the VNF or VDU.";
- case script {
- description
- "Use custom script for configuring the VNF or VDU.
- This script is executed in the context of
- Orchestrator (The same system and environment
- as the Launchpad).";
- container script {
- leaf script-type {
- description
- "Script type - currently supported - Scripts confirming to Rift CA plugin";
- type enumeration {
- enum rift;
- }
- }
- }
- }
-
- case juju {
- description
- "Configure the VNF or VDU through Juju.";
- container juju {
- leaf charm {
- description "Juju charm to use with the VNF or VDU.";
- type string;
- }
- uses manotypes:vca-relationships;
- }
- }
- }
-
- list config-primitive {
- description
- "List of config primitives supported by the
- configuration agent for this VNF or VDU.";
- key "name";
-
- leaf name {
- description
- "Name of the config primitive.";
- type string;
- }
-
- list parameter {
- description
- "List of parameters to the config primitive.";
- key "name";
- uses primitive-parameter;
- }
-
- leaf user-defined-script {
- description
- "A user defined script. If user defined script is defined,
- the script will be executed using bash";
- type string;
- }
- }
-
- list initial-config-primitive {
- description
- "Initial set of configuration primitives.";
- key "seq";
- leaf seq {
- description
- "Sequence number for the configuration primitive.";
- type uint64;
- }
-
- choice primitive-type {
- case primitive-definition {
- leaf name {
- description
- "Name of the configuration primitive.";
- type string;
- }
-
- uses primitive-parameter-value;
-
- leaf user-defined-script {
- description
- "A user defined script.";
- type string;
- }
- }
- }
- }
- } // END - grouping vca-configuration
-
- typedef virtual-link-type {
- description
- "Type of virtual link
- ELAN: A multipoint service connecting a set of VNFs
- ELINE: For a simple point to point connection
- // between a VNF and the existing network.
- // ETREE: A multipoint service connecting one or
- // more roots and a set of leaves, but
- // preventing inter-leaf communication.";
- type enumeration {
- enum ELAN;
- enum ELINE;
- // enum ETREE;
- }
- }
-
- grouping named-value {
- leaf name {
- type string;
- }
-
- leaf value {
- type string;
- }
- }
-
- typedef http-method {
- description
- "Type of HTTP operation";
-
- type enumeration {
- enum POST;
- enum PUT;
- enum GET;
- enum DELETE;
- enum OPTIONS;
- enum PATCH;
- }
- }
-
- typedef api-type {
- description
- "Type of API to fetch monitoring parameters";
-
- type enumeration {
- enum HTTP;
- enum NETCONF;
- enum SOAP;
- }
- }
-
- typedef json-query-method {
- description
- "The method to extract a value from a JSON response
-
- NAMEKEY - Use the name as the key for a non-nested value.
- JSONPATH - Use jsonpath-rw implementation to extract a value.
- OBJECTPATH - Use objectpath implementation to extract a value.";
- type enumeration {
- enum NAMEKEY;
- enum JSONPATH;
- enum OBJECTPATH;
- }
- }
-
- typedef param-value-type {
- description
- "The type of the parameter value";
- type enumeration {
- enum INT;
- enum DECIMAL;
- enum STRING;
- }
- }
-
- typedef connection-point-type {
- description
- "Type of connection point
- VPORT: Virtual Port
- // VNIC_ADDR: Virtual NIC Address
- // PNIC_ADDR: Physical NIC Address
- // PPORT: Physical Port.";
-
- type enumeration {
- enum VPORT;
- }
- }
-
- typedef widget-type {
- description
- "Type of the widget, typically used by the UI.";
- type enumeration {
- enum COUNTER;
- enum GAUGE;
- enum TEXTBOX;
- enum SLIDER;
- enum HISTOGRAM;
- enum BAR;
- }
- }
-
- typedef cpu-feature-type {
- description
- "Enumeration for CPU features.
-
- AES: CPU supports advanced instruction set for
- AES (Advanced Encryption Standard).
-
- CAT: Cache Allocation Technology (CAT) allows
- an Operating System, Hypervisor, or similar
- system management agent to specify the amount
- of L3 cache (currently the last-level cache
- in most server and client platforms) space an
- application can fill (as a hint to hardware
- functionality, certain features such as power
- management may override CAT settings).
-
- CMT: Cache Monitoring Technology (CMT) allows
- an Operating System, Hypervisor, or similar
- system management agent to determine the
- usage of cache based on applications running
- on the platform. The implementation is
- directed at L3 cache monitoring (currently
- the last-level cache in most server and
- client platforms).
-
- DDIO: Intel Data Direct I/O (DDIO) enables
- Ethernet server NICs and controllers talk
- directly to the processor cache without a
- detour via system memory. This enumeration
- specifies if the VM requires a DDIO
- capable host.";
-
- type enumeration {
- enum PREFER_AES;
- enum REQUIRE_AES;
- enum PREFER_CAT;
- enum REQUIRE_CAT;
- enum PREFER_CMT;
- enum REQUIRE_CMT;
- enum PREFER_DDIO;
- enum REQUIRE_DDIO;
- enum REQUIRE_VME;
- enum PREFER_VME;
- enum REQUIRE_DE;
- enum PREFER_DE;
- enum REQUIRE_PSE;
- enum PREFER_PSE;
- enum REQUIRE_TSC;
- enum PREFER_TSC;
- enum REQUIRE_MSR;
- enum PREFER_MSR;
- enum REQUIRE_PAE;
- enum PREFER_PAE;
- enum REQUIRE_MCE;
- enum PREFER_MCE;
- enum REQUIRE_CX8;
- enum PREFER_CX8;
- enum REQUIRE_APIC;
- enum PREFER_APIC;
- enum REQUIRE_SEP;
- enum PREFER_SEP;
- enum REQUIRE_MTRR;
- enum PREFER_MTRR;
- enum REQUIRE_PGE;
- enum PREFER_PGE;
- enum REQUIRE_MCA;
- enum PREFER_MCA;
- enum REQUIRE_CMOV;
- enum PREFER_CMOV;
- enum REQUIRE_PAT;
- enum PREFER_PAT;
- enum REQUIRE_PSE36;
- enum PREFER_PSE36;
- enum REQUIRE_CLFLUSH;
- enum PREFER_CLFLUSH;
- enum REQUIRE_DTS;
- enum PREFER_DTS;
- enum REQUIRE_ACPI;
- enum PREFER_ACPI;
- enum REQUIRE_MMX;
- enum PREFER_MMX;
- enum REQUIRE_FXSR;
- enum PREFER_FXSR;
- enum REQUIRE_SSE;
- enum PREFER_SSE;
- enum REQUIRE_SSE2;
- enum PREFER_SSE2;
- enum REQUIRE_SS;
- enum PREFER_SS;
- enum REQUIRE_HT;
- enum PREFER_HT;
- enum REQUIRE_TM;
- enum PREFER_TM;
- enum REQUIRE_IA64;
- enum PREFER_IA64;
- enum REQUIRE_PBE;
- enum PREFER_PBE;
- enum REQUIRE_RDTSCP;
- enum PREFER_RDTSCP;
- enum REQUIRE_PNI;
- enum PREFER_PNI;
- enum REQUIRE_PCLMULQDQ;
- enum PREFER_PCLMULQDQ;
- enum REQUIRE_DTES64;
- enum PREFER_DTES64;
- enum REQUIRE_MONITOR;
- enum PREFER_MONITOR;
- enum REQUIRE_DS_CPL;
- enum PREFER_DS_CPL;
- enum REQUIRE_VMX;
- enum PREFER_VMX;
- enum REQUIRE_SMX;
- enum PREFER_SMX;
- enum REQUIRE_EST;
- enum PREFER_EST;
- enum REQUIRE_TM2;
- enum PREFER_TM2;
- enum REQUIRE_SSSE3;
- enum PREFER_SSSE3;
- enum REQUIRE_CID;
- enum PREFER_CID;
- enum REQUIRE_FMA;
- enum PREFER_FMA;
- enum REQUIRE_CX16;
- enum PREFER_CX16;
- enum REQUIRE_XTPR;
- enum PREFER_XTPR;
- enum REQUIRE_PDCM;
- enum PREFER_PDCM;
- enum REQUIRE_PCID;
- enum PREFER_PCID;
- enum REQUIRE_DCA;
- enum PREFER_DCA;
- enum REQUIRE_SSE4_1;
- enum PREFER_SSE4_1;
- enum REQUIRE_SSE4_2;
- enum PREFER_SSE4_2;
- enum REQUIRE_X2APIC;
- enum PREFER_X2APIC;
- enum REQUIRE_MOVBE;
- enum PREFER_MOVBE;
- enum REQUIRE_POPCNT;
- enum PREFER_POPCNT;
- enum REQUIRE_TSC_DEADLINE_TIMER;
- enum PREFER_TSC_DEADLINE_TIMER;
- enum REQUIRE_XSAVE;
- enum PREFER_XSAVE;
- enum REQUIRE_AVX;
- enum PREFER_AVX;
- enum REQUIRE_F16C;
- enum PREFER_F16C;
- enum REQUIRE_RDRAND;
- enum PREFER_RDRAND;
- enum REQUIRE_FSGSBASE;
- enum PREFER_FSGSBASE;
- enum REQUIRE_BMI1;
- enum PREFER_BMI1;
- enum REQUIRE_HLE;
- enum PREFER_HLE;
- enum REQUIRE_AVX2;
- enum PREFER_AVX2;
- enum REQUIRE_SMEP;
- enum PREFER_SMEP;
- enum REQUIRE_BMI2;
- enum PREFER_BMI2;
- enum REQUIRE_ERMS;
- enum PREFER_ERMS;
- enum REQUIRE_INVPCID;
- enum PREFER_INVPCID;
- enum REQUIRE_RTM;
- enum PREFER_RTM;
- enum REQUIRE_MPX;
- enum PREFER_MPX;
- enum REQUIRE_RDSEED;
- enum PREFER_RDSEED;
- enum REQUIRE_ADX;
- enum PREFER_ADX;
- enum REQUIRE_SMAP;
- enum PREFER_SMAP;
- }
- }
-
- grouping vm-flavor {
- container vm-flavor {
- leaf vcpu-count {
- description
- "Number of VCPUs for the VM.";
- type uint16;
- }
-
- leaf memory-mb {
- description
- "Amount of memory in MB.";
- type uint64;
- }
-
- leaf storage-gb {
- description
- "Amount of disk space in GB.";
- type uint64;
- }
- }
- } //grouping vm-flavor
-
- grouping vm-flavor-name {
- leaf vm-flavor-name {
- description "flavor name to be used while creating vm using cloud account";
- type string;
- }
- }
-
- grouping vswitch-epa {
- container vswitch-epa {
- leaf ovs-acceleration {
- description
- "Specifies Open vSwitch acceleration mode.
- MANDATORY: OVS acceleration is required
- PREFERRED: OVS acceleration is preferred";
- type enumeration {
- enum MANDATORY;
- enum PREFERRED;
- enum DISABLED;
- }
- }
-
- leaf ovs-offload {
- description
- "Specifies Open vSwitch hardware offload mode.
- MANDATORY: OVS offload is required
- PREFERRED: OVS offload is preferred";
- type enumeration {
- enum MANDATORY;
- enum PREFERRED;
- enum DISABLED;
- }
- }
- }
- }
-
- grouping hypervisor-epa {
- container hypervisor-epa {
- leaf type {
- description
- "Specifies the type of hypervisor.
- KVM: KVM
- XEN: XEN";
- type enumeration {
- enum PREFER_KVM;
- enum REQUIRE_KVM;
- }
- }
- leaf version {
- type string;
- }
- }
- }
-
- grouping host-epa {
- container host-epa {
- description "Specifies the host level EPA attributes.";
- leaf cpu-model {
- description
- "Host CPU model. Examples include: SandyBridge,
- IvyBridge";
- type enumeration {
- enum PREFER_WESTMERE;
- enum REQUIRE_WESTMERE;
- enum PREFER_SANDYBRIDGE;
- enum REQUIRE_SANDYBRIDGE;
- enum PREFER_IVYBRIDGE;
- enum REQUIRE_IVYBRIDGE;
- enum PREFER_HASWELL;
- enum REQUIRE_HASWELL;
- enum PREFER_BROADWELL;
- enum REQUIRE_BROADWELL;
- enum PREFER_NEHALEM;
- enum REQUIRE_NEHALEM;
- enum PREFER_PENRYN;
- enum REQUIRE_PENRYN;
- enum PREFER_CONROE;
- enum REQUIRE_CONROE;
- enum PREFER_CORE2DUO;
- enum REQUIRE_CORE2DUO;
- }
- }
-
- leaf cpu-arch {
- description "Host CPU architecture.";
- type enumeration {
- enum PREFER_X86;
- enum REQUIRE_X86;
- enum PREFER_X86_64;
- enum REQUIRE_X86_64;
- enum PREFER_I686;
- enum REQUIRE_I686;
- enum PREFER_IA64;
- enum REQUIRE_IA64;
- enum PREFER_ARMV7;
- enum REQUIRE_ARMV7;
- enum PREFER_ARMV8;
- enum REQUIRE_ARMV8;
- }
- }
-
- leaf cpu-vendor {
- description "Host CPU Vendor.";
- type enumeration {
- enum PREFER_INTEL;
- enum REQUIRE_INTEL;
- enum PREFER_AMD;
- enum REQUIRE_AMD;
- }
- }
-
- leaf cpu-socket-count {
- description "Number of sockets on the host.";
- type uint64;
- }
-
- leaf cpu-core-count {
- description "Number of cores on the host.";
- type uint64;
- }
-
- leaf cpu-core-thread-count {
- description "Number of threads per cores on the host.";
- type uint64;
- }
-
- list cpu-feature {
- key "feature";
- description "List of CPU features.";
- leaf feature {
- description "CPU feature.";
- type cpu-feature-type;
- }
- }
-
-
- leaf om-cpu-model-string {
- description "OpenMANO CPU model string";
- type string;
- }
-
- list om-cpu-feature {
- key "feature";
- description "List of OpenMANO CPU features";
- leaf feature {
- description "CPU feature";
- type string;
- }
- }
- }
- }
-
- grouping guest-epa {
- description "EPA attributes for the guest";
- container guest-epa {
- leaf trusted-execution {
- description "This VM should be allocated from trusted pool";
- type boolean;
- }
-
- leaf mempage-size {
- description
- "Memory page allocation size. If a VM requires
- hugepages, it should choose LARGE or SIZE_2MB
- or SIZE_1GB. If the VM prefers hugepages it
- should choose PREFER_LARGE.
- LARGE : Require hugepages (either 2MB or 1GB)
- SMALL : Doesn't require hugepages
- SIZE_2MB : Requires 2MB hugepages
- SIZE_1GB : Requires 1GB hugepages
- PREFER_LARGE : Application prefers hugepages";
- type enumeration {
- enum LARGE;
- enum SMALL;
- enum SIZE_2MB;
- enum SIZE_1GB;
- enum PREFER_LARGE;
- }
- }
-
- leaf cpu-pinning-policy {
- description
- "CPU pinning policy describes association
- between virtual CPUs in guest and the
- physical CPUs in the host.
- DEDICATED : Virtual CPUs are pinned to
- physical CPUs
- SHARED : Multiple VMs may share the
- same physical CPUs.
- ANY : Any policy is acceptable for the VM";
- type enumeration {
- enum DEDICATED;
- enum SHARED;
- enum ANY;
- }
- default "ANY";
- }
-
- leaf cpu-thread-pinning-policy {
- description
- "CPU thread pinning policy describes how to
- place the guest CPUs when the host supports
- hyper threads:
- AVOID : Avoids placing a guest on a host
- with threads.
- SEPARATE: Places vCPUs on separate cores,
- and avoids placing two vCPUs on
- two threads of same core.
- ISOLATE : Places each vCPU on a different core,
- and places no vCPUs from a different
- guest on the same core.
- PREFER : Attempts to place vCPUs on threads
- of the same core.";
- type enumeration {
- enum AVOID;
- enum SEPARATE;
- enum ISOLATE;
- enum PREFER;
- }
- }
-
- list pcie-device {
- description
- "List of pcie passthrough devices.";
- key device-id;
- leaf device-id {
- description
- "Device identifier.";
- type string;
- }
- leaf count {
- description
- "Number of devices to attach to the VM.";
- type uint64;
- }
- }
-
- choice numa-policy {
- case numa-unaware {
- leaf numa-unaware {
- type empty;
- }
- }
-
- case numa-aware {
- container numa-node-policy {
- description
- "This policy defines NUMA topology of the
- guest. Specifically identifies if the guest
- should be run on a host with one NUMA
- node or multiple NUMA nodes. As an example
- a guest might need 8 VCPUs and 4 GB of
- memory. However, it might need the VCPUs
- and memory distributed across multiple
- NUMA nodes. In this scenario, NUMA node
- 1 could run with 6 VCPUs and 3GB, and
- NUMA node 2 could run with 2 VCPUs and
- 1GB.";
-
- leaf node-cnt {
- description
- "The number of NUMA nodes to expose to the VM.";
- type uint16;
- }
-
- leaf mem-policy {
- description
- "This policy specifies how the memory should
- be allocated in a multi-node scenario.
- STRICT : The memory must be allocated
- strictly from the memory attached
- to the NUMA node.
- PREFERRED : The memory should be allocated
- preferentially from the memory
- attached to the NUMA node";
- type enumeration {
- enum STRICT;
- enum PREFERRED;
- }
- }
-
- list node {
- key id;
- leaf id {
- description
- "NUMA node identification. Typically
- it's 0 or 1";
- type uint64;
- }
-
- list vcpu {
- key "id";
- description
- "List of VCPUs to allocate on
- this NUMA node.";
- leaf id {
- type uint64;
- description "List of VCPUs ids to allocate on
- this NUMA node";
- }
- }
-
- leaf memory-mb {
- description
- "Memory size expressed in MB
- for this NUMA node.";
- type uint64;
- }
-
- choice om-numa-type {
- description
- "OpenMANO Numa type selection";
-
- case cores {
- leaf num-cores {
- type uint8;
- }
- }
-
- case paired-threads {
- container paired-threads {
- leaf num-paired-threads {
- type uint8;
- }
-
- list paired-thread-ids {
- description
- "List of thread pairs to use in case of paired-thread NUMA";
- max-elements 16;
- key thread-a;
-
- leaf thread-a {
- type uint8;
- }
-
- leaf thread-b {
- type uint8;
- }
- }
- }
- }
- case threads {
- leaf num-threads {
- type uint8;
- }
- }
- }
- }
-
- }
- }
- }
- }
- }
-
- grouping provider-network {
- container provider-network {
- description "Container for the provider network.";
- leaf physical-network {
- description
- "Name of the physical network on which the provider
- network is built.";
- type string;
- }
-
- leaf segmentation_id {
- description
- "ID of segregated virtual networks";
- type uint32;
- }
- }
- }
-
- grouping ns-service-primitive {
- list service-primitive {
- description
- "Network service level service primitives.";
-
- key "name";
-
- leaf name {
- description
- "Name of the service primitive.";
- type string;
- }
-
- list parameter {
- description
- "List of parameters for the service primitive.";
-
- key "name";
- uses manotypes:primitive-parameter;
- }
-
- list parameter-group {
- description
- "Grouping of parameters which are logically grouped in UI";
- key "name";
-
- leaf name {
- description
- "Name of the parameter group";
- type string;
- }
-
- list parameter {
- description
- "List of parameters for the service primitive.";
- key "name";
- uses manotypes:primitive-parameter;
- }
-
- leaf mandatory {
- description "Is this parameter group mandatory";
- type boolean;
- default true;
- }
- }
-
- list vnf-primitive-group {
- description
- "List of service primitives grouped by VNF.";
-
- key "member-vnf-index-ref";
- leaf member-vnf-index-ref {
- description
- "Reference to member-vnf within constituent-vnfds";
- type uint64;
- }
-
- leaf vnfd-id-ref {
- description
- "A reference to a vnfd. This is a
- leafref to path:
- ../../../../nsd:constituent-vnfd
- + [nsd:id = current()/../nsd:id-ref]
- + /nsd:vnfd-id-ref
- NOTE: An issue with confd is preventing the
- use of xpath. Seems to be an issue with leafref
- to leafref, whose target is in a different module.
- Once that is resolved this will switched to use
- leafref";
-
- type string;
- }
-
- leaf vnfd-name {
- description
- "Name of the VNFD";
- type string;
- }
-
- list primitive {
- key "index";
-
- leaf index {
- description "Index of this primitive";
- type uint32;
- }
-
- leaf name {
- description "Name of the primitive in the VNF primitive ";
- type string;
- }
- }
- }
-
- leaf user-defined-script {
- description
- "A user defined script.";
- type string;
- }
- }
- }
-
- grouping monitoring-param {
- list http-endpoint {
- description
- "List of http endpoints to be used by monitoring params";
- key path;
-
- leaf path {
- description "The HTTP path on the management server";
- type string;
- }
-
- leaf https {
- description "Pick HTTPS instead of HTTP , Default is false";
- type boolean;
- default "false";
- }
-
- leaf port {
- description "The HTTP port to connect to";
- type inet:port-number;
- }
-
- leaf username {
- description "The HTTP basic auth username";
- type string;
- }
-
- leaf password {
- description "The HTTP basic auth password";
- type string;
- }
-
- leaf polling-interval-secs {
- description "The HTTP polling interval in seconds";
- type uint8;
- default 2;
- }
-
- leaf method {
- description
- "Method that the URI should perform.
- Deafult action is GET.";
-
- type manotypes:http-method;
- default "GET";
- }
-
- list headers {
- description "Custom HTTP headers to put on HTTP request";
- key key;
- leaf key{
- description "HTTP header key";
- type string;
- }
-
- leaf value{
- description "HTTP header value";
- type string;
- }
- }
- }
-
- list monitoring-param {
- description
- "List of monitoring parameters at the network service level";
- key id;
- leaf id {
- type string;
- }
-
- leaf name {
- type string;
- }
-
- leaf http-endpoint-ref {
- type leafref {
- path "../../http-endpoint/path";
- }
- }
-
- leaf json-query-method {
- type json-query-method;
- default "NAMEKEY";
- }
-
- container json-query-params {
- leaf json-path {
- description
- "The jsonpath to use to extract value from JSON structure";
- type string;
- }
- leaf object-path {
- description
- "The objectpath to use to extract value from JSON structure";
- type string;
- }
- }
-
- uses monitoring-param-ui-data;
- uses monitoring-param-value;
-
- }
- }
-
- grouping monitoring-param-aggregation {
- typedef aggregation-type {
- description "aggregation-type";
- type enumeration {
- enum AVERAGE;
- enum MINIMUM;
- enum MAXIMUM;
- enum COUNT;
- enum SUM;
- }
- }
-
- leaf aggregation-type {
- type aggregation-type;
- }
- }
-
- grouping monitoring-param-ui-data {
- leaf description {
- type string;
- }
-
- leaf group-tag {
- description "A tag to group monitoring parameters";
- type string;
- }
-
-
- leaf widget-type {
- description "Defines the UI Display variant of measured counters.";
- type manotypes:widget-type;
- default "COUNTER";
- }
-
- leaf units {
- description "Measured Counter Units (e.g., Packets, Kbps, Mbps, etc.)";
- type string;
- }
- }
-
- grouping monitoring-param-value {
- leaf value-type {
- type param-value-type;
- default "INT";
- }
-
- container numeric-constraints {
- leaf min-value {
- description
- "Minimum value for the parameter";
- type uint64;
- }
- leaf max-value {
- description
- "Maximum value for the parameter";
- type uint64;
- }
- }
-
- container text-constraints {
- leaf min-length {
- description
- "Minimum string length for the parameter";
- type uint8;
- }
- leaf max-length {
- description
- "Maximum string length for the parameter";
- type uint8;
- }
- }
-
- leaf value-integer {
- description
- "Current value for an integer parameter";
- type int64;
- }
-
- leaf value-decimal {
- description
- "Current value for a decimal parameter";
- type decimal64 {
- fraction-digits 4;
- }
- }
-
- leaf value-string {
- description
- "Current value for a string parameter";
- type string;
- }
- }
-
- grouping control-param {
- list control-param {
- description
- "List of control parameters to manage and
- update the running configuration of the VNF";
- key id;
-
- leaf id {
- description "Identifier for control parameter";
- type string;
- }
-
- leaf name {
- description "Name of a control parameter";
- type string;
- }
-
- leaf description {
- description "A description of the control parameter";
- type string;
- }
-
- leaf group-tag {
- description "A tag to group control parameters";
- type string;
- }
-
- leaf min-value {
- description
- "Minimum value for the parameter";
- type uint64;
- }
-
- leaf max-value {
- description
- "Maximum value for the parameter";
- type uint64;
- }
-
- leaf current-value {
- description
- "Current value for the parameter";
- type uint64;
- }
-
- leaf step-value {
- description
- "Step value for the parameter";
- type uint64;
- }
-
- leaf units {
- type string;
- }
-
- leaf widget-type {
- type manotypes:widget-type;
- }
-
- leaf url {
- description
- "This is the URL where the operation should be performed.";
-
- type inet:uri;
- }
-
- leaf method {
- description
- "Method that the URI should perform.
- Default Action is POST";
-
- type manotypes:http-method;
- default "POST";
- }
-
- leaf payload {
- description
- "This is the operation payload or payload template as stringified
- JSON. This field provides the data to be sent for this operation
- call";
-
- type string;
- }
- }
- }
-
- grouping action-param {
- list action-param {
- description
- "List of action parameters to
- control VNF";
- key id;
- leaf id {
- type string;
- }
-
- leaf name {
- type string;
- }
-
- leaf description {
- type string;
- }
-
- leaf group-tag {
- description "A tag to group monitoring parameter";
- type string;
- }
-
- leaf url {
- description
- "This is the URL where to perform the operation";
- type inet:uri;
- }
-
- leaf method {
- description
- "This is the method to be performed at the uri.
- POST by default for action";
-
- type manotypes:http-method;
- default "POST";
- }
-
- leaf payload {
- description
- "This is the operation payload or payload template to be sent in
- the data for this operation call";
-
- type string;
- }
- }
- }
-
- grouping input-parameter {
- description "List of input parameters that can be specified when instantiating a network service.";
-
- list input-parameter {
- description
- "List of input parameters";
-
- key xpath;
-
-
- leaf xpath {
- description
- "An xpath that specfies which element in a descriptor is to be
- modified.";
- type string;
- }
-
- leaf value {
- description
- "The value that the element specified by the xpath should take when a
- record is created.";
- type string;
- }
- }
- }
-
- grouping input-parameter-xpath {
- list input-parameter-xpath {
- description
- "List of xpaths to parameters inside the NSD
- the can be customized during the instantiation.";
-
- key "xpath";
- leaf xpath {
- description
- "An xpath that specifies the element in a descriptor.";
- type string;
- }
-
- leaf label {
- description "A descriptive string";
- type string;
- }
-
- leaf default-value {
- description "Default Value for the Input Parameter";
- type string;
- }
- }
- }
-
- grouping nfvi-metrics {
- container vcpu {
- leaf label {
- description
- "Label to show in UI";
- type string;
- default "VCPU";
- }
-
- leaf total {
- description
- "The total number of VCPUs available.";
- type uint64;
- }
-
- leaf utilization {
- description
- "The VCPU utilization (percentage).";
- type decimal64 {
- fraction-digits 2;
- range "0 .. 100";
- }
- }
- }
-
- container memory {
- leaf label {
- description
- "Label to show in UI";
- type string;
- default "MEMORY";
- }
-
- leaf used {
- description
- "The amount of memory (bytes) currently in use.";
- type uint64;
- }
-
- leaf total {
- description
- "The amount of memory (bytes) available.";
- type uint64;
- }
-
- leaf utilization {
- description
- "The memory utilization (percentage).";
- type decimal64 {
- fraction-digits 2;
- range "0 .. 100";
- }
- }
- }
-
- container storage {
- leaf label {
- description
- "Label to show in UI";
- type string;
- default "STORAGE";
- }
-
- leaf used {
- description
- "The amount of storage (bytes) currently in use.";
- type uint64;
- }
-
- leaf total {
- description
- "The amount of storage (bytes) available.";
- type uint64;
- }
-
- leaf utilization {
- description
- "The storage utilization (percentage).";
- type decimal64 {
- fraction-digits 2;
- range "0 .. 100";
- }
- }
- }
-
- container external-ports {
- leaf label {
- description
- "Label to show in UI";
- type string;
- default "EXTERNAL PORTS";
- }
-
- leaf total {
- description
- "The total number of external ports.";
- type uint64;
- }
- }
-
- container internal-ports {
- leaf label {
- description
- "Label to show in UI";
- type string;
- default "INTERNAL PORTS";
- }
-
- leaf total {
- description
- "The total number of internal ports.";
- type uint64;
- }
- }
-
- container network {
- leaf label {
- description
- "Label to show in UI";
- type string;
- default "NETWORK TRAFFIC";
- }
-
- container incoming {
- leaf label {
- description
- "Label to show in UI";
- type string;
- default "INCOMING NETWORK TRAFFIC";
- }
-
- leaf bytes {
- description
- "The cumulative number of incoming bytes.";
- type uint64;
- }
-
- leaf packets {
- description
- "The cumulative number of incoming packets.";
- type uint64;
- }
-
- leaf byte-rate {
- description
- "The current incoming byte-rate (bytes per second).";
- type decimal64 {
- fraction-digits 2;
- }
- }
-
- leaf packet-rate {
- description
- "The current incoming packet (packets per second).";
- type decimal64 {
- fraction-digits 2;
- }
- }
- }
-
- container outgoing {
- leaf label {
- description
- "Label to show in UI";
- type string;
- default "OUTGOING NETWORK TRAFFIC";
- }
-
- leaf bytes {
- description
- "The cumulative number of outgoing bytes.";
- type uint64;
- }
-
- leaf packets {
- description
- "The cumulative number of outgoing packets.";
- type uint64;
- }
-
- leaf byte-rate {
- description
- "The current outgoing byte-rate (bytes per second).";
- type decimal64 {
- fraction-digits 2;
- }
- }
-
- leaf packet-rate {
- description
- "The current outgoing packet (packets per second).";
- type decimal64 {
- fraction-digits 2;
- }
- }
- }
- }
- }
-
- typedef alarm-severity-type {
- description "An indication of the importance or urgency of the alarm";
- type enumeration {
- enum LOW;
- enum MODERATE;
- enum CRITICAL;
- }
- }
-
- typedef alarm-metric-type {
- description "The type of metrics to register the alarm for";
- type enumeration {
- enum CPU_UTILIZATION;
- enum MEMORY_UTILIZATION;
- enum STORAGE_UTILIZATION;
- }
- }
-
- typedef alarm-statistic-type {
- description
- "Statistic type to use to determine threshold crossing
- for an alarm.";
- type enumeration {
- enum AVERAGE;
- enum MINIMUM;
- enum MAXIMUM;
- enum COUNT;
- enum SUM;
- }
- }
-
- typedef alarm-operation-type {
- description
- "The relational operator used to define whether an alarm
- should be triggered in certain scenarios, such as if the
- metric statistic goes above or below a specified value.";
- type enumeration {
- enum GE; // greater than or equal
- enum LE; // less than or equal
- enum GT; // greater than
- enum LT; // less than
- enum EQ; // equal
- }
- }
-
- grouping alarm {
- leaf alarm-id {
- description
- "This field is reserved for the identifier assigned by the VIM provider";
-
- type string;
- }
-
- leaf name {
- description "A human readable string to identify the alarm";
- type string;
- }
-
- leaf description {
- description "A description of this alarm";
- type string;
- }
-
- leaf vdur-id {
- description
- "The identifier of the VDUR that the alarm is associated with";
- type string;
- }
-
- container actions {
- list ok {
- key "url";
- leaf url {
- type string;
- }
- }
-
- list insufficient-data {
- key "url";
- leaf url {
- type string;
- }
- }
-
- list alarm {
- key "url";
- leaf url {
- type string;
- }
- }
- }
-
- leaf repeat {
- description
- "This flag indicates whether the alarm should be repeatedly emitted
- while the associated threshold has been crossed.";
-
- type boolean;
- default true;
- }
-
- leaf enabled {
- description
- "This flag indicates whether the alarm has been enabled or
- disabled.";
-
- type boolean;
- default true;
- }
-
- leaf severity {
- description "A measure of the importance or urgency of the alarm";
- type alarm-severity-type;
- }
-
- leaf metric {
- description "The metric to be tracked by this alarm.";
- type alarm-metric-type;
- }
-
- leaf statistic {
- description "The type of metric statistic that is tracked by this alarm";
- type alarm-statistic-type;
- }
-
- leaf operation {
- description
- "The relational operator used to define whether an alarm should be
- triggered in certain scenarios, such as if the metric statistic
- goes above or below a specified value.";
- type alarm-operation-type;
- }
-
- leaf value {
- description
- "This value defines the threshold that, if crossed, will trigger
- the alarm.";
- type decimal64 {
- fraction-digits 4;
- }
- }
-
- leaf period {
- description
- "The period defines the length of time (seconds) that the metric
- data are collected over in oreder to evaluate the chosen
- statistic.";
- type uint32;
- }
-
- leaf evaluations {
- description
- "Defines the length of time (seconds) in which metric data are
- collected in order to evaluate the chosen statistic.";
- type uint32;
- }
- }
-
- typedef cloud-account-type {
- description "VIM account type";
- type enumeration {
- enum aws;
- enum cloudsim;
- enum cloudsim_proxy;
- enum mock;
- enum openmano;
- enum openstack;
- enum vsphere;
- enum openvim;
- }
- }
-
- grouping host-aggregate {
- list host-aggregate {
- description "Name of the Host Aggregate";
- key "metadata-key";
-
- leaf metadata-key {
- description
- "Name of the additional information attached to the host-aggregate";
- type string;
- }
- leaf metadata-value {
- description
- "Value of the corresponding metadata-key";
- type string;
- }
- }
- }
-
- grouping placement-group-input {
- leaf cloud-type {
- type manotypes:cloud-account-type;
- }
- choice cloud-provider {
- case openstack {
- container availability-zone {
- description "Name of the Availability Zone";
- leaf name {
- type string;
- }
- }
- container server-group {
- description "Name of the Affinity/Anti-Affinity Server Group";
- leaf name {
- type string;
- }
- }
- uses host-aggregate;
- }
- case aws {
- leaf aws-construct {
- type empty;
- }
- }
- case openmano {
- leaf openmano-construct {
- type empty;
- }
- }
- case vsphere {
- leaf vsphere-construct {
- type empty;
- }
- }
- case mock {
- leaf mock-construct {
- type empty;
- }
- }
- case cloudsim {
- leaf cloudsim-construct {
- type empty;
- }
- }
- }
- }
-
- grouping cloud-config {
- list key-pair {
- key "name";
- description "Used to configure the list of public keys to be injected as part
- of ns instantiation";
-
- leaf name {
- description "Name of this key pair";
- type string;
- }
-
- leaf key {
- description "Key associated with this key pair";
- type string;
- }
- }
-
- list user {
- key "name";
- description "List of users to be added through cloud-config";
-
- leaf name {
- description "Name of the user ";
- type string;
- }
-
- leaf user-info {
- description "The user name's real name";
- type string;
- }
-
- list key-pair {
- key "name";
- description "Used to configure the list of public keys to be injected as part
- of ns instantiation";
-
- leaf name {
- description "Name of this key pair";
- type string;
- }
-
- leaf key {
- description "Key associated with this key pair";
- type string;
- }
- }
- }
- }
-
- grouping placement-group-info {
- description "";
-
- leaf name {
- description
- "Place group construct to define the compute resource placement strategy
- in cloud environment";
- type string;
- }
-
- leaf requirement {
- description "This is free text space used to describe the intent/rationale
- behind this placement group. This is for human consumption only";
- type string;
- }
-
- leaf strategy {
- description
- "Strategy associated with this placement group
- Following values are possible
- - COLOCATION: Colocation strategy imply intent to share the physical
- infrastructure (hypervisor/network) among all members
- of this group.
- - ISOLATION: Isolation strategy imply intent to not share the physical
- infrastructure (hypervisor/network) among the members
- of this group.
- ";
- type enumeration {
- enum COLOCATION;
- enum ISOLATION;
- }
- default "COLOCATION";
- }
- }
-
- grouping ip-profile-info {
- description "Grouping for IP-Profile";
- container ip-profile-params {
-
- leaf ip-version {
- type inet:ip-version;
- default ipv4;
- }
-
- leaf subnet-address {
- description "Subnet IP prefix associated with IP Profile";
- type inet:ip-prefix;
- }
-
- leaf gateway-address {
- description "IP Address of the default gateway associated with IP Profile";
- type inet:ip-address;
- }
-
- leaf security-group {
- description "Name of the security group";
- type string;
- }
-
- list dns-server {
- key "address";
- leaf address {
- description "List of DNS Servers associated with IP Profile";
- type inet:ip-address;
- }
- }
-
- container dhcp-params {
- leaf enabled {
- description "This flag indicates if DHCP is enabled or not";
- type boolean;
- default true;
- }
-
- leaf start-address {
- description "Start IP address of the IP-Address range associated with DHCP domain";
- type inet:ip-address;
- }
-
- leaf count {
- description "Size of the DHCP pool associated with DHCP domain";
- type uint32;
- }
- }
-
- leaf subnet-prefix-pool {
- description "VIM Specific reference to pre-created subnet prefix";
- type string;
- }
- }
- }
-
- grouping ip-profile-list {
- list ip-profiles {
- description
- "List of IP Profiles.
- IP Profile describes the IP characteristics for the Virtual-Link";
-
- key "name";
-
- leaf name {
- description "Name of the IP-Profile";
- type string;
- }
-
- leaf description {
- description "Description for IP profile";
- type string;
- }
-
- uses ip-profile-info;
- }
- }
-
- grouping config-file {
- description "Grouping for files needed to be mounted into an additional drive";
- list config-file {
- description
- "List of configuration files to be written on an additional drive";
- key "source";
- leaf source {
- description "Name of the configuration file";
- type string;
- }
- leaf dest {
- description "Full path of the destination in the guest";
- type string;
- }
- }
- }
-
- grouping supplemental-boot-data {
- description "Grouping for custom vim data";
- container supplemental-boot-data {
- uses manotypes:config-file;
- leaf boot-data-drive {
- description "Some VIMs implement additional drives to host config-files or meta-data";
- type boolean;
- default false;
- }
- }
- }
-
- grouping volume-info {
- description "Grouping for Volume-info";
-
- leaf description {
- description "Description for Volume";
- type string;
- }
-
- leaf size {
- description "Size of disk in GB";
- type uint64;
- }
-
- choice volume-source {
- description
- "Defines the source of the volume. Possible options are
- 1. Ephemeral -- Empty disk
- 2. Image -- Refer to image to be used for volume
- 3. Volume -- Reference of pre-existing volume to be used
- ";
-
- case ephemeral {
- leaf ephemeral {
- type empty;
- }
- }
-
- case image {
- uses image-properties;
- }
- }
-
- leaf device-bus {
- description "Type of disk-bus on which this disk is exposed to guest";
- type enumeration {
- enum ide;
- enum usb;
- enum virtio;
- enum scsi;
- }
- }
-
- leaf device-type {
- description "The type of device as exposed to guest";
- type enumeration {
- enum disk;
- enum cdrom;
- enum floppy;
- enum lun;
- }
- }
- }
-
- grouping rpc-project-name {
- leaf project-name {
- default "default";
- description
- "Project to which this belongs";
- type leafref {
- path "/rw-project:project/rw-project:name";
- }
- }
- }
-}
+++ /dev/null
-
-/*
- *
- * Copyright 2017 RIFT.IO Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- *
- */
-
-module nsd-base
-{
- namespace "http://riftio.com/ns/riftware-1.0/nsd-base";
- prefix "nsd-base";
-
- import ietf-inet-types {
- prefix "inet";
- }
-
- import mano-types {
- prefix "manotypes";
- }
-
- revision 2017-02-28 {
- description
- "Initial revision. This YANG file defines
- the Network Service Descriptor (NSD)
- common groupings";
- reference
- "Derived from earlier versions of base YANG files";
- }
-
- typedef scaling-trigger {
- type enumeration {
- enum pre-scale-in {
- value 1;
- }
- enum post-scale-in {
- value 2;
- }
- enum pre-scale-out {
- value 3;
- }
- enum post-scale-out {
- value 4;
- }
- }
- }
-
- typedef scaling-policy-type {
- type enumeration {
- enum manual {
- value 1;
- }
- enum automatic {
- value 2;
- }
- }
- }
-
- typedef scaling-criteria-operation {
- type enumeration {
- enum AND {
- value 1;
- }
- enum OR {
- value 2;
- }
- }
- }
-
- grouping primitive-parameter {
- leaf name {
- description
- "Name of the parameter.";
- type string;
- }
-
- leaf data-type {
- description
- "Data type associated with the name.";
- type manotypes:parameter-data-type;
- }
-
- leaf mandatory {
- description "Is this field mandatory";
- type boolean;
- default false;
- }
-
- leaf default-value {
- description "The default value for this field";
- type string;
- }
-
- leaf parameter-pool {
- description "NSD parameter pool name to use for this parameter";
- type string;
- }
- }
-
- grouping nsd-descriptor-common {
- leaf id {
- description "Identifier for the NSD.";
- type string {
- length 1..63;
- }
- }
-
- leaf name {
- description "NSD name.";
- mandatory true;
- type string;
- }
-
- leaf short-name {
- description "Short name to appear as label in the UI";
- type string;
- }
-
- leaf vendor {
- description "Vendor of the NSD.";
- type string;
- }
-
- leaf logo {
- description
- "File path for the vendor specific logo. For example icons/mylogo.png.
- The logo should be part of the network service";
- type string;
- }
-
- leaf description {
- description "Description of the NSD.";
- type string;
- }
-
- leaf version {
- description "Version of the NSD";
- type string;
- }
-
- list connection-point {
- description
- "List for external connection points.
- Each NS has one or more external connection
- points. As the name implies that external
- connection points are used for connecting
- the NS to other NS or to external networks.
- Each NS exposes these connection points to
- the orchestrator. The orchestrator can
- construct network service chains by
- connecting the connection points between
- different NS.";
-
- key "name";
- leaf name {
- description
- "Name of the NS connection point.";
- type string;
- }
-
- leaf type {
- description
- "Type of the connection point.";
- type manotypes:connection-point-type;
- }
- }
-
- list scaling-group-descriptor {
- description
- "scaling group descriptor within this network service.
- The scaling group defines a group of VNFs,
- and the ratio of VNFs in the network service
- that is used as target for scaling action";
-
- key "name";
-
- leaf name {
- description "Name of this scaling group.";
- type string;
- }
-
- list scaling-policy {
-
- key "name";
-
- leaf name {
- description
- "Name of the scaling policy";
- type string;
- }
-
- leaf scaling-type {
- description
- "Type of scaling";
- type scaling-policy-type;
- }
-
- leaf enabled {
- description
- "Specifies if the scaling policy can be applied";
- type boolean;
- default true;
- }
-
- leaf scale-in-operation-type {
- description
- "Operation to be applied to check between scaling criterias to
- check if the scale in threshold condition has been met.
- Defaults to AND";
- type scaling-criteria-operation;
- default AND;
- }
-
- leaf scale-out-operation-type {
- description
- "Operation to be applied to check between scaling criterias to
- check if the scale out threshold condition has been met.
- Defauls to OR";
- type scaling-criteria-operation;
- default OR;
- }
-
- leaf threshold-time {
- description
- "The duration for which the criteria must hold true";
- type uint32;
- mandatory true;
- }
-
- leaf cooldown-time {
- description
- "The duration after a scaling-in/scaling-out action has been
- triggered, for which there will be no further optional";
- type uint32;
- mandatory true;
- }
-
- list scaling-criteria {
- description
- "list of conditions to be met for generating scaling
- requests";
- key "name";
-
- leaf name {
- type string;
- }
-
- leaf scale-in-threshold {
- description
- "Value below which scale-in requests are generated";
- type uint64;
- }
-
- leaf scale-out-threshold {
- description
- "Value above which scale-out requests are generated";
- type uint64;
- }
-
- leaf ns-monitoring-param-ref {
- description
- "Reference to the NS level monitoring parameter
- that is aggregated";
- type leafref {
- path "../../../../monitoring-param/id";
- }
- }
- }
- }
-
- list vnfd-member {
- description "List of VNFs in this scaling group";
- key "member-vnf-index-ref";
-
- leaf member-vnf-index-ref {
- description "member VNF index of this member VNF";
- type leafref {
- path "../../../constituent-vnfd/member-vnf-index";
- }
- }
-
- leaf count {
- description
- "count of this member VNF within this scaling group.
- The count allows to define the number of instances
- when a scaling action targets this scaling group";
- type uint32;
- default 1;
- }
- }
-
- leaf min-instance-count {
- description
- "Minimum instances of the scaling group which are allowed.
- These instances are created by default when the network service
- is instantiated.";
- type uint32;
- default 0;
- }
-
- leaf max-instance-count {
- description
- "Maximum instances of this scaling group that are allowed
- in a single network service. The network service scaling
- will fail, when the number of service group instances
- exceed the max-instance-count specified.";
- type uint32;
- default 10;
- }
-
- list scaling-config-action {
- description "List of scaling config actions";
- key "trigger";
-
- leaf trigger {
- description "scaling trigger";
- type scaling-trigger;
- }
-
- leaf ns-service-primitive-name-ref {
- description "Reference to the NS service primitive";
- type leafref {
- path "../../../service-primitive/name";
- }
- }
- }
- }
-
-
- list vnffgd {
- description
- "List of VNF Forwarding Graph Descriptors (VNFFGD).";
-
- key "id";
-
- leaf id {
- description
- "Identifier for the VNFFGD.";
- type string;
- }
-
- leaf name {
- description
- "VNFFGD name.";
- type string;
- }
-
- leaf short-name {
- description
- "Short name to appear as label in the UI";
- type string;
- }
-
- leaf vendor {
- description "Provider of the VNFFGD.";
- type string;
- }
-
- leaf description {
- description "Description of the VNFFGD.";
- type string;
- }
-
- leaf version {
- description "Version of the VNFFGD";
- type string;
- }
-
- list rsp {
- description
- "List of Rendered Service Paths (RSP).";
-
- key "id";
-
- leaf id {
- description
- "Identifier for the RSP.";
- type string;
- }
-
- leaf name {
- description
- "RSP name.";
- type string;
- }
-
- list vnfd-connection-point-ref {
- description
- "A list of references to connection points.";
- key "member-vnf-index-ref";
-
- leaf member-vnf-index-ref {
- description "Reference to member-vnf within constituent-vnfds";
- type leafref {
- path "../../../../constituent-vnfd/member-vnf-index";
- }
- }
-
- leaf order {
- type uint8;
- description
- "A number that denotes the order of a VNF in a chain";
- }
-
- leaf vnfd-id-ref {
- description
- "A reference to a vnfd. This is a
- leafref to path:
- ../../../../nsd:constituent-vnfd
- + [nsd:id = current()/../nsd:id-ref]
- + /nsd:vnfd-id-ref";
-
- type leafref {
- path "../../../../constituent-vnfd" +
- "[member-vnf-index = current()/../member-vnf-index-ref]" +
- "/vnfd-id-ref";
- }
- }
-
- leaf vnfd-connection-point-ref {
- description
- "A reference to a connection point name
- in a vnfd. This is a leafref to path:
- /vnfd:vnfd-catalog/vnfd:vnfd
- + [vnfd:id = current()/../nsd:vnfd-id-ref]
- + /vnfd:connection-point/vnfd:name
- NOTE: An issue with confd is preventing the
- use of xpath. Seems to be an issue with leafref
- to leafref, whose target is in a different module.
- Once that is resolved this will switched to use
- leafref";
- // TODO: Keeping as string as this needs to be
- // diffenent lvel based of if it is nsd-catalog or
- // in nsr.
- // type leafref {
- // path "../../../../../../vnfd:vnfd-catalog/vnfd:vnfd" +
- // "[vnfd:id = current()/../vnfd-id-ref]/" +
- // "vnfd:connection-point/vnfd:name";
- // }
- type string;
- }
- }
- } //rsp
-
- list classifier {
- description
- "List of classifier rules.";
-
- key "id";
-
- leaf id {
- description
- "Identifier for the classifier rule.";
- type string;
- }
-
- leaf name {
- description
- "Name of the classifier.";
- type string;
- }
-
- leaf rsp-id-ref {
- description
- "A reference to the RSP.";
- type leafref {
- path "../../rsp/id";
- }
- }
-
- leaf member-vnf-index-ref {
- description "Reference to member-vnf within constituent-vnfds";
- type leafref {
- path "../../../constituent-vnfd/member-vnf-index";
- }
- }
-
- leaf vnfd-id-ref {
- description
- "A reference to a vnfd. This is a
- leafref to path:
- ../../../nsd:constituent-vnfd
- + [nsd:id = current()/../nsd:id-ref]
- + /nsd:vnfd-id-ref";
-
- type leafref {
- path "../../../constituent-vnfd" +
- "[member-vnf-index = current()/../member-vnf-index-ref]" +
- "/vnfd-id-ref";
- }
- }
-
- leaf vnfd-connection-point-ref {
- description
- "A reference to a connection point name
- in a vnfd. This is a leafref to path:
- /vnfd:vnfd-catalog/vnfd:vnfd
- + [vnfd:id = current()/../nsd:vnfd-id-ref]
- + /vnfd:connection-point/vnfd:name
- NOTE: An issue with confd is preventing the
- use of xpath. Seems to be an issue with leafref
- to leafref, whose target is in a different module.
- Once that is resolved this will switched to use
- leafref";
- // TODO: Keeping as string as this needs to be
- // diffenent lvel based of if it is nsd-catalog or
- // in nsr.
- // type leafref {
- // path "../../../../../vnfd:vnfd-catalog/vnfd:vnfd" +
- // "[vnfd:id = current()/../vnfd-id-ref]/" +
- // "vnfd:connection-point/vnfd:name";
- // }
- type string;
- }
-
- list match-attributes {
- description
- "List of match attributes.";
-
- key "id";
-
- leaf id {
- description
- "Identifier for the classifier match attribute rule.";
- type string;
- }
-
- leaf ip-proto {
- description
- "IP Protocol.";
- type uint8;
- }
-
- leaf source-ip-address {
- description
- "Source IP address.";
- type inet:ip-address;
- }
-
- leaf destination-ip-address {
- description
- "Destination IP address.";
- type inet:ip-address;
- }
-
- leaf source-port {
- description
- "Source port number.";
- type inet:port-number;
- }
-
- leaf destination-port {
- description
- "Destination port number.";
- type inet:port-number;
- }
- //TODO: Add more match criteria
- } //match-attributes
- } // classifier
- } // vnffgd
-
- uses manotypes:ip-profile-list;
-
- list initial-service-primitive {
- description
- "Initial set of service primitives for NSD.";
- key "seq";
-
- uses manotypes:event-config;
- }
-
- list terminate-service-primitive {
- description
- "Set of service primitives during
- termination for NSD.";
- key "seq";
-
- uses manotypes:event-config;
- }
-
- uses manotypes:input-parameter-xpath;
-
- list parameter-pool {
- description
- "Pool of parameter values which must be
- pulled from during configuration";
- key "name";
-
- leaf name {
- description
- "Name of the configuration value pool";
- type string;
- }
-
- container range {
- description
- "Create a range of values to populate the pool with";
-
- leaf start-value {
- description
- "Generated pool values start at this value";
- type uint32;
- mandatory true;
- }
-
- leaf end-value {
- description
- "Generated pool values stop at this value";
- type uint32;
- mandatory true;
- }
- }
- }
-
- list key-pair {
- key "name";
- description "Used to configure the list of public keys to be injected as part
- of ns instantiation";
-
- leaf name {
- description "Name of this key pair";
- type string;
- }
-
- leaf key {
- description "Key associated with this key pair";
- type string;
- }
- }
-
- list user {
- key "name";
- description "List of users to be added through cloud-config";
-
- leaf name {
- description "Name of the user ";
- type string;
- }
-
- leaf user-info {
- description "The user name's real name";
- type string;
- }
-
- list key-pair {
- key "name";
- description "Used to configure the list of public keys to be injected as part
- of ns instantiation";
-
- leaf name {
- description "Name of this key pair";
- type string;
- }
-
- leaf key {
- description "Key associated with this key pair";
- type string;
- }
- }
- }
- }
-
- grouping nsd-vld-common {
- /* Still having issues modelling this,
- see the comments under vnfd-connection-point-ref
- */
- description
- "List of Virtual Link Descriptors.";
-
- leaf id {
- description
- "Identifier for the VLD.";
- type string;
- }
-
- leaf name {
- description
- "Virtual Link Descriptor (VLD) name.";
- type string;
- }
-
- leaf short-name {
- description
- "Short name to appear as label in the UI";
- type string;
- }
-
- leaf vendor {
- description "Provider of the VLD.";
- type string;
- }
-
- leaf description {
- description "Description of the VLD.";
- type string;
- }
-
- leaf version {
- description "Version of the VLD";
- type string;
- }
-
- leaf type {
- type manotypes:virtual-link-type;
- }
-
- leaf root-bandwidth {
- description
- "For ELAN this is the aggregate bandwidth.";
- type uint64;
- }
-
- leaf leaf-bandwidth {
- description
- "For ELAN this is the bandwidth of branches.";
- type uint64;
- }
-
- // replicate for pnfd container here
- uses manotypes:provider-network;
-
- leaf mgmt-network {
- description "Flag indicating whether this network is a VIM management network";
- type boolean;
- default false;
- }
-
- choice init-params {
- description "Extra parameters for VLD instantiation";
-
- case vim-network-ref {
- leaf vim-network-name {
- description
- "Name of network in VIM account. This is used to indicate
- pre-provisioned network name in cloud account.";
- type string;
- }
- }
-
- case vim-network-profile {
- leaf ip-profile-ref {
- description "Named reference to IP-profile object";
- type leafref {
- path "../../ip-profiles/name";
- }
- }
- }
-
- }
- }
-
- grouping monitoring-param-common {
- description
- "List of monitoring parameters from VNF's that should be
- propogated up into NSR";
-
- leaf id {
- type string;
- }
-
- leaf name {
- type string;
- }
-
- uses manotypes:monitoring-param-value;
- uses manotypes:monitoring-param-ui-data;
- uses manotypes:monitoring-param-aggregation;
- }
-}
+++ /dev/null
-
-/*
- *
- * Copyright 2016-2017 RIFT.IO Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- *
- */
-
-module nsd
-{
- namespace "urn:ietf:params:xml:ns:yang:nfvo:nsd";
- prefix "nsd";
-
- import vnfd {
- prefix "vnfd";
- }
-
- import nsd-base {
- prefix "nsd-base";
- }
-
- import mano-types {
- prefix "manotypes";
- }
-
- revision 2017-02-28 {
- description
- "Update model to support projects.";
- }
-
- revision 2014-10-27 {
- description
- "Initial revision. This YANG file defines
- the Network Service Descriptor (NSD)";
- reference
- "Derived from earlier versions of base YANG files";
- }
-
- grouping nsd-constituent-vnfd {
- list constituent-vnfd {
- description
- "List of VNFDs that are part of this
- network service.";
-
- key "member-vnf-index";
-
- leaf member-vnf-index {
- description
- "Identifier/index for the VNFD. This separate id
- is required to ensure that multiple VNFs can be
- part of single NS";
- type uint64;
- }
-
- leaf vnfd-id-ref {
- description
- "Identifier for the VNFD.";
- type leafref {
- path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id";
- }
- }
-
- leaf start-by-default {
- description
- "VNFD is started as part of the NS instantiation";
- type boolean;
- default true;
- }
- }
- }
-
- grouping nsd-vld {
- list vld {
-
- key "id";
-
- uses nsd-base:nsd-vld-common;
-
- list vnfd-connection-point-ref {
- description
- "A list of references to connection points.";
- key "member-vnf-index-ref vnfd-connection-point-ref";
-
- leaf member-vnf-index-ref {
- description "Reference to member-vnf within constituent-vnfds";
- type leafref {
- path "../../../constituent-vnfd/member-vnf-index";
- }
- }
-
- leaf vnfd-id-ref {
- description
- "A reference to a VNFD";
- type leafref {
- path "../../../constituent-vnfd" +
- "[member-vnf-index = current()/../member-vnf-index-ref]" +
- "/vnfd-id-ref";
- }
- }
-
- leaf vnfd-connection-point-ref {
- description "A reference to a connection point name";
- type leafref {
- path "/vnfd:vnfd-catalog/vnfd:vnfd" +
- "[vnfd:id = current()/../vnfd-id-ref]/" +
- "vnfd:connection-point/vnfd:name";
- }
- }
- }
- }
- }
-
- grouping nsd-vnf-dependency {
- list vnf-dependency {
- description
- "List of VNF dependencies.";
- key vnf-source-ref;
- leaf vnf-source-ref {
- type leafref {
- path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id";
- }
- }
- leaf vnf-depends-on-ref {
- description
- "Reference to VNF that sorce VNF depends.";
- type leafref {
- path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id";
- }
- }
- }
- }
-
- grouping nsd-placement-groups {
- list placement-groups {
- description "List of placement groups at NS level";
-
- key "name";
- uses manotypes:placement-group-info;
-
- list member-vnfd {
- description
- "List of VNFDs that are part of this placement group";
-
- key "member-vnf-index-ref";
-
- leaf member-vnf-index-ref {
- description "Member VNF index of this member VNF";
- type leafref {
- path "../../../constituent-vnfd/member-vnf-index";
- }
- }
-
- leaf vnfd-id-ref {
- description
- "Identifier for the VNFD.";
- type leafref {
- path "../../../constituent-vnfd" +
- "[member-vnf-index = current()/../member-vnf-index-ref]" +
- "/vnfd-id-ref";
- }
- }
- }
- }
- }
-
- grouping nsd-monitoring-param {
-
- list monitoring-param {
- key id;
-
- uses nsd-base:monitoring-param-common;
-
- list vnfd-monitoring-param {
- description "A list of VNFD monitoring params";
- key "member-vnf-index-ref vnfd-monitoring-param-ref";
-
- leaf vnfd-id-ref {
- description
- "A reference to a VNFD. This is a leafref";
-
- type leafref {
- path "../../../constituent-vnfd" +
- "[member-vnf-index = current()/../member-vnf-index-ref]" +
- "/vnfd-id-ref";
- }
- }
-
- leaf vnfd-monitoring-param-ref {
- description "A reference to the VNFD monitoring param";
- type leafref {
- path "/vnfd:vnfd-catalog/vnfd:vnfd"
- + "[vnfd:id = current()/../vnfd-id-ref]"
- + "/vnfd:monitoring-param/vnfd:id";
- }
- }
-
- leaf member-vnf-index-ref {
- description
- "Mandatory reference to member-vnf within constituent-vnfds";
- type leafref {
- path "../../../constituent-vnfd/member-vnf-index";
- }
- }
- }
- }
- }
-
- grouping nsd-service-primitive {
- list service-primitive {
- description
- "Network service level service primitives.";
-
- key "name";
-
- leaf name {
- description
- "Name of the service primitive.";
- type string;
- }
-
- list parameter {
- description
- "List of parameters for the service primitive.";
-
- key "name";
- uses manotypes:primitive-parameter;
- }
-
- uses manotypes:ui-primitive-group;
-
- list vnf-primitive-group {
- description
- "List of service primitives grouped by VNF.";
-
- key "member-vnf-index-ref";
- leaf member-vnf-index-ref {
- description
- "Reference to member-vnf within constituent-vnfds";
- type leafref {
- path "../../../constituent-vnfd/member-vnf-index";
- }
- }
-
- leaf vnfd-id-ref {
- description
- "A reference to a VNFD. This is a leafref";
-
- type leafref {
- path "../../../constituent-vnfd" +
- "[member-vnf-index = current()/../member-vnf-index-ref]" + "/vnfd-id-ref";
- }
- }
-
- leaf vnfd-name {
- description
- "Name of the VNFD";
- type leafref {
- path "/vnfd:vnfd-catalog/vnfd:vnfd"
- + "[vnfd:id = current()/../vnfd-id-ref]"
- + "/vnfd:name";
- }
- }
-
- list primitive {
- key "index";
-
- leaf index {
- description "Index of this primitive";
- type uint32;
- }
-
- leaf name {
- description "Name of the primitive in the VNF primitive ";
- type string;
- }
- }
- }
-
- leaf user-defined-script {
- description
- "A user defined script.";
- type string;
- }
- }
- }
-
- container nsd-catalog {
-
- list nsd {
- key id;
-
- uses nsd-base:nsd-descriptor-common;
-
- uses nsd-vld;
-
- uses nsd-constituent-vnfd;
-
- uses nsd-placement-groups;
-
- uses nsd-vnf-dependency;
-
- uses nsd-monitoring-param;
-
- uses nsd-service-primitive;
- }
- }
-}
+++ /dev/null
-
-/*
- *
- * Copyright 2016-2017 RIFT.IO Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- *
- */
-
-module nsr
-{
- namespace "urn:ietf:params:xml:ns:yang:nfvo:nsr";
- prefix "nsr";
-
- import vlr {
- prefix "vlr";
- }
-
- import nsd-base {
- prefix "nsd-base";
- }
-
- import project-nsd {
- prefix "project-nsd";
- }
-
- import project-vnfd {
- prefix "project-vnfd";
- }
-
- import vnfr {
- prefix "vnfr";
- }
-
- import ietf-inet-types {
- prefix "inet";
- }
-
- import ietf-yang-types {
- prefix "yang";
- }
-
- import mano-types {
- prefix "manotypes";
- }
-
- import rw-project {
- prefix "rw-project";
- }
-
- revision 2017-02-08 {
- description
- "Update model to support projects.";
- }
-
- revision 2015-09-10 {
- description
- "Initial revision. This YANG file defines
- the Network Service Record (NSR)";
- reference
- "Derived from earlier versions of base YANG files";
- }
-
- typedef vnffgr-operational-status {
- type enumeration {
- enum init;
- enum running;
- enum terminate;
- enum terminated;
- enum failed;
- }
- }
-
- typedef ns-operational-status {
- type enumeration {
- enum init;
- enum vl-init-phase;
- enum vnf-init-phase;
- enum running;
- enum terminate;
- enum vnf-terminate-phase;
- enum vl-terminate-phase;
- enum terminated;
- enum failed;
- enum scaling-out;
- enum scaling-in;
- enum vl-instantiate;
- enum vl-terminate;
- }
- }
-
- typedef config-states {
- type enumeration {
- enum init;
- enum configuring;
- enum config_not_needed;
- enum configured;
- enum failed;
- enum terminate;
- }
- }
-
- typedef trigger-type {
- type enumeration {
- enum ns-primitive;
- enum vnf-primitive;
- }
- }
-
- grouping cloud-config {
- description "List of cloud config parameters";
-
- list ssh-authorized-key {
- key "key-pair-ref";
-
- description "List of authorized ssh keys as part of cloud-config";
-
- leaf key-pair-ref {
- description "A reference to the key pair entry in the global key pair table";
- type leafref {
- path "../../../../key-pair/name";
- }
- }
- }
- list user {
- key "name";
- description "Used to configure the list of public keys to be injected as part
- of ns instantiation";
- leaf name {
- description "Name of this key pair";
- type string;
- }
- leaf user-info {
- description "The user name's real name";
- type string;
- }
- list ssh-authorized-key {
- key "key-pair-ref";
-
- description "Used to configure the list of public keys to be injected as part
- of ns instantiation";
-
- leaf key-pair-ref {
- description "A reference to the key pair entry in the global key pair table";
- type leafref {
- path "../../../../../key-pair/name";
- }
- }
- }
- }
- }
-
- augment "/rw-project:project" {
- list key-pair {
- key "name";
- description "Used to configure the list of public keys to be injected as part
- of ns instantiation";
- leaf name {
- description "Name of this key pair";
- type string;
- }
-
- leaf key {
- description "Key associated with this key pair";
- type string;
- }
- }
- }
-
- grouping event-service-primitive {
- leaf seq {
- description
- "Sequence number for the service primitive.";
- type uint64;
- }
-
- leaf name {
- description
- "Name of the service primitive.";
- type string;
- mandatory "true";
- }
-
- leaf user-defined-script {
- description
- "A user defined script.";
- type string;
- }
-
- list parameter {
- key "name";
- leaf name {
- type string;
- }
-
- leaf value {
- type string;
- }
- }
- }
-
- augment "/rw-project:project" {
- container ns-instance-config {
-
- list nsr {
- key "id";
- unique "name";
-
- leaf id {
- description "Identifier for the NSR.";
- type yang:uuid;
- }
-
- leaf name {
- description "NSR name.";
- type string;
- }
-
- leaf short-name {
- description "NSR short name.";
- type string;
- }
-
- leaf description {
- description "NSR description.";
- type string;
- }
-
- leaf admin-status {
- description
- "This is the administrative status of the NS instance";
-
- type enumeration {
- enum ENABLED;
- enum DISABLED;
- }
- }
-
- container nsd {
- description "NS descriptor used to instantiate this NS";
-
- uses nsd-base:nsd-descriptor-common;
-
- uses project-nsd:nsr-nsd-vld;
-
- uses project-nsd:nsr-nsd-constituent-vnfd;
-
- uses project-nsd:nsr-nsd-placement-groups;
-
- uses project-nsd:nsr-nsd-vnf-dependency;
-
- uses project-nsd:nsr-nsd-monitoring-param;
-
- uses project-nsd:nsr-nsd-service-primitive;
- }
- uses ns-instance-config-params;
- }
- }
- }
-
- grouping ns-instance-config-params-common {
- uses manotypes:input-parameter;
-
- list scaling-group {
- description "List of ns scaling group instances";
- key "scaling-group-name-ref";
-
- leaf scaling-group-name-ref {
- description "name of the scaling group
- leafref path ../nsd/scaling-group-descriptor/name";
- type string;
- }
-
- list instance {
- description "The instance of the scaling group";
- key "id";
- leaf id {
- description "Scaling group instance uuid";
- type uint16;
- }
- }
- }
-
- list nsd-placement-group-maps {
- description
- "Mapping from mano-placement groups construct from NSD to cloud
- platform placement group construct";
-
- key "placement-group-ref";
-
- leaf placement-group-ref {
- description
- "Reference for NSD placement group";
- // type leafref {
- // path "../../nsd/placement-groups/name";
- // }
- type string;
- }
- uses manotypes:placement-group-input;
- }
- }
-
- grouping ns-instance-config-params {
- uses ns-instance-config-params-common;
-
- list vnfd-placement-group-maps {
- description
- "Mapping from mano-placement groups construct from VNFD to cloud
- platform placement group construct";
-
- key "placement-group-ref vnfd-id-ref";
-
- leaf vnfd-id-ref {
- description
- "A reference to a vnfd. This is a
- leafref to path:
- ../../../../project-nsd:constituent-vnfd
- + [id = current()/../id-ref]
- + /project-nsd:vnfd-id-ref
- NOTE: An issue with confd is preventing the
- use of xpath. Seems to be an issue with leafref
- to leafref, whose target is in a different module.
- Once that is resolved this will switched to use
- leafref";
- type yang:uuid;
- }
-
- leaf placement-group-ref {
- description
- "A reference to VNFD placement group";
- type leafref {
- path "../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd[project-vnfd:id = " +
- "current()/../vnfd-id-ref]/project-vnfd:placement-groups/project-vnfd:name";
- }
- }
-
- uses manotypes:placement-group-input;
- }
-
- uses cloud-config;
- }
-
- grouping vnffgr {
-
- list vnffgr {
- key "id";
-
- leaf id {
- description "Identifier for the VNFFGR.";
- type yang:uuid;
- }
-
- leaf vnffgd-id-ref {
- description "VNFFG descriptor id reference";
- type leafref {
- path "../../../../ns-instance-config/nsr"
- + "[id=current()/../../ns-instance-config-ref]"
- + "/nsd/vnffgd/id";
- }
- }
-
- leaf vnffgd-name-ref {
- description "VNFFG descriptor name reference";
- type leafref {
- path "../../../../ns-instance-config/nsr"
- + "[id=current()/../../ns-instance-config-ref]"
- + "/nsd/vnffgd"
- + "[id=current()/../vnffgd-id-ref]"
- + "/name";
- }
- }
-
- leaf sdn-account {
- description
- "The SDN account to use when requesting resources for
- this vnffgr";
- type string;
- }
-
- leaf cloud-account {
- description "Cloud Account in which NSR is instantiated";
- type string;
- }
-
- leaf operational-status {
- description
- "The operational status of the VNFFGR instance
- init : The VNFFGR has just started.
- running : The VNFFGR is in running state.
- terminate : The VNFFGR is being terminated.
- terminated : The VNFFGR is in the terminated state.
- failed : The VNFFGR instantiation failed
- ";
- type vnffgr-operational-status;
- }
-
- list rsp {
- key "id";
-
- leaf id {
- description
- "Identifier for the RSP.";
- type yang:uuid;
- }
-
- leaf name {
- description
- "Name for the RSP";
- type string;
- }
-
- leaf rsp-id {
- description
- "Returned Identifier for the RSP.";
- type yang:uuid;
- }
-
- leaf vnffgd-rsp-id-ref {
- description
- "Identifier for the VNFFG Descriptor RSP reference";
- type leafref {
- path "../../../../../ns-instance-config/nsr"
- + "[id=current()/../../../ns-instance-config-ref]"
- + "/nsd/vnffgd"
- + "[id=current()/../../vnffgd-id-ref]"
- + "/rsp/id";
- }
- }
-
- leaf vnffgd-rsp-name-ref {
- description
- "Name for the VNFFG Descriptor RSP reference";
- type leafref {
- path "../../../../../ns-instance-config/nsr"
- + "[id=current()/../../../ns-instance-config-ref]"
- + "/nsd/vnffgd"
- + "[id=current()/../../vnffgd-id-ref]"
- + "/rsp"
- + "[id=current()/../vnffgd-rsp-id-ref]"
- + "/name";
- }
- }
-
- leaf classifier-name {
- type string;
- }
-
- leaf path-id {
- description
- "Unique Identifier for the service path";
- type uint32;
- }
-
- list vnfr-connection-point-ref {
- key "hop-number";
- leaf hop-number {
- description
- "Monotonically increasing number to show service path hop
- order";
- type uint8;
- }
- leaf service-function-type {
- description
- "Type of Service Function.
- NOTE: This needs to map with Service Function Type in ODL to
- support VNFFG. Service Function Type is mandatory param in ODL
- SFC. This is temporarily set to string for ease of use";
- type string;
- }
-
- leaf member-vnf-index-ref {
- type uint64;
- }
- leaf vnfd-id-ref {
- description
- "Reference to VNF Descriptor Id";
- type string;
- }
- leaf vnfr-id-ref {
- description
- "A reference to a vnfr id";
- type leafref {
- path "../../../../../../vnfr:vnfr-catalog/vnfr:vnfr/vnfr:id";
- }
- }
- leaf vnfr-name-ref {
- description
- "A reference to a vnfr name";
- type leafref {
- path "../../../../../../vnfr:vnfr-catalog/vnfr:vnfr/vnfr:name";
- }
- }
- leaf vnfr-connection-point-ref {
- description
- "A reference to a vnfr connection point.";
- type leafref {
- path "../../../../../../vnfr:vnfr-catalog/vnfr:vnfr"
- + "[vnfr:id = current()/../vnfr-id-ref]"
- + "/vnfr:connection-point/vnfr:name";
- }
- }
- leaf service-index {
- description
- "Location within the service path";
- type uint8;
- }
- container connection-point-params {
- leaf mgmt-address {
- type inet:ip-address;
- }
- leaf name {
- type string;
- }
- leaf port-id {
- type string;
- }
- leaf vm-id {
- type string;
- }
- leaf address {
- type inet:ip-address;
- }
- leaf port {
- type inet:port-number;
- }
- }
-
- container service-function-forwarder {
- leaf name {
- description
- "Service Function Forwarder name";
- type string;
- }
- leaf ip-address {
- description
- "Data Plane IP Address of the SFF";
- type inet:ip-address;
- }
- leaf port {
- description
- "Data Plane Port of the SFF";
- type inet:port-number;
- }
- }
- }
- }
-
- list classifier {
- key "id";
-
- leaf id {
- description
- "Identifier for the classifier rule.";
- type yang:uuid;
- }
- leaf name {
- description
- "Name of the classifier.";
- type string;
- }
- leaf-list classifier-id {
- description
- "Returned Identifier for the classifier rule.";
- type yang:uuid;
- }
- leaf rsp-id-ref {
- description
- "A reference to the RSP.";
- type leafref {
- path "../../rsp/id";
- }
- }
- leaf rsp-name {
- description
- "Name for the RSP";
- type string;
- }
- leaf vnfr-id-ref {
- description
- "A reference to a vnfr id";
- type leafref {
- path "../../../../../vnfr:vnfr-catalog/vnfr:vnfr/vnfr:id";
- }
- }
- leaf vnfr-name-ref {
- description
- "A reference to a vnfr name";
- type leafref {
- path "../../../../../vnfr:vnfr-catalog/vnfr:vnfr/vnfr:name";
- }
- }
- leaf vnfr-connection-point-ref {
- description
- "A reference to a vnfr connection point.";
- type leafref {
- path "../../../../../vnfr:vnfr-catalog/vnfr:vnfr"
- + "[vnfr:id = current()/../vnfr-id-ref]"
- + "/vnfr:connection-point/vnfr:name";
- }
- }
- leaf port-id {
- type string;
- }
- leaf vm-id {
- type string;
- }
- leaf ip-address {
- type string;
- }
- leaf sff-name {
- type string;
- }
- }
- }
- }
-
- augment "/rw-project:project" {
- container ns-instance-opdata {
- config false;
-
- list nsr {
- key "ns-instance-config-ref";
-
- leaf ns-instance-config-ref {
- type leafref {
- path "../../../ns-instance-config/nsr/id";
- }
- // type yang:uuid;
- }
-
- leaf name-ref {
- description "Network service name reference";
- type leafref {
- path "../../../ns-instance-config/nsr" +
- "[id=current()/../ns-instance-config-ref]" +
- "/name";
- }
- }
-
- leaf nsd-ref {
- description "Network service descriptor id reference";
- type leafref {
- path "../../../ns-instance-config/nsr"
- + "[id=current()/../ns-instance-config-ref]"
- + "/nsd/id";
- }
- }
-
- leaf nsd-name-ref {
- description "Network service descriptor name reference";
- type leafref {
- path "../../../ns-instance-config/nsr"
- + "[id=current()/../ns-instance-config-ref]"
- + "/nsd/name";
- }
- }
-
- leaf create-time {
- description
- "Creation timestamp of this Network Service.
- The timestamp is expressed as seconds
- since unix epoch - 1970-01-01T00:00:00Z";
-
- type uint32;
- }
-
- leaf uptime {
- description
- "Active period of this Network Service.
- Uptime is expressed in seconds";
-
- type uint32;
- }
-
- list connection-point {
- description
- "List for external connection points.
- Each NS has one or more external connection points.
- As the name implies that external connection points
- are used for connecting the NS to other NS or to
- external networks. Each NS exposes these connection
- points to the orchestrator. The orchestrator can
- construct network service chains by connecting the
- connection points between different NS.";
-
- key "name";
- leaf name {
- description
- "Name of the NS connection point.";
- type string;
- }
-
- leaf type {
- description
- "Type of the connection point.";
- type manotypes:connection-point-type;
- }
- }
-
- list vlr {
- key "vlr-ref";
- leaf vlr-ref {
- description
- "Reference to a VLR record in the VLR catalog";
- type leafref {
- path "../../../../vlr:vlr-catalog/vlr:vlr/vlr:id";
- }
- }
-
-
- list vnfr-connection-point-ref {
- description
- "A list of references to connection points.";
- key "vnfr-id";
-
- leaf vnfr-id {
- description "A reference to a vnfr";
- type leafref {
- path "../../../../../vnfr:vnfr-catalog/vnfr:vnfr/vnfr:id";
- }
- }
-
- leaf connection-point {
- description
- "A reference to a connection point name in a vnfr";
- type leafref {
- path "../../../../../vnfr:vnfr-catalog/vnfr:vnfr"
- + "[vnfr:id = current()/../vnfr-id]"
- + "/vnfr:connection-point/vnfr:name";
- }
- }
- }
- }
-
- list constituent-vnfr-ref {
- description
- "List of VNFRs that are part of this
- network service.";
- key "vnfr-id";
-
- leaf vnfr-id {
- description
- "Reference to the VNFR id
- This should be a leafref to /vnfr:vnfr-catalog/vnfr:vnfr/vnfr:id
- But due to confd bug (RIFT-9451), changing to string.";
- type string;
- }
- }
-
- list scaling-group-record {
- description "List of scaling group records";
- key "scaling-group-name-ref";
-
- leaf scaling-group-name-ref {
- description "name of the scaling group";
- type leafref {
- path "../../../../ns-instance-config/nsr"
- + "[id=current()/../../ns-instance-config-ref]"
- + "/nsd/scaling-group-descriptor/name";
- }
- }
-
- list instance {
- description "Reference to scaling group instance record";
- key "instance-id";
- leaf instance-id {
- description "Scaling group instance id";
- type uint16;
- }
-
- leaf is-default {
- description "Flag indicating whether this instance was part of
- default scaling group (and thus undeletable)";
- type boolean;
- }
-
- leaf op-status {
- description
- "The operational status of the NS instance
- init : The scaling group has just started.
- vnf-init-phase : The VNFs in the scaling group are being instantiated.
- running : The scaling group is in running state.
- terminate : The scaling group is being terminated.
- vnf-terminate-phase : The VNFs in the scaling group are being terminated.
- terminated : The scaling group is in the terminated state.
- failed : The scaling group instantiation failed.
- ";
-
- type enumeration {
- enum init;
- enum vnf-init-phase;
- enum running;
- enum terminate;
- enum vnf-terminate-phase;
- enum terminated;
- enum failed;
- }
- }
-
- leaf config-status {
- description
- "The configuration status of the scaling group instance
- configuring : At least one of the VNFs in this scaling group instance
- is in configuring state
- configured : All the VNFs in this scaling group instance are
- configured or config-not-needed state
- failed : Configuring this scaling group instance failed
- ";
- type config-states;
- }
-
- leaf error-msg {
- description
- "Reason for failure in configuration of this scaling instance";
- type string;
- }
-
- leaf create-time {
- description
- "Creation timestamp of this scaling group record.
- The timestamp is expressed as seconds
- since unix epoch - 1970-01-01T00:00:00Z";
-
- type uint32;
- }
-
- leaf-list vnfrs {
- description "Reference to VNFR within the scale instance";
- type leafref {
- path "../../../constituent-vnfr-ref/vnfr-id";
- }
- }
- }
- }
-
- uses vnffgr;
-
- leaf operational-status {
- description
- "The operational status of the NS instance
- init : The network service has just started.
- vl-init-phase : The VLs in the NS are being instantiated.
- vnf-init-phase : The VNFs in the NS are being instantiated.
- running : The NS is in running state.
- terminate : The NS is being terminated.
- vnf-terminate-phase : The NS is terminating the VNFs in the NS.
- vl-terminate-phase : The NS is terminating the VLs in the NS.
- terminated : The NS is in the terminated state.
- failed : The NS instantiation failed.
- scaling-out : The NS is scaling out
- scaling-in : The NS is scaling in
- vl-instantiate : The NS is initiating a new VL
- vl-terminate : The NS is terminating a VL
- ";
-
- type ns-operational-status;
- }
-
- leaf config-status {
- description
- "The configuration status of the NS instance
- configuring: At least one of the VNFs in this instance is in configuring state
- configured: All the VNFs in this NS instance are configured or config-not-needed state
- ";
- type config-states;
- }
-
- list service-primitive {
- description
- "Network service level service primitives.";
-
- key "name";
-
- leaf name {
- description
- "Name of the service primitive.";
- type string;
- }
-
- list parameter {
- description
- "List of parameters for the service primitive.";
-
- key "name";
- uses manotypes:primitive-parameter;
- }
-
- uses manotypes:ui-primitive-group;
-
- list vnf-primitive-group {
- description
- "Reference to member-vnf within constituent-vnfds";
-
- key "member-vnf-index-ref";
- leaf member-vnf-index-ref {
- description
- "Reference to member-vnf within constituent-vnfds";
- type uint64;
- }
-
- leaf vnfd-id-ref {
- description
- "A reference to a vnfd. This is a
- leafref to path:
- ../../../../nsd:constituent-vnfd
- + [nsd:id = current()/../nsd:id-ref]
- + /nsd:vnfd-id-ref
- NOTE: An issue with confd is preventing the
- use of xpath. Seems to be an issue with leafref
- to leafref, whose target is in a different module.
- Once that is resovled this will switched to use
- leafref";
-
- type string;
- }
-
- leaf vnfd-name {
- description
- "Name of the VNFD";
- type string;
- }
-
- list primitive {
- key "index";
-
- leaf index {
- description "Index of this primitive";
- type uint32;
- }
-
- leaf name {
- description "Name of the primitive in the VNF primitive ";
- type string;
- }
- }
- }
-
- leaf user-defined-script {
- description
- "A user defined script.";
- type string;
- }
- }
-
- list initial-service-primitive {
- description
- "Initial set of service primitives for NSD.";
- key "seq";
-
- uses event-service-primitive;
- }
-
- list terminate-service-primitive {
- description
- "Set of service primitives to
- execute during termination of NSD.";
- key "seq";
-
- uses event-service-primitive;
- }
-
- list monitoring-param {
- description
- "List of NS level params.";
- key "id";
-
- uses manotypes:monitoring-param-value;
- uses manotypes:monitoring-param-ui-data;
- uses manotypes:monitoring-param-aggregation;
-
- leaf id {
- type string;
- }
-
- leaf name {
- type string;
- }
-
- leaf nsd-mon-param-ref {
- description "Reference to the NSD monitoring param descriptor
- that produced this result";
- // TODO: Fix leafref
- type leafref {
- path "../../../../project-nsd:nsd-catalog/project-nsd:nsd" +
- "[project-nsd:id = current()/../../nsd-ref]" +
- "/project-nsd:monitoring-param/project-nsd:id";
- }
- }
-
- list vnfr-mon-param-ref {
- description "A list of VNFR monitoring params associated with this monp";
- key "vnfr-id-ref vnfr-mon-param-ref";
-
- leaf vnfr-id-ref {
- description
- "A reference to a vnfr. This is a
- leafref to path:
- /vnfr:vnfr-catalog/vnfr:vnfr/vnfr:id";
-
- type yang:uuid;
- }
-
- leaf vnfr-mon-param-ref {
- description "A reference to the VNFR monitoring param";
- type leafref {
- path "../../../../../vnfr:vnfr-catalog/vnfr:vnfr"
- + "[vnfr:id = current()/../vnfr-id-ref]"
- + "/vnfr:monitoring-param/vnfr:id";
- }
- }
- }
- }
-
- list config-agent-job {
- key "job-id";
-
- leaf job-id {
- description "config agent job Identifier for the NS.";
- type uint64;
- }
-
- leaf job-name {
- description "Config agent job name";
- type string;
- }
-
- leaf job-status {
- description
- "Job status to be set based on each VNF primitive execution,
- pending - if at least one VNF is in pending state
- and remaining VNFs are in success state.
- Success - if all VNF executions are in success state
- failure - if one of the VNF executions is failure";
- type enumeration {
- enum pending;
- enum success;
- enum failure;
- }
- }
-
- leaf triggered-by {
- description "The primitive is triggered from NS or VNF level";
- type trigger-type;
- }
-
- leaf create-time {
- description
- "Creation timestamp of this Config Agent Job.
- The timestamp is expressed as seconds
- since unix epoch - 1970-01-01T00:00:00Z";
-
- type uint32;
- }
-
- leaf job-status-details {
- description "Config agent job status details, in case of errors";
- type string;
- }
-
- uses manotypes:primitive-parameter-value;
-
- list parameter-group {
- description
- "List of NS Primitive parameter groups";
- key "name";
- leaf name {
- description
- "Name of the parameter.";
- type string;
- }
-
- uses manotypes:primitive-parameter-value;
- }
-
- list vnfr {
- key "id";
- leaf id {
- description "Identifier for the VNFR.";
- type yang:uuid;
- }
- leaf vnf-job-status {
- description
- "Job status to be set based on each VNF primitive execution,
- pending - if at least one primitive is in pending state
- and remaining primitives are in success state.
- Success - if all primitive executions are in success state
- failure - if one of the primitive executions is failure";
- type enumeration {
- enum pending;
- enum success;
- enum failure;
- }
- }
-
- list primitive {
- key "name";
- leaf name {
- description "the name of the primitive";
- type string;
- }
-
- uses manotypes:primitive-parameter-value;
-
- leaf execution-id {
- description "Execution id of the primitive";
- type string;
- }
- leaf execution-status {
- description "status of the Execution";
- type enumeration {
- enum pending;
- enum success;
- enum failure;
- }
- }
- leaf execution-error-details {
- description "Error details if execution-status is failure";
- type string;
- }
- }
- }
- }
- }
- }
- }
-
- grouping rpc-common {
- uses manotypes:rpc-project-name;
-
- leaf nsr_id_ref {
- description "Reference to NSR ID ref";
- type leafref {
- path "/rw-project:project[rw-project:name=current()/.." +
- "/nsr:project-name]/nsr:ns-instance-config/nsr:nsr/nsr:id";
- }
- mandatory true;
- }
- }
-
- rpc get-ns-service-primitive-values {
- description "Get the service primitive parameter values";
-
- input {
- leaf name {
- description "Name of the NS service primitive group";
- mandatory true;
- type string;
- }
-
- uses rpc-common;
- }
-
- output {
- list ns-parameter {
- description "Automatically generated parameter";
- key "name";
-
- leaf name {
- description "Parameter name which should be pulled from a parameter pool";
- type string;
- }
- leaf value {
- description "Automatically generated value";
- type string;
- }
- }
-
- list ns-parameter-group {
- description "Automatically generated parameters in parameter group";
- key "name";
- leaf name {
- description "Parameter group name";
- type string;
- }
- list parameter {
- description "Automatically generated group parameter";
- key "name";
-
- leaf name {
- description "Parameter name which should be pulled from a parameter pool";
- type string;
- }
- leaf value {
- description "Automatically generated value";
- type string;
- }
- }
- }
-
- list vnf-primitive-group {
- description
- "List of service primitives grouped by VNF.";
-
- key "member-vnf-index-ref";
- leaf member-vnf-index-ref {
- description
- "Reference to member-vnf within constituent-vnfds";
- type uint64;
- }
-
- leaf vnfd-id-ref {
- description
- "A reference to a vnfd. This is a
- leafref to path:
- ../../../../project-nsd:constituent-vnfd
- + [project-nsd:id = current()/../project-nsd:id-ref]
- + /project-nsd:vnfd-id-ref
- NOTE: An issue with confd is preventing the
- use of xpath. Seems to be an issue with leafref
- to leafref, whose target is in a different module.
- Once that is resolved this will switched to use
- leafref";
-
- type string;
- }
-
- list primitive {
- key "index";
- leaf index {
- description "Index of this primitive";
- type uint32;
- }
-
- leaf name {
- description "Name of the primitive associated with a value pool";
- type string;
- }
-
- list parameter {
- description "Automatically generated parameter";
- key "name";
-
- leaf name {
- description "Parameter name which should be pulled from a parameter pool";
- type string;
- }
- leaf value {
- description "Automatically generated value";
- type string;
- }
- }
- }
- }
- }
- }
-
- rpc exec-ns-service-primitive {
- description "Executes a NS service primitive or script";
-
- input {
- leaf name {
- description "Name of the primitive";
- type string;
- }
-
- uses rpc-common;
-
- leaf triggered-by {
- description "The primitive is triggered from NS or VNF level";
- type trigger-type;
- default ns-primitive;
- }
-
- uses manotypes:primitive-parameter-value;
-
- list parameter-group {
- description
- "List of NS Primitive parameter groups";
- key "name";
- leaf name {
- description
- "Name of the parameter.";
- type string;
- }
-
- uses manotypes:primitive-parameter-value;
- }
-
- list vnf-list {
- description
- "List of VNFs whose primitives are being set.";
- key "member_vnf_index_ref";
-
- leaf member_vnf_index_ref {
- description "Member VNF index";
- type uint64;
- }
-
- leaf vnfr-id-ref {
- description
- "A reference to a vnfr. This is a
- leafref to path";
- type yang:uuid;
- }
-
- list vnf-primitive {
- description
- "List of service primitives supported by the
- configuration agent for this VNF.";
- key "index";
-
- leaf index {
- description
- "index of the service primitive.";
- type uint32;
- }
- leaf name {
- description
- "Name of the service primitive.";
- type string;
- }
-
- uses manotypes:primitive-parameter-value;
- }
- }
- leaf user-defined-script {
- description
- "A user defined script.";
- type string;
- }
- }
- output {
- leaf job-id {
- description "Job identifier for this RPC";
- type uint64;
- }
-
- leaf name {
- description "Name of the service primitive";
- type string;
- }
-
- uses rpc-common;
-
- leaf triggered-by {
- description "The primitive is triggered from NS or VNF level";
- type trigger-type;
- }
-
- leaf create-time {
- description
- "Creation timestamp of this config agent JOB.
- The timestamp is expressed as seconds
- since unix epoch - 1970-01-01T00:00:00Z";
-
- type uint32;
- }
-
- leaf job-status-details {
- description "Job status details, in case of any errors";
- type string;
- }
-
- uses manotypes:primitive-parameter-value;
-
- list parameter-group {
- description
- "List of NS Primitive parameter groups";
- key "name";
- leaf name {
- description
- "Name of the parameter.";
- type string;
- }
-
- uses manotypes:primitive-parameter-value;
- }
-
- list vnf-out-list {
- description
- "List of VNFs whose primitives were set.";
- key "member_vnf_index_ref";
-
- leaf member_vnf_index_ref {
- description "Member VNF index";
- type uint64;
- }
- leaf vnfr-id-ref {
- description
- "A reference to a vnfr. This is a
- leafref to path";
- type yang:uuid;
- }
-
- list vnf-out-primitive {
- description
- "List of service primitives supported by the
- configuration agent for this VNF.";
- key "index";
-
- leaf index {
- description
- "index of the service primitive.";
- type uint32;
- }
-
- leaf name {
- description
- "Name of the service primitive.";
- type string;
- }
-
- uses manotypes:primitive-parameter-value;
-
- leaf execution-id {
- description "Execution id of this primitive";
- type string;
- }
-
- leaf execution-status {
- description "Status of the execution of this primitive";
- type string;
- }
-
- leaf execution-error-details {
- description "Error details if execution-status is failed";
- type string;
- }
- }
- }
- }
- }
-
- rpc exec-scale-in {
- description "Executes scale out request";
-
- input {
- uses rpc-common;
-
- leaf scaling-group-name-ref {
- description "name of the scaling group";
- type leafref {
- path "/rw-project:project[rw-project:name=current()/.." +
- "/nsr:project-name]/nsr:ns-instance-config/nsr:nsr" +
- "[nsr:id=current()/../nsr:nsr_id_ref]/nsr:nsd" +
- "/nsr:scaling-group-descriptor/nsr:name";
- }
- mandatory true;
- }
-
- leaf instance-id {
- description "id of the scaling group";
- type leafref {
- path "/rw-project:project[rw-project:name=current()/.." +
- "/nsr:project-name]/nsr:ns-instance-config/nsr:nsr" +
- "[nsr:id=current()/../nsr:nsr_id_ref]" +
- "/nsr:scaling-group[nsr:scaling-group-name-ref=current()/.." +
- "/nsr:scaling-group-name-ref]/nsr:instance/nsr:id";
- }
- mandatory true;
- }
-
-
- }
- output {
- leaf instance-id {
- description "id of the scaling group";
- type uint64;
- }
- }
- }
-
- rpc exec-scale-out {
- description "Executes scale out request";
-
- input {
- uses rpc-common;
-
- leaf scaling-group-name-ref {
- description "name of the scaling group";
- type leafref {
- path "/rw-project:project[rw-project:name=current()/.." +
- "/nsr:project-name]/nsr:ns-instance-config/nsr:nsr" +
- "[nsr:id=current()/../nsr:nsr_id_ref]/nsr:nsd" +
- "/nsr:scaling-group-descriptor/nsr:name";
- }
- mandatory true;
- }
-
- leaf instance-id {
- description "id of the scaling group";
- type uint64;
- }
- }
-
- output {
- leaf instance-id {
- description "id of the scaling group";
- type uint64;
- }
- }
- }
-
- rpc start-network-service {
- description "Start the network service";
- input {
- leaf name {
- mandatory true;
- description "Name of the Network Service";
- type string;
- }
-
- uses manotypes:rpc-project-name;
-
- leaf nsd_id_ref {
- description "Reference to NSD ID ref";
- type leafref {
- path "/rw-project:project[rw-project:name=current()/.." +
- "/project-name]/project-nsd:nsd-catalog/project-nsd:nsd/project-nsd:id";
- }
- }
- uses ns-instance-config-params-common;
-
- list vnfd-placement-group-maps {
- description
- "Mapping from mano-placement groups construct from VNFD to cloud
- platform placement group construct";
-
- key "placement-group-ref vnfd-id-ref";
-
- leaf vnfd-id-ref {
- description
- "A reference to a vnfd. This is a
- leafref to path:
- ../../../../project-nsd:constituent-vnfd
- + [id = current()/../project-nsd:id-ref]
- + /project-nsd:vnfd-id-ref
- NOTE: An issue with confd is preventing the
- use of xpath. Seems to be an issue with leafref
- to leafref, whose target is in a different module.
- Once that is resovled this will switched to use
- leafref";
- type yang:uuid;
- }
-
- leaf placement-group-ref {
- description
- "A reference to VNFD placement group";
- type leafref {
- path "/rw-project:project[rw-project:name=current()/" +
- "../../project-name]/project-vnfd:vnfd-catalog/project-vnfd:vnfd[project-vnfd:id = " +
- "current()/../vnfd-id-ref]/project-vnfd:placement-groups/project-vnfd:name";
- }
- }
-
- uses manotypes:placement-group-input;
-
- list ssh-authorized-key {
- key "key-pair-ref";
-
- description "List of authorized ssh keys as part of cloud-config";
-
- leaf key-pair-ref {
- description "A reference to the key pair entry in the global key pair table";
- type leafref {
- path "/rw-project:project[rw-project:name=current()/../../../" +
- "project-name]/key-pair/name";
- }
- }
- }
-
- list user {
- key "name";
-
- description "List of users to be added through cloud-config";
- leaf name {
- description "Name of the user ";
- type string;
- }
- leaf user-info {
- description "The user name's real name";
- type string;
- }
- list ssh-authorized-key {
- key "key-pair-ref";
-
- description "Used to configure the list of public keys to be injected as part
- of ns instantiation";
-
- leaf key-pair-ref {
- description "A reference to the key pair entry in the global key pair table";
- type leafref {
- path "/rw-project:project[rw-project:name=current()/" +
- "../../../../project-name]/key-pair/name";
- }
- }
- }
- }
- }
- }
-
- output {
- leaf nsr-id {
- description "Automatically generated parameter";
- type yang:uuid;
- }
- }
- }
-}
+++ /dev/null
-
-/*
- *
- * Copyright 2016 RIFT.IO Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- *
- */
-
-module odl-network-topology {
- yang-version 1;
- namespace "urn:TBD:params:xml:ns:yang:network-topology";
- // replace with IANA namespace when assigned
- prefix "nt";
-
- import ietf-inet-types { prefix "inet"; }
-
- organization "TBD";
-
- contact "WILL-BE-DEFINED-LATER";
-
- description
- "This module defines a model for the topology of a network.
- Key design decisions are as follows:
- A topology consists of a set of nodes and links.
- Links are point-to-point and unidirectional.
- Bidirectional connections need to be represented through
- two separate links.
- Multipoint connections, broadcast domains etc can be represented
- through a hierarchy of nodes, then connecting nodes at
- upper layers of the hierarchy.";
-
- revision 2013-10-21 {
- description
- "Initial revision.";
- }
-
- typedef topology-id {
- type inet:uri;
- description
- "An identifier for a topology.";
- }
-
- typedef node-id {
- type inet:uri;
- description
- "An identifier for a node in a topology.
- The identifier may be opaque.
- 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 model is instantiated in separate
- datastores. An implementation MAY choose to capture semantics
- in the identifier, for example to indicate the type of node
- and/or the type of topology that the node is a part of.";
- }
-
-
- typedef link-id {
- type inet:uri;
- description
- "An identifier for a link in a topology.
- The identifier may be opaque.
- 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 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 that the link is a part of.";
- }
-
- typedef tp-id {
- type inet:uri;
- description
- "An identifier for termination points on a node.
- The identifier may be opaque.
- The identifier SHOULD be chosen such that the same TP in a
- real network topology will always be identified through the
- same identifier, even if the model is instantiated in separate
- datastores. An implementation MAY choose to capture semantics
- in the identifier, for example to indicate the type of TP
- and/or the type of node and topology that the TP is a part of.";
- }
-
- typedef tp-ref {
- type leafref {
- path "/network-topology/topology/node/termination-point/tp-id";
- }
- 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.)";
- }
- typedef topology-ref {
- type leafref {
- path "/network-topology/topology/topology-id";
- }
- description
- "A type for an absolute reference a topology instance.";
- }
-
- typedef node-ref {
- type leafref {
- path "/network-topology/topology/node/node-id";
- }
- description
-
- "A type for an absolute reference to a node instance.
- (This type should not be used for relative references.
- In such a case, a relative path should be used instead.)";
- }
-
- typedef link-ref {
- type leafref {
- path "/network-topology/topology/link/link-id";
- }
- description
- "A type for an absolute reference a link instance.
- (This type should not be used for relative references.
- In such a case, a relative path should be used instead.)";
- }
-
- grouping tp-attributes {
- description
- "The data objects needed to define a termination point.
- (This only includes a single leaf at this point, used
- to identify the termination point.)
- Provided in a grouping so that in addition to the datastore,
- the data can also be included in notifications.";
- leaf tp-id {
- type tp-id;
- }
- leaf-list tp-ref {
- type tp-ref;
- config false;
- description
- "The leaf list identifies any termination points that the
- termination point is dependent on, or maps onto.
- Those termination points will themselves be contained
- in a supporting node.
- This dependency information can be inferred from
- the dependencies between links. For this reason,
- this item is not separately configurable. Hence no
- corresponding constraint needs to be articulated.
- The corresponding information is simply provided by the
- implementing system.";
- }
- }
-
- grouping node-attributes {
- description
- "The data objects needed to define a node.
- The objects are provided in a grouping so that in addition to
- the datastore, the data can also be included in notifications
- as needed.";
-
- leaf node-id {
- type node-id;
- description
- "The identifier of a node in the topology.
- A node is specific to a topology to which it belongs.";
- }
- list supporting-node {
- description
- "This list defines vertical layering information for nodes.
- It allows to capture for any given node, which node (or nodes)
- in the corresponding underlay topology it maps onto.
- A node can map to zero, one, or more nodes below it;
- accordingly there can be zero, one, or more elements in the list.
- If there are specific layering requirements, for example
- specific to a particular type of topology that only allows
- for certain layering relationships, the choice
- below can be augmented with additional cases.
- A list has been chosen rather than a leaf-list in order
- to provide room for augmentations, e.g. for
- statistics or priorization information associated with
- supporting nodes.";
- // This is not what was published in the initial draft,
- // added topology-ref leaf and added it to the key
- key "topology-ref node-ref";
- leaf topology-ref {
- type topology-ref;
- }
- leaf node-ref {
- type node-ref;
- }
- }
- }
-
- grouping link-attributes {
- // This is a grouping, not defined inline with the link definition itself,
- // so it can be included in a notification, if needed
- 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 {
- leaf source-node {
- mandatory true;
- type node-ref;
- description
- "Source node identifier, must be in same topology.";
- }
- leaf source-tp {
- type tp-ref;
- description
- "Termination point within source node that terminates the link.";
-
- }
- }
- container destination {
- leaf dest-node {
- mandatory true;
- type node-ref;
- description
- "Destination node identifier, must be in same topology.";
- }
- leaf dest-tp {
- type tp-ref;
- description
- "Termination point within destination node that terminates the link.";
- }
- }
- list supporting-link {
- key "link-ref";
- leaf link-ref {
- type link-ref;
- }
- }
- }
-
-
- container network-topology {
- list topology {
- description "
- This is the model of an abstract topology.
- A topology contains nodes and links.
- Each topology MUST be identified by
- unique topology-id for reason that a network could contain many
- topologies.
- ";
- key "topology-id";
- leaf topology-id {
- type topology-id;
- description "
- It is presumed that a datastore will contain many topologies. To
- distinguish between topologies it is vital to have UNIQUE
- topology identifiers.
- ";
- }
- leaf server-provided {
- type boolean;
- config false;
- description "
- Indicates whether the topology is configurable by clients,
- or whether it is provided by the server. This leaf is
-
- populated by the server implementing the model.
- It is set to false for topologies that are created by a client;
- it is set to true otherwise. If it is set to true, any
- attempt to edit the topology MUST be rejected.
- ";
- }
- container topology-types {
- description
- "This container is used to identify the type, or types
- (as a topology can support several types simultaneously),
- of the topology.
- Topology types are the subject of several integrity constraints
- that an implementing server can validate in order to
- maintain integrity of the datastore.
- Topology types are indicated through separate data nodes;
- the set of topology types is expected to increase over time.
- To add support for a new topology, an augmenting module
- needs to augment this container with a new empty optional
- container to indicate the new topology type.
- The use of a container allows to indicate a subcategorization
- of topology types.
- The container SHALL NOT be augmented with any data nodes
- that serve a purpose other than identifying a particular
- topology type.
- ";
- }
- list underlay-topology {
- key "topology-ref";
- leaf topology-ref {
- type topology-ref;
- }
- // a list, not a leaf-list, to allow for potential augmentation
- // with properties specific to the underlay topology,
- // such as statistics, preferences, or cost.
- description
- "Identifies the topology, or topologies, that this topology
- is dependent on.";
- }
-
- list node {
- description "The list of network nodes defined for the topology.";
- key "node-id";
- uses node-attributes;
- must "boolean(../underlay-topology[*]/node[./supporting-nodes/node-ref])";
- // This constraint is meant to ensure that a referenced node is in fact
- // a node in an underlay topology.
- list termination-point {
- 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.";
- key "tp-id";
- uses tp-attributes;
- }
- }
-
- list link {
- description "
- A Network Link connects a by Local (Source) node and
- a Remote (Destination) Network Nodes via a set of the
- nodes' termination points.
- As it is possible to have several links between the same
- source and destination nodes, and as a link could potentially
- be re-homed between termination points, 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.
- Layering dependencies on links in underlay topologies are
- not represented as the layering information of nodes and of
- termination points is sufficient.
- ";
- key "link-id";
- uses link-attributes;
- must "boolean(../underlay-topology/link[./supporting-link])";
- // Constraint: any supporting link must be part of an underlay topology
- must "boolean(../node[./source/source-node])";
- // Constraint: A link must have as source a node of the same topology
- must "boolean(../node[./destination/dest-node])";
- // Constraint: A link must have as source a destination of the same topology
- must "boolean(../node/termination-point[./source/source-tp])";
- // Constraint: The source termination point must be contained in the source node
- must "boolean(../node/termination-point[./destination/dest-tp])";
- // Constraint: The destination termination point must be contained
- // in the destination node
- }
- }
- }
-}
+++ /dev/null
-
-/*
- *
- * Copyright 2017 RIFT.IO Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- *
- */
-
-module project-nsd
-{
- namespace "http://riftio.com/ns/riftware-1.0/project-nsd";
- prefix "project-nsd";
-
- import mano-types {
- prefix "manotypes";
- }
-
- import project-vnfd {
- prefix "project-vnfd";
- }
-
- import nsd-base {
- prefix "nsd-base";
- }
-
- import rw-project {
- prefix "rw-project";
- }
-
-
- revision 2017-02-28 {
- description
- "Initial revision. This YANG file defines
- the Network Service Descriptor (NSD)
- under projects";
- reference
- "Derived from earlier versions of base YANG files";
- }
-
-
- grouping nsd-constituent-vnfd {
- list constituent-vnfd {
- description
- "List of VNFDs that are part of this
- network service.";
-
- key "member-vnf-index";
-
- leaf member-vnf-index {
- description
- "Identifier/index for the VNFD. This separate id
- is required to ensure that multiple VNFs can be
- part of single NS";
- type uint64;
- }
-
- leaf vnfd-id-ref {
- description
- "Identifier for the VNFD.";
- type leafref {
- path "/rw-project:project[rw-project:name = current()/../../../../rw-project:name]" +
- "/project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
- }
- }
-
- leaf start-by-default {
- description
- "VNFD is started as part of the NS instantiation";
- type boolean;
- default true;
- }
- }
- }
-
- grouping nsr-nsd-constituent-vnfd {
- list constituent-vnfd {
- description
- "List of VNFDs that are part of this
- network service.";
-
- key "member-vnf-index";
-
- leaf member-vnf-index {
- description
- "Identifier/index for the VNFD. This separate id
- is required to ensure that multiple VNFs can be
- part of single NS";
- type uint64;
- }
-
- leaf vnfd-id-ref {
- description
- "Identifier for the VNFD.";
- type leafref {
- path "/rw-project:project[rw-project:name = current()/../../../../../rw-project:name]" +
- "/project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
- }
- }
-
- leaf start-by-default {
- description
- "VNFD is started as part of the NS instantiation";
- type boolean;
- default true;
- }
- }
- }
-
- grouping nsd-vld {
- list vld {
-
- key "id";
-
- uses nsd-base:nsd-vld-common;
-
- list vnfd-connection-point-ref {
- description
- "A list of references to connection points.";
- key "member-vnf-index-ref vnfd-connection-point-ref";
-
- leaf member-vnf-index-ref {
- description "Reference to member-vnf within constituent-vnfds";
- type leafref {
- path "../../../constituent-vnfd/member-vnf-index";
- }
- }
-
- leaf vnfd-id-ref {
- description
- "A reference to a vnfd. This is a
- leafref to path:
- ../../constituent-vnfd
- + [id = current()/../id-ref]
- + /vnfd-id-ref
- NOTE: An issue with confd is preventing the
- use of xpath. Seems to be an issue with leafref
- to leafref, whose target is in a different module.
- Once that is resolved this will switched to use
- leafref";
- //type string;
- type leafref {
- path "../../../constituent-vnfd[member-vnf-index = current()/../member-vnf-index-ref]/vnfd-id-ref";
- }
- }
-
- leaf vnfd-connection-point-ref {
- description "A reference to a connection point name";
- type leafref {
- path "../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd" +
- "[project-vnfd:id = current()/../vnfd-id-ref]/" +
- "project-vnfd:connection-point/project-vnfd:name";
- }
- }
- }
- }
- }
-
- grouping nsr-nsd-vld {
- list vld {
-
- key "id";
-
- uses nsd-base:nsd-vld-common;
-
- list vnfd-connection-point-ref {
- description
- "A list of references to connection points.";
- key "member-vnf-index-ref vnfd-connection-point-ref";
-
- leaf member-vnf-index-ref {
- description "Reference to member-vnf within constituent-vnfds";
-
- type leafref {
- path "../../../constituent-vnfd/member-vnf-index";
- }
- }
-
- leaf vnfd-id-ref {
- description
- "A reference to a vnfd. This is a
- leafref to path:
- ../../nsd:constituent-vnfd
- + [nsd:id = current()/../nsd:id-ref]
- + /nsd:vnfd-id-ref
- NOTE: An issue with confd is preventing the
- use of xpath. Seems to be an issue with leafref
- to leafref, whose target is in a different module.
- Once that is resolved this will switched to use
- leafref";
- type string;
- }
-
- leaf vnfd-connection-point-ref {
- description "A reference to a connection point name";
- type leafref {
- path "../../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd" +
- "[project-vnfd:id = current()/../vnfd-id-ref]/" +
- "project-vnfd:connection-point/project-vnfd:name";
- }
- }
- }
- }
- }
-
- grouping nsd-vnf-dependency {
- list vnf-dependency {
- description
- "List of VNF dependencies.";
- key vnf-source-ref;
- leaf vnf-source-ref {
- type leafref {
- path "../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
- }
- }
- leaf vnf-depends-on-ref {
- description
- "Reference to VNF that sorce VNF depends.";
- type leafref {
- path "../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
- }
- }
- }
- }
-
- grouping nsr-nsd-vnf-dependency {
- list vnf-dependency {
- description
- "List of VNF dependencies.";
- key vnf-source-ref;
- leaf vnf-source-ref {
- type leafref {
- path "../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
- }
- }
- leaf vnf-depends-on-ref {
- description
- "Reference to VNF that sorce VNF depends.";
- type leafref {
- path "../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
- }
- }
- }
- }
-
- grouping nsd-placement-groups {
- list placement-groups {
- description "List of placement groups at NS level";
-
- key "name";
- uses manotypes:placement-group-info;
-
- list member-vnfd {
- description
- "List of VNFDs that are part of this placement group";
-
- key "member-vnf-index-ref";
-
- leaf member-vnf-index-ref {
- description "member VNF index of this member VNF";
- type leafref {
- path "../../../constituent-vnfd/member-vnf-index";
- }
- }
-
- leaf vnfd-id-ref {
- description
- "Identifier for the VNFD.";
- type leafref {
- path "../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
- }
- }
- }
- }
- }
-
- grouping nsr-nsd-placement-groups {
- list placement-groups {
- description "List of placement groups at NS level";
-
- key "name";
- uses manotypes:placement-group-info;
-
- list member-vnfd {
- description
- "List of VNFDs that are part of this placement group";
-
- key "member-vnf-index-ref";
-
- leaf member-vnf-index-ref {
- description "member VNF index of this member VNF";
- type leafref {
- path "../../../constituent-vnfd/member-vnf-index";
- }
- }
-
- leaf vnfd-id-ref {
- description
- "Identifier for the VNFD.";
- type leafref {
- path "../../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
- }
- }
- }
- }
- }
-
- grouping nsd-monitoring-param {
-
- list monitoring-param {
- key "id";
-
- uses nsd-base:monitoring-param-common;
-
- list vnfd-monitoring-param {
- description "A list of VNFD monitoring params";
- key "member-vnf-index-ref vnfd-monitoring-param-ref";
-
- leaf vnfd-id-ref {
- description
- "A reference to a vnfd. This is a
- leafref to path:
- ../../../../nsd:constituent-vnfd
- + [nsd:id = current()/../nsd:id-ref]
- + /nsd:vnfd-id-ref
- NOTE: An issue with confd is preventing the
- use of xpath. Seems to be an issue with leafref
- to leafref, whose target is in a different module.
- Once that is resolved this will switched to use
- leafref";
-
- type leafref {
- path "../../../constituent-vnfd" +
- "[member-vnf-index = current()/../member-vnf-index-ref]" +
- "/vnfd-id-ref";
- }
- }
-
- leaf vnfd-monitoring-param-ref {
- description "A reference to the VNFD monitoring param";
- type leafref {
- path "../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd"
- + "[project-vnfd:id = current()/../vnfd-id-ref]"
- + "/project-vnfd:monitoring-param/project-vnfd:id";
- }
- }
-
- leaf member-vnf-index-ref {
- description
- "Optional reference to member-vnf within constituent-vnfds";
- type leafref {
- path "../../../constituent-vnfd/member-vnf-index";
- }
- }
- }
- }
- }
-
- grouping nsr-nsd-monitoring-param {
- list monitoring-param {
- key "id";
-
- uses nsd-base:monitoring-param-common;
-
- list vnfd-monitoring-param {
- description "A list of VNFD monitoring params";
- key "member-vnf-index-ref vnfd-monitoring-param-ref";
-
- leaf vnfd-id-ref {
- description
- "A reference to a vnfd. This is a
- leafref to path:
- ../../../../nsd:constituent-vnfd
- + [nsd:id = current()/../nsd:id-ref]
- + /nsd:vnfd-id-ref
- NOTE: An issue with confd is preventing the
- use of xpath. Seems to be an issue with leafref
- to leafref, whose target is in a different module.
- Once that is resolved this will switched to use
- leafref";
-
- type string;
- }
-
- leaf vnfd-monitoring-param-ref {
- description "A reference to the VNFD monitoring param";
- type leafref {
- path "../../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd"
- + "[project-vnfd:id = current()/../vnfd-id-ref]"
- + "/project-vnfd:monitoring-param/project-vnfd:id";
- }
- }
-
- leaf member-vnf-index-ref {
- description
- "Optional reference to member-vnf within constituent-vnfds";
- type leafref {
- path "../../../constituent-vnfd/member-vnf-index";
- }
- }
- }
- }
- }
-
- grouping nsd-service-primitive {
- list service-primitive {
- description
- "Network service level service primitives.";
-
- key "name";
-
- leaf name {
- description
- "Name of the service primitive.";
- type string;
- }
-
- list parameter {
- description
- "List of parameters for the service primitive.";
-
- key "name";
- uses manotypes:primitive-parameter;
- }
-
- uses manotypes:ui-primitive-group;
-
- list vnf-primitive-group {
- description
- "List of service primitives grouped by VNF.";
-
- key "member-vnf-index-ref";
- leaf member-vnf-index-ref {
- description
- "Reference to member-vnf within constituent-vnfds";
- type leafref {
- path "../../../constituent-vnfd/member-vnf-index";
- }
- }
-
- leaf vnfd-id-ref {
- description
- "A reference to a vnfd. This is a leafref";
-
- type leafref {
- path "../../../constituent-vnfd" +
- "[member-vnf-index = current()/../member-vnf-index-ref]" + "/vnfd-id-ref";
- }
- }
-
- leaf vnfd-name {
- description
- "Name of the VNFD";
- type leafref {
- path "../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd"
- + "[project-vnfd:id = current()/../vnfd-id-ref]"
- + "/project-vnfd:name";
- }
- }
-
- list primitive {
- key "index";
-
- leaf index {
- description "Index of this primitive";
- type uint32;
- }
-
- leaf name {
- description "Name of the primitive in the VNF primitive ";
- type string;
- }
- }
- }
-
- leaf user-defined-script {
- description
- "A user defined script.";
- type string;
- }
- }
- }
-
- grouping nsr-nsd-service-primitive {
- list service-primitive {
- description
- "Network service level service primitives.";
-
- key "name";
-
- leaf name {
- description
- "Name of the service primitive.";
- type string;
- }
-
- list parameter {
- description
- "List of parameters for the service primitive.";
-
- key "name";
- uses manotypes:primitive-parameter;
- }
-
- uses manotypes:ui-primitive-group;
-
- list vnf-primitive-group {
- description
- "List of service primitives grouped by VNF.";
-
- key "member-vnf-index-ref";
- leaf member-vnf-index-ref {
- description
- "Reference to member-vnf within constituent-vnfds";
- type leafref {
- path "../../../constituent-vnfd/member-vnf-index";
- }
- }
-
- leaf vnfd-id-ref {
- description
- "A reference to a vnfd. This is a leafref";
-
- type leafref {
- path "../../../constituent-vnfd" +
- "[member-vnf-index = current()/../member-vnf-index-ref]" + "/vnfd-id-ref";
- }
- }
-
- leaf vnfd-name {
- description
- "Name of the VNFD";
- type leafref {
- path "../../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd"
- + "[project-vnfd:id = current()/../vnfd-id-ref]"
- + "/project-vnfd:name";
- }
- }
-
- list primitive {
- key "index";
-
- leaf index {
- description "Index of this primitive";
- type uint32;
- }
-
- leaf name {
- description "Name of the primitive in the VNF primitive ";
- type string;
- }
- }
- }
-
- leaf user-defined-script {
- description
- "A user defined script.";
- type string;
- }
- }
- }
-
- grouping nsd-descriptor {
- uses nsd-base:nsd-descriptor-common;
-
- uses nsd-vld;
-
- uses nsd-constituent-vnfd;
-
- uses nsd-placement-groups;
-
- uses nsd-vnf-dependency;
-
- uses nsd-monitoring-param;
-
- uses nsd-service-primitive;
- }
-
- augment "/rw-project:project" {
- container nsd-catalog {
-
- list nsd {
- key id;
-
- uses nsd-descriptor;
- }
- }
- }
-}
+++ /dev/null
-
-/*
- *
- * Copyright 2017 RIFT.IO Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- *
- */
-
-module project-vnfd
-{
- namespace "http://riftio.com/ns/riftware-1.0/project-vnfd";
- prefix "project-vnfd";
-
- import rw-project {
- prefix "rw-project";
- }
-
- import vnfd-base {
- prefix "vnfd-base";
- }
-
- revision 2017-02-28 {
- description
- "Initial revision. This YANG file defines
- the Virtual Network Function (VNF) descriptor
- under a project";
- reference
- "Derived from earlier versions of base YANG files";
- }
-
- augment /rw-project:project {
- container vnfd-catalog {
- description
- "Virtual Network Function Descriptor (VNFD).";
-
- list vnfd {
- key "id";
-
- uses vnfd-base:vnfd-descriptor;
- }
- }
- }
-}
-
-// vim: sw=2
+++ /dev/null
-
-/*
- *
- * Copyright 2016-2017 RIFT.IO Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- *
- */
-
-module vlr
-{
- namespace "urn:ietf:params:xml:ns:yang:nfvo:vlr";
- prefix "vlr";
-
- import ietf-yang-types {
- prefix "yang";
- }
-
- import mano-types {
- prefix "manotypes";
- }
-
- import rw-project {
- prefix "rw-project";
- }
-
- revision 2017-02-08 {
- description
- "Update model to support projects.";
- }
-
- revision 2015-09-10 {
- description
- "Initial revision. This YANG file defines
- the Virtual Link Record (VLR)";
- reference
- "Derived from earlier versions of base YANG files";
- }
-
- augment "/rw-project:project" {
- container vlr-catalog {
- config false;
-
- list vlr {
- key "id";
- unique "name";
-
- leaf id {
- description "Identifier for the VLR.";
- type yang:uuid;
- }
-
- leaf name {
- description "VLR name.";
- type string;
- }
-
- leaf nsr-id-ref {
- description
- "NS instance identifier.
- This is a leafref /rw-project:project/nsr:ns-instance-config/nsr:nsr/nsr:id";
- type yang:uuid;
- }
-
- leaf vld-ref {
- description
- "Reference to VLD
- /rw-project:project/nsr:ns-instance-config/nsr:nsr[nsr:id=../nsr-id-ref]
- /nsd/vld:vld/vld:id";
- type string;
- }
-
- leaf res-id {
- description "Identifier for resmgr id mapping";
- type yang:uuid;
- }
-
- leaf short-name {
- description "Short name to appear as label in the UI";
- type string;
- }
-
- leaf vendor {
- description "Provider of the VLR.";
- type string;
- }
-
- leaf description {
- description "Description of the VLR.";
- type string;
- }
-
- leaf version {
- description "Version of the VLR";
- type string;
- }
-
- leaf type {
- type manotypes:virtual-link-type;
- }
-
- leaf root-bandwidth {
- description
- "For ELAN this is the aggregate bandwidth.";
- type uint64;
- }
-
- leaf leaf-bandwidth {
- description
- "For ELAN this is the bandwidth of branches.";
- type uint64;
- }
-
- leaf create-time {
- description
- "Creation timestamp of this Virtual Link.
- The timestamp is expressed as seconds
- since unix epoch - 1970-01-01T00:00:00Z";
-
- type uint32;
- }
-
- leaf uptime {
- description
- "Active period of this Virtual Link.
- Uptime is expressed in seconds";
-
- type uint32;
- }
-
- leaf network-id {
- description
- "Identifier for the allocated network resource.";
- type string;
- }
-
- leaf vim-network-name {
- description
- "Name of network in VIM account. This is used to indicate
- pre-provisioned network name in cloud account.";
- type string;
- }
-
- // replicate for pnfd container here
-
- uses manotypes:provider-network;
- uses manotypes:ip-profile-info;
-
- leaf status {
- description
- "Status of the virtual link record.";
- type enumeration {
- enum LINK_UP;
- enum DEGRADED;
- enum LINK_DOWN;
- }
- }
- leaf operational-status {
- description
- "The operational status of the Virtual Link
- init : The VL is in init stat.
- vl-alloc-pending : The VL alloc is pending in VIM
- running : The VL is up and running in VM
- vl-terminate-pending : The VL is being terminated in VIM.
- terminated : The VL is terminated in the VM.
- failed : The VL instantiation failed in VIM.
- ";
-
- type enumeration {
- enum init;
- enum vl-alloc-pending;
- enum running;
- enum vl-terminate-pending;
- enum terminated;
- enum failed;
- }
- }
- }
- }
- }
-}
-
+++ /dev/null
-
-/*
- *
- * Copyright 2017 RIFT.IO Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- *
- */
-
-module vnfd-base
-{
- namespace "http://riftio.com/ns/riftware-1.0/vnfd-base";
- prefix "vnfd-base";
-
- import mano-types {
- prefix "manotypes";
- }
-
- import ietf-inet-types {
- prefix "inet";
- }
-
- revision 2017-02-28 {
- description
- "Initial revision. This YANG file defines
- the common types for Virtual Network Function
- (VNF) descriptor";
- reference
- "Derived from earlier versions of base YANG files";
- }
-
- grouping common-connection-point {
- leaf name {
- description "Name of the connection point";
- type string;
- }
-
- leaf id {
- description "Identifier for the internal connection points";
- type string;
- }
-
- leaf short-name {
- description "Short name to appear as label in the UI";
- type string;
- }
-
- leaf type {
- description "Type of the connection point.";
- type manotypes:connection-point-type;
- }
-
- leaf port-security-enabled {
- description "Enables the port security for the port";
- type boolean;
- }
- }
-
- typedef interface-type {
- type enumeration {
- enum INTERNAL;
- enum EXTERNAL;
- }
- }
-
- grouping virtual-interface {
- container virtual-interface {
- description
- "Container for the virtual interface properties";
-
- leaf type {
- description
- "Specifies the type of virtual interface
- between VM and host.
- VIRTIO : Use the traditional VIRTIO interface.
- PCI-PASSTHROUGH : Use PCI-PASSTHROUGH interface.
- SR-IOV : Use SR-IOV interface.
- E1000 : Emulate E1000 interface.
- RTL8139 : Emulate RTL8139 interface.
- PCNET : Emulate PCNET interface.
- OM-MGMT : Used to specify openmano mgmt external-connection type";
-
- type enumeration {
- enum OM-MGMT;
- enum PCI-PASSTHROUGH;
- enum SR-IOV;
- enum VIRTIO;
- enum E1000;
- enum RTL8139;
- enum PCNET;
- }
- default "VIRTIO";
- }
-
- leaf vpci {
- description
- "Specifies the virtual PCI address. Expressed in
- the following format dddd:dd:dd.d. For example
- 0000:00:12.0. This information can be used to
- pass as metadata during the VM creation.";
- type string;
- }
-
- leaf bandwidth {
- description
- "Aggregate bandwidth of the NIC.";
- type uint64;
- }
- }
- }
-
- grouping vnfd-descriptor {
- leaf id {
- description "Identifier for the VNFD.";
- type string {
- length "1..63";
- }
- }
-
- leaf name {
- description "VNFD name.";
- mandatory true;
- type string;
- }
-
- leaf short-name {
- description "Short name to appear as label in the UI";
- type string;
- }
-
- leaf vendor {
- description "Vendor of the VNFD.";
- type string;
- }
-
- leaf logo {
- description
- "Vendor logo for the Virtual Network Function";
- type string;
- }
-
- leaf description {
- description "Description of the VNFD.";
- type string;
- }
-
- leaf version {
- description "Version of the VNFD";
- type string;
- }
-
-
- container vnf-configuration {
- uses manotypes:vca-configuration;
- }
-
- container mgmt-interface {
- description
- "Interface over which the VNF is managed.";
-
- choice endpoint-type {
- description
- "Indicates the type of management endpoint.";
-
- case ip {
- description
- "Specifies the static IP address for managing the VNF.";
- leaf ip-address {
- type inet:ip-address;
- }
- }
-
- case vdu-id {
- description
- "Use the default management interface on this VDU.";
- leaf vdu-id {
- type leafref {
- path "../../vdu/id";
- }
- }
- }
-
- case cp {
- description
- "Use the ip address associated with this connection point.";
- leaf cp {
- type leafref {
- path "../../connection-point/name";
- }
- }
- }
- }
-
- leaf port {
- description
- "Port for the management interface.";
- type inet:port-number;
- }
-
- container dashboard-params {
- description "Parameters for the VNF dashboard";
-
- leaf path {
- description "The HTTP path for the dashboard";
- type string;
- }
-
- leaf https {
- description "Pick HTTPS instead of HTTP , Default is false";
- type boolean;
- }
-
- leaf port {
- description "The HTTP port for the dashboard";
- type inet:port-number;
- }
- }
- }
-
- list internal-vld {
- key "id";
- description
- "List of Internal Virtual Link Descriptors (VLD).
- The internal VLD describes the basic topology of
- the connectivity such as E-LAN, E-Line, E-Tree.
- between internal VNF components of the system.";
-
- leaf id {
- description "Identifier for the VLD";
- type string;
- }
-
- leaf name {
- description "Name of the internal VLD";
- type string;
- }
-
- leaf short-name {
- description "Short name to appear as label in the UI";
- type string;
- }
-
- leaf description {
- type string;
- }
-
- leaf type {
- type manotypes:virtual-link-type;
- }
-
- leaf root-bandwidth {
- description
- "For ELAN this is the aggregate bandwidth.";
- type uint64;
- }
-
- leaf leaf-bandwidth {
- description
- "For ELAN this is the bandwidth of branches.";
- type uint64;
- }
-
- list internal-connection-point {
- key "id-ref";
- description "List of internal connection points in this VLD";
- leaf id-ref {
- description "reference to the internal connection point id";
- type leafref {
- path "../../../vdu/internal-connection-point/id";
- }
- }
- }
-
- uses manotypes:provider-network;
- choice init-params {
- description "Extra parameters for VLD instantiation";
-
- case vim-network-ref {
- leaf vim-network-name {
- description
- "Name of network in VIM account. This is used to indicate
- pre-provisioned network name in cloud account.";
- type string;
- }
- }
-
- case vim-network-profile {
- leaf ip-profile-ref {
- description "Named reference to IP-profile object";
- type string;
- }
- }
-
- }
- }
-
- uses manotypes:ip-profile-list;
-
- list connection-point {
- key "name";
- description
- "List for external connection points. Each VNF has one
- or more external connection points that connect the VNF
- to other VNFs or to external networks. Each VNF exposes
- connection points to the orchestrator, which can construct
- network services by connecting the connection points
- between different VNFs. The NFVO will use VLDs and VNFFGs
- at the network service level to construct network services.";
-
- uses common-connection-point;
- }
-
- list vdu {
- description "List of Virtual Deployment Units";
- key "id";
-
- leaf id {
- description "Unique id for the VDU";
- type string;
- }
-
- leaf name {
- description "Unique name for the VDU";
- type string;
- }
-
- leaf description {
- description "Description of the VDU.";
- type string;
- }
-
- leaf count {
- description "Number of instances of VDU";
- type uint64;
- }
-
- leaf mgmt-vpci {
- description
- "Specifies the virtual PCI address. Expressed in
- the following format dddd:dd:dd.d. For example
- 0000:00:12.0. This information can be used to
- pass as metadata during the VM creation.";
- type string;
- }
-
- uses manotypes:vm-flavor;
- uses manotypes:guest-epa;
- uses manotypes:vswitch-epa;
- uses manotypes:hypervisor-epa;
- uses manotypes:host-epa;
-
- list alarm {
- key "alarm-id";
-
- uses manotypes:alarm;
- }
-
- uses manotypes:image-properties;
-
- container vdu-configuration {
- uses manotypes:vca-configuration;
- }
-
- choice cloud-init-input {
- description
- "Indicates how the contents of cloud-init script are provided.
- There are 2 choices - inline or in a file";
-
- case inline {
- leaf cloud-init {
- description
- "Contents of cloud-init script, provided inline, in cloud-config format";
- type string;
- }
- }
-
- case filename {
- leaf cloud-init-file {
- description
- "Name of file with contents of cloud-init script in cloud-config format";
- type string;
- }
- }
- }
-
- uses manotypes:supplemental-boot-data;
-
- list internal-connection-point {
- key "id";
- description
- "List for internal connection points. Each VNFC
- has zero or more internal connection points.
- Internal connection points are used for connecting
- the VNF with components internal to the VNF. If a VNF
- has only one VNFC, it may not have any internal
- connection points.";
-
- uses common-connection-point;
-
- leaf internal-vld-ref {
- type leafref {
- path "../../../internal-vld/id";
- }
- }
- }
-
- list interface {
- description
- "List of Interfaces (external and internal) for the VNF";
- key name;
-
- leaf name {
- description
- "Name of the interface. Note that this
- name has only local significance to the VDU.";
- type string;
- }
-
- leaf position {
- description
- "Explicit Position of the interface within the list";
- type uint32;
- }
-
- leaf type {
- description
- "Type of the Interface";
- type interface-type;
-
- default "EXTERNAL";
- }
-
- choice connection-point-type {
- case internal {
- leaf internal-connection-point-ref {
- description
- "Leaf Ref to the particular internal connection point";
- type leafref {
- path "../../internal-connection-point/id";
- }
- }
- }
- case external {
- leaf external-connection-point-ref {
- description
- "Leaf Ref to the particular external connection point";
- type leafref {
- path "../../../connection-point/name";
- }
- }
- }
- }
-
- uses virtual-interface;
- }
-
-
- list volumes {
- key "name";
-
- leaf name {
- description "Name of the disk-volumes, e.g. vda, vdb etc";
- type string;
- }
-
- uses manotypes:volume-info;
- }
- }
-
- list vdu-dependency {
- description
- "List of VDU dependencies.";
-
- key vdu-source-ref;
- leaf vdu-source-ref {
- type leafref {
- path "../../vdu/id";
- }
- }
-
- leaf vdu-depends-on-ref {
- description
- "Reference to the VDU on which
- the source VDU depends.";
- type leafref {
- path "../../vdu/id";
- }
- }
- }
-
- leaf service-function-chain {
- description "Type of node in Service Function Chaining Architecture";
-
- type enumeration {
- enum UNAWARE;
- enum CLASSIFIER;
- enum SF;
- enum SFF;
- }
- default "UNAWARE";
- }
-
- leaf service-function-type {
- description
- "Type of Service Function.
- NOTE: This needs to map with Service Function Type in ODL to
- support VNFFG. Service Function Type is mandatory param in ODL
- SFC. This is temporarily set to string for ease of use";
- type string;
- }
-
- uses manotypes:monitoring-param;
-
- list placement-groups {
- description "List of placement groups at VNF level";
-
- key "name";
- uses manotypes:placement-group-info;
-
- list member-vdus {
-
- description
- "List of VDUs that are part of this placement group";
- key "member-vdu-ref";
-
- leaf member-vdu-ref {
- type leafref {
- path "../../../vdu/id";
- }
- }
- }
- }
- }
-}
-
-// vim: sw=2
+++ /dev/null
-
-/*
- *
- * Copyright 2016-2017 RIFT.IO Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- *
- */
-
-module vnfd
-{
- namespace "urn:ietf:params:xml:ns:yang:nfvo:vnfd";
- prefix "vnfd";
-
- import vnfd-base {
- prefix "vnfd-base";
- }
-
- revision 2017-02-28 {
- description
- "Update model to support projects.";
- }
-
- revision 2015-09-10 {
- description
- "Initial revision. This YANG file defines
- the Virtual Network Function (VNF)";
- reference
- "Derived from earlier versions of base YANG files";
- }
- container vnfd-catalog {
- description
- "Virtual Network Function Descriptor (VNFD).";
-
- list vnfd {
- key "id";
-
- uses vnfd-base:vnfd-descriptor;
- }
- }
-}
-
-// vim: sw=2
+++ /dev/null
-
-/*
- *
- * Copyright 2016-2017 RIFT.IO Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- *
- */
-
-module vnffgd
-{
- namespace "urn:ietf:params:xml:ns:yang:nfvo:vnffgd";
- prefix "vnffgd";
-
- import ietf-yang-types {
- prefix "yang";
- }
-
- import rw-project {
- prefix "rw-project";
- }
-
- revision 2017-02-08 {
- description
- "Update model to support projects.";
- }
-
- revision 2014-10-27 {
- description
- "Initial revision. This YANG file defines
- the VNF Forwarding Graph Descriptor (VNFFGD)";
- reference
- "Derived from earlier versions of base YANG files";
- }
-
- augment "/rw-project:project" {
- container vnffgd-catalog {
-
- list vnffgd {
- key "id";
-
- leaf name {
- description "VNF Forwarding Graph Descriptor name.";
- type string;
- }
-
- leaf id {
- description "Identifier for the VNFFGD.";
- type yang:uuid;
- }
-
- leaf provider {
- description "Provider of the VNFFGD.";
- type string;
- }
-
- leaf description {
- description "Description of the VNFFGD.";
- type string;
- }
-
- leaf version {
- description "Version of the VNFFGD";
- type string;
- }
-
- //TODO: Add more content here
- }
- }
- }
-}
+++ /dev/null
-
-/*
- *
- * Copyright 2016-2017 RIFT.IO Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- *
- */
-
-module vnfr
-{
- namespace "urn:ietf:params:xml:ns:yang:nfvo:vnfr";
- prefix "vnfr";
-
- import mano-types {
- prefix "manotypes";
- }
-
- import vnfd-base {
- prefix "vnfd-base";
- }
-
- import project-vnfd {
- prefix "project-vnfd";
- }
-
- import project-nsd {
- prefix "project-nsd";
- }
-
- import vlr {
- prefix "vlr";
- }
-
- import ietf-yang-types {
- prefix "yang";
- }
-
- import ietf-inet-types {
- prefix "inet";
- }
-
- import rw-project {
- prefix "rw-project";
- }
-
- revision 2017-02-28 {
- description
- "Update model to support projects.";
- }
-
- revision 2015-09-10 {
- description
- "Initial revision. This YANG file defines
- the Virtual Network Function Record (VNFR)";
- reference
- "Derived from earlier versions of base YANG files";
- }
-
- typedef vdu-operational-status {
- type enumeration {
- enum init;
- enum vm-init-phase;
- enum vm-alloc-pending;
- enum running;
- enum upgrading;
- enum terminate;
- enum vl-terminate-phase;
- enum terminated;
- enum failed;
- }
- }
-
- typedef vnf-operational-status {
- type enumeration {
- enum pre-init;
- enum init;
- enum vl-init-phase;
- enum vm-init-phase;
- enum running;
- enum upgrading; // Experimental
- enum terminate;
- enum vm-terminate-phase;
- enum vl-terminate-phase;
- enum terminated;
- enum failed;
- }
- }
-
- grouping placement-group-info {
- list placement-groups-info {
- description
- "
- Placement groups to which this VDU belongs and its
- cloud construct
- ";
- key "name";
- uses manotypes:placement-group-info;
- uses manotypes:placement-group-input;
- }
- }
-
- grouping virtual-interface {
- container virtual-interface {
- description
- "Container for the virtual interface properties";
-
- leaf type {
- description
- "Specifies the type of virtual interface
- between VM and host.
- VIRTIO : Use the traditional VIRTIO interface.
- PCI-PASSTHROUGH : Use PCI-PASSTHROUGH interface.
- SR-IOV : Use SR-IOV interface.";
- type enumeration {
- enum VIRTIO;
- enum PCI-PASSTHROUGH;
- enum SR-IOV;
- }
- }
-
- leaf bandwidth {
- description
- "Aggregate bandwidth of the NIC.";
- type uint64;
- }
-
- leaf ovs-offload {
- description
- "Defines if the NIC supports OVS offload.
- MANDATORY : OVS offload support in the NIC is mandatory.
- PREFERRED : OVS offload support in the NIC is preferred.";
- type enumeration {
- enum MANDATORY;
- enum PREFERRED;
- }
- }
-
- leaf vendor-id {
- description
- "Specifies the vendor specific id for
- the device. This is used when a NIC from
- specific HW vendor is required.";
- type string;
- }
-
- leaf datapath-library {
- description
- "Specifies the name and version of the datapath
- library the NIC is expected to support.";
- type string;
- }
-
- leaf provider-network-name {
- description
- "Name of the provider network to which this
- NIC is attached.";
- type string;
- }
- }
- }
-
- grouping associated-virtual-cps {
- list virtual-cps {
- key "name";
- uses vnfd-base:common-connection-point;
-
- leaf ip-address {
- description
- "IP address assigned to the virtual connection point";
- type inet:ip-address;
- }
-
- leaf mac-address {
- description
- "MAC address assigned to the virtual connection point";
- type string;
- }
-
- leaf connection-point-id {
- description "VIM identifier for connection point";
- type string;
- }
- }
- }
-
- augment "/rw-project:project" {
- container vnfr-catalog {
- config false;
- list vnfr {
- description
- "Virtual Network Function Record (VNFR).";
- key "id";
- unique "name";
-
- leaf id {
- description "Identifier for the VNFR.";
- type yang:uuid;
- }
-
- leaf nsr-id-ref {
- description
- "NS instance identifier.
- This is a leafref /nsr:ns-instance-config/nsr:nsr/nsr:id";
- type yang:uuid;
- }
-
- leaf member-vnf-index-ref {
- description "Reference to member VNF index in Network service.";
- type leafref {
- path "../../../project-nsd:nsd-catalog/project-nsd:nsd/project-nsd:constituent-vnfd/project-nsd:member-vnf-index";
- }
- }
-
- leaf dashboard-url {
- description "Dashboard URL";
- type inet:uri;
- }
-
- leaf name {
- description "VNFR name.";
- type string;
- }
-
- leaf short-name {
- description "VNFR short name.";
- type string;
- }
-
- leaf vendor {
- description "Vendor of the VNFR.";
- type string;
- }
-
- leaf description {
- description "Description of the VNFR.";
- type string;
- }
-
- leaf version {
- description "Version of the VNFR";
- type string;
- }
-
- leaf create-time {
- description
- "Creation timestamp of this Virtual Network
- Function. The timestamp is expressed as
- seconds since unix epoch - 1970-01-01T00:00:00Z";
-
- type uint32;
- }
-
- leaf uptime {
- description
- "Active period of this Virtual Network Function.
- Uptime is expressed in seconds";
-
- type uint32;
- }
-
- container vnfd {
- description "VNF descriptor used to instantiate this VNF";
- uses vnfd-base:vnfd-descriptor;
- }
-
- leaf vnfd-ref {
- description "Reference to VNFD";
- type leafref {
- path "../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
- }
- }
-
- // Use parameters provided here to configure this VNF
- container vnf-configuration {
- uses manotypes:vca-configuration;
- }
-
- // Mainly used by Mon-params & dashboard url
- container mgmt-interface {
- leaf ip-address {
- type inet:ip-address;
- }
-
- leaf port {
- type inet:port-number;
- }
-
- container ssh-key {
- description "SSH key pair used for this VNF";
- leaf public-key {
- description "Public key configured on this VNF";
- type string;
- }
-
- leaf private-key-file {
- description "Path to the private key file";
- type string;
- }
- }
- }
-
- list internal-vlr {
- key "vlr-ref";
-
- leaf vlr-ref {
- description "Reference to a VLR record in the VLR catalog";
- type leafref {
- path "../../../../vlr:vlr-catalog/vlr:vlr/vlr:id";
- }
- }
-
- leaf-list internal-connection-point-ref {
- type leafref {
- path "../../vdur/internal-connection-point/id";
- }
- }
- }
-
- list connection-point {
- key "name";
- description
- "List for external connection points. Each VNF has one
- or more external connection points. As the name
- implies that external connection points are used for
- connecting the VNF to other VNFs or to external networks.
- Each VNF exposes these connection points to the
- orchestrator. The orchestrator can construct network
- services by connecting the connection points between
- different VNFs. The NFVO will use VLDs and VNFFGs at
- the network service level to construct network services.";
-
- uses vnfd-base:common-connection-point;
-
- leaf vlr-ref {
- description
- "Reference to the VLR associated with this connection point";
- type leafref {
- path "../../../../vlr:vlr-catalog/vlr:vlr/vlr:id";
- }
- }
-
- leaf ip-address {
- description
- "IP address assigned to the external connection point";
- type inet:ip-address;
- }
-
- leaf mac-address {
- description
- "MAC address assigned to the external connection point";
- // type inet:mac-address;
- type string;
- }
-
- leaf connection-point-id {
- type string;
- }
-
- uses associated-virtual-cps;
- }
-
- list vdur {
- description "List of Virtual Deployment Units";
- key "id";
- unique "name";
-
- leaf id {
- description "Unique id for the VDU";
- type yang:uuid;
- }
-
- leaf name {
- description "name of the instantiated VDUR";
- type string;
- }
-
- leaf unique-short-name {
- description "Short Unique name of the VDU
- This will be of the format NSR name-ShortnedString-VDUname
- NSR name and VDU name shall be constrained to 10 characters";
- type string;
- }
-
- leaf vdu-id-ref {
- type leafref {
- path "../../vnfd/vdu/id";
- }
- }
-
- leaf vim-id {
- description "Allocated VM resource id";
- type string;
- }
-
- leaf flavor-id {
- description "VIM assigned flavor id";
- type string;
- }
-
- leaf image-id {
- description "VIM assigned image id";
- type string;
- }
-
- leaf management-ip {
- description "Management IP address";
- type inet:ip-address;
- }
-
- leaf vm-management-ip {
- description "VM Private Management IP address";
- type inet:ip-address;
- }
-
- leaf console-url {
- description "Console URL for this VDU, if available";
- type inet:uri;
- }
-
- uses manotypes:vm-flavor;
- uses manotypes:guest-epa;
- uses manotypes:vswitch-epa;
- uses manotypes:hypervisor-epa;
- uses manotypes:host-epa;
-
- uses manotypes:supplemental-boot-data;
-
- container vdu-configuration {
- uses manotypes:vca-configuration;
- }
-
- list volumes {
- key "name";
-
- leaf name {
- description "Name of the disk-volumes, e.g. vda, vdb etc";
- type string;
- }
-
- leaf volume-id {
- description "VIM assigned volume id";
- type string;
- }
-
- uses manotypes:volume-info;
- }
-
- list internal-connection-point {
- key "id";
- description
- "List for internal connection points. Each VNFC
- has zero or more internal connection points.
- Internal connection points are used for connecting
- the VNF components internal to the VNF. If a VNF
- has only one VNFC, it may not have any internal
- connection points.";
-
- uses vnfd-base:common-connection-point;
-
- leaf ip-address {
- description
- "IP address assigned to the internal connection point";
- type inet:ip-address;
- }
-
- leaf mac-address {
- description
- "MAC address assigned to the internal connection point";
- // type inet:mac-address;
- type string;
- }
-
- leaf connection-point-id {
- type string;
- }
-
- uses associated-virtual-cps;
- }
-
- list interface {
- description
- "List of interfaces (internal and external) for the VNF";
- key name;
-
- leaf name {
- description
- "Name of the interface. Note that this
- name has only local significance to the VDU.";
- type string;
- }
-
- leaf position {
- description
- "Explicit Position of the interface within the list";
- type uint32;
- }
-
- leaf type {
- description
- "Type of the Interface";
-
- type vnfd-base:interface-type;
-
- default "EXTERNAL";
- }
- choice connection-point-type {
- case internal {
- leaf internal-connection-point-ref {
- description
- "Leaf Ref to the particular internal connection point";
- type leafref {
- path "../../internal-connection-point/id";
- }
- }
- }
- case external {
- leaf external-connection-point-ref {
- description
- "Leaf Ref to the particular external connection point";
- type leafref {
- path "../../../connection-point/name";
- }
- }
- }
- }
- uses virtual-interface;
- }
-
- leaf operational-status {
- description
- "The operational status of the VDU
- init : The VDU has just started.
- vm-init-phase : The VDUs in the VNF is being created in VIM.
- vm-alloc-pending : The VM alloc is pending in VIM
- running : The VDU is active in VM
- upgrading : The VDU is being upgraded (EXPERIMENTAL)
- terminate : The VDU is being terminated
- vm-terminate-phase : The VDU in the VNF is being terminated in VIM.
- terminated : The VDU is in the terminated state.
- failed : The VDU instantiation failed.
- ";
- type vdu-operational-status;
- }
-
- uses placement-group-info;
- }
-
- uses manotypes:monitoring-param;
-
- leaf operational-status {
- description
- "The operational status of the VNFR instance
- pre-init : The VNF before Input Param Substitution.
- init : The VNF has just started.
- vl-init-phase : The internal VLs in the VNF are being instantiated.
- vm-init-phase : The VMs for VDUs in the VNF are being instantiated.
- running : The VNF is in running state.
- terminate : The VNF is being terminated.
- vm-terminate-phase : The VMs in the VNF are being terminated.
- vl-terminate-phase : The internal VLs in the VNF are being terminated.
- terminated : The VNF is in the terminated state.
- failed : The VNF instantiation failed
- ";
- type vnf-operational-status;
- }
-
- leaf config-status {
- description
- "The configuration status of the NS instance
- configuring: At least one of the VNFs in this instance is in configuring state
- configured: All the VNFs in this NS instance are configured or config-not-needed state
- ";
-
- type enumeration {
- enum configuring {
- value 1;
- }
- enum configured {
- value 2;
- }
- enum failed {
- value 3;
- }
- enum config-not-needed {
- value 4;
- }
- }
- }
- uses placement-group-info;
-
- container cloud-config {
- uses manotypes:cloud-config;
- }
- }
- }
- }
-}