From: Jeremy Mordkoff Date: Thu, 7 Dec 2017 00:07:05 +0000 (-0500) Subject: BUG 363 -- use yang files from IM repo X-Git-Tag: v3.0.3~2 X-Git-Url: https://osm.etsi.org/gitweb/?a=commitdiff_plain;h=refs%2Fchanges%2F65%2F5765%2F1;p=osm%2FSO.git BUG 363 -- use yang files from IM repo Signed-off-by: Jeremy Mordkoff --- diff --git a/.gitignore b/.gitignore index 6c320fe2..17e4d814 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,20 @@ node_modules/ *.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 diff --git a/BUILD.sh b/BUILD.sh index 7ccdebad..a2cbff29 100755 --- a/BUILD.sh +++ b/BUILD.sh @@ -112,7 +112,36 @@ else 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 diff --git a/devops-stages/stage-build.sh b/devops-stages/stage-build.sh index 4354ee18..876b299a 100755 --- a/devops-stages/stage-build.sh +++ b/devops-stages/stage-build.sh @@ -1,4 +1,31 @@ #!/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 diff --git a/models/plugins/yang/ietf-l2-topology.yang b/models/plugins/yang/ietf-l2-topology.yang deleted file mode 100644 index 9f572cb0..00000000 --- a/models/plugins/yang/ietf-l2-topology.yang +++ /dev/null @@ -1,578 +0,0 @@ - -/* - * 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 diff --git a/models/plugins/yang/ietf-network-topology.yang b/models/plugins/yang/ietf-network-topology.yang deleted file mode 100644 index e8f7c791..00000000 --- a/models/plugins/yang/ietf-network-topology.yang +++ /dev/null @@ -1,257 +0,0 @@ - -/* - * 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"; - } - } - } - } -} diff --git a/models/plugins/yang/ietf-network.yang b/models/plugins/yang/ietf-network.yang deleted file mode 100644 index 93085444..00000000 --- a/models/plugins/yang/ietf-network.yang +++ /dev/null @@ -1,153 +0,0 @@ - -/* - * 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."; - } - } - } - } -} - diff --git a/models/plugins/yang/mano-rift-groupings.yang b/models/plugins/yang/mano-rift-groupings.yang deleted file mode 100644 index 7788724a..00000000 --- a/models/plugins/yang/mano-rift-groupings.yang +++ /dev/null @@ -1,95 +0,0 @@ -/* - * - * 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; - } - } - } -} diff --git a/models/plugins/yang/mano-types.yang b/models/plugins/yang/mano-types.yang deleted file mode 100644 index 8950c7a2..00000000 --- a/models/plugins/yang/mano-types.yang +++ /dev/null @@ -1,2190 +0,0 @@ - -/* - * - * 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"; - } - } - } -} diff --git a/models/plugins/yang/nsd-base.yang b/models/plugins/yang/nsd-base.yang deleted file mode 100644 index c3328694..00000000 --- a/models/plugins/yang/nsd-base.yang +++ /dev/null @@ -1,781 +0,0 @@ - -/* - * - * 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; - } -} diff --git a/models/plugins/yang/nsd.yang b/models/plugins/yang/nsd.yang deleted file mode 100644 index 4a88eac4..00000000 --- a/models/plugins/yang/nsd.yang +++ /dev/null @@ -1,319 +0,0 @@ - -/* - * - * 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; - } - } -} diff --git a/models/plugins/yang/nsr.yang b/models/plugins/yang/nsr.yang deleted file mode 100644 index 12cf8504..00000000 --- a/models/plugins/yang/nsr.yang +++ /dev/null @@ -1,1610 +0,0 @@ - -/* - * - * 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; - } - } - } -} diff --git a/models/plugins/yang/odl-network-topology.yang b/models/plugins/yang/odl-network-topology.yang deleted file mode 100644 index 9c7101da..00000000 --- a/models/plugins/yang/odl-network-topology.yang +++ /dev/null @@ -1,359 +0,0 @@ - -/* - * - * 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 - } - } - } -} diff --git a/models/plugins/yang/project-nsd.yang b/models/plugins/yang/project-nsd.yang deleted file mode 100644 index ae79d960..00000000 --- a/models/plugins/yang/project-nsd.yang +++ /dev/null @@ -1,600 +0,0 @@ - -/* - * - * 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; - } - } - } -} diff --git a/models/plugins/yang/project-vnfd.yang b/models/plugins/yang/project-vnfd.yang deleted file mode 100644 index 53424369..00000000 --- a/models/plugins/yang/project-vnfd.yang +++ /dev/null @@ -1,57 +0,0 @@ - -/* - * - * 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 diff --git a/models/plugins/yang/vlr.yang b/models/plugins/yang/vlr.yang deleted file mode 100644 index 6a9b5916..00000000 --- a/models/plugins/yang/vlr.yang +++ /dev/null @@ -1,193 +0,0 @@ - -/* - * - * 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; - } - } - } - } - } -} - diff --git a/models/plugins/yang/vnfd-base.yang b/models/plugins/yang/vnfd-base.yang deleted file mode 100644 index c2eae357..00000000 --- a/models/plugins/yang/vnfd-base.yang +++ /dev/null @@ -1,547 +0,0 @@ - -/* - * - * 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 diff --git a/models/plugins/yang/vnfd.yang b/models/plugins/yang/vnfd.yang deleted file mode 100644 index d1c9df65..00000000 --- a/models/plugins/yang/vnfd.yang +++ /dev/null @@ -1,54 +0,0 @@ - -/* - * - * 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 diff --git a/models/plugins/yang/vnffgd.yang b/models/plugins/yang/vnffgd.yang deleted file mode 100644 index 652ee81e..00000000 --- a/models/plugins/yang/vnffgd.yang +++ /dev/null @@ -1,82 +0,0 @@ - -/* - * - * 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 - } - } - } -} diff --git a/models/plugins/yang/vnfr.yang b/models/plugins/yang/vnfr.yang deleted file mode 100644 index b669f978..00000000 --- a/models/plugins/yang/vnfr.yang +++ /dev/null @@ -1,609 +0,0 @@ - -/* - * - * 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; - } - } - } - } -}