initial submission of RIFT model changes for multi-tenancy, RBAC and projects
Change-Id: Iedb3c5cabc8312f302795d7f3b777edb047114fb
Signed-off-by: Rajesh Velandy <rajesh.velandy@riftio.com>
diff --git a/models/yang/CMakeLists.txt b/models/yang/CMakeLists.txt
deleted file mode 100644
index 0347367..0000000
--- a/models/yang/CMakeLists.txt
+++ /dev/null
@@ -1,55 +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.
-#
-# Author(s): Anil Gunturu
-# Creation Date: 10/15/2014
-#
-
-# NOTE: These files will be used by the new MANO subsystem
-set(source_yang_files
- ietf-l2-topology.yang
- ietf-network-topology.yang
- ietf-network.yang
- nsd.yang rw-nsd.yang
- nsr.yang rw-nsr.yang
- pnfd.yang
- rw-topology.yang
- vlr.yang rw-vlr.yang
- vnfd.yang rw-vnfd.yang
- vnfr.yang rw-vnfr.yang
- )
-
-rift_add_yang_target(
- TARGET mano-types_yang
- YANG_FILES
- mano-types.yang
- COMPONENT ${PKG_LONG_NAME}
- )
-
-rift_add_yang_target(
- TARGET mano_yang
- YANG_FILES ${source_yang_files}
- GIR_PATHS ${CMAKE_CURRENT_BINARY_DIR}
- COMPONENT ${PKG_LONG_NAME}
- LIBRARIES
- rwmanifest_yang_gen
- rwschema_yang_gen
- rwcloud_yang_gen
- rwconfig_agent_yang_gen
- mano-types_yang_gen
- DEPENDS
- rwcloud_yang
- rwconfig_agent_yang
- )
diff --git a/models/yang/ietf-network.tailf.yang b/models/yang/ietf-network.tailf.yang
deleted file mode 100644
index f531f65..0000000
--- a/models/yang/ietf-network.tailf.yang
+++ /dev/null
@@ -1,27 +0,0 @@
-
-/*
- * NO RW COPYRIGHT
- *
- */
-
-module ietf-network-annotation
-{
- namespace "urn:ietf:params:xml:ns:yang:ietf-network";
- prefix "ietf-network-ann";
-
- import tailf-common {
- prefix tailf;
- }
-
- import ietf-network {
- prefix nd;
- }
-
- tailf:annotate "/nd:network" {
- tailf:callpoint rw_callpoint;
- }
-
- tailf:annotate "/nd:network/nd:server-provided" {
- tailf:callpoint rw_callpoint;
- }
-}
diff --git a/models/yang/ietf-network.yang b/models/yang/ietf-network.yang
index a059e94..9308544 100644
--- a/models/yang/ietf-network.yang
+++ b/models/yang/ietf-network.yang
@@ -13,10 +13,6 @@
prefix inet;
}
- import rw-pb-ext {
- prefix "rwpb";
- }
-
organization "TBD";
contact
"WILL-BE-DEFINED-LATER";
diff --git a/models/yang/mano-rift-groupings.yang b/models/yang/mano-rift-groupings.yang
new file mode 100644
index 0000000..7788724
--- /dev/null
+++ b/models/yang/mano-rift-groupings.yang
@@ -0,0 +1,95 @@
+/*
+ *
+ * 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/yang/mano-types.yang b/models/yang/mano-types.yang
index 3c820e3..81022ad 100644
--- a/models/yang/mano-types.yang
+++ b/models/yang/mano-types.yang
@@ -1,7 +1,7 @@
/*
*
- * Copyright 2016 RIFT.IO Inc
+ * 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.
@@ -31,6 +31,15 @@
prefix "rwpb";
}
+ 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
@@ -40,6 +49,12 @@
"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 {
@@ -109,6 +124,7 @@
"The value should be dimmed by the UI.
Only applies to parameters with default values.";
type boolean;
+ default false;
}
leaf hidden {
@@ -116,6 +132,7 @@
"The value should be hidden by the UI.
Only applies to parameters with default values.";
type boolean;
+ default false;
}
}
@@ -146,28 +163,7 @@
}
}
- 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 initial-config {
+ grouping event-config {
leaf seq {
description
"Sequence number for the configuration primitive.";
@@ -199,6 +195,29 @@
}
}
}
+
+ 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 {
@@ -267,22 +286,29 @@
list service-primitive {
rwpb:msg-new ServicePrimitive;
description
- "List of service primitives supported by the
+ "List of config primitives supported by the
configuration agent for this VNF or VDU.";
key "name";
leaf name {
description
- "Name of the service primitive.";
+ "Name of the config primitive.";
type string;
}
list parameter {
description
- "List of parameters to the service primitive.";
+ "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 {
@@ -290,7 +316,29 @@
description
"Initial set of configuration primitives.";
key "seq";
- uses initial-config;
+ 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
@@ -299,15 +347,15 @@
description
"Type of virtual link
ELAN: A multipoint service connecting a set of VNFs
- // ELINE: For a simple point to point connection
+ 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;
- // enum ELINE;
}
}
@@ -387,12 +435,12 @@
description
"Type of the widget, typically used by the UI.";
type enumeration {
+ enum COUNTER;
+ enum GAUGE;
+ enum TEXTBOX;
+ enum SLIDER;
enum HISTOGRAM;
enum BAR;
- enum GAUGE;
- enum SLIDER;
- enum COUNTER;
- enum TEXTBOX;
}
}
@@ -600,6 +648,13 @@
}
} //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 {
@@ -957,22 +1012,6 @@
type string;
}
- leaf overlay-type {
- description
- "Type of the overlay network.
- LOCAL - Provider network implemented in a single compute node
- FLAT - Provider network shared by all tenants
- VLAN - Provider network implemented using 802.1Q tagging
- VXLAN - Provider networks implemented using RFC 7348
- GRE - Provider networks implemented using GRE tunnels";
- type enumeration {
- enum LOCAL;
- enum FLAT;
- enum VLAN;
- enum VXLAN;
- enum GRE;
- }
- }
leaf segmentation_id {
description
"ID of segregated virtual networks";
@@ -981,6 +1020,108 @@
}
}
+ 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
@@ -1116,6 +1257,7 @@
leaf widget-type {
description "Defines the UI Display variant of measured counters.";
type manotypes:widget-type;
+ default "COUNTER";
}
leaf units {
@@ -1356,7 +1498,7 @@
}
leaf default-value {
- description "/nsd:nsd-catalog/nsd:nsd/nsd:vendor";
+ description "Default Value for the Input Parameter";
type string;
}
}
@@ -1799,6 +1941,56 @@
}
}
+ 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 {
+ rwpb:msg-new CloudConfigUser;
+ 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 "";
@@ -1861,8 +2053,8 @@
list dns-server {
key "address";
leaf address {
- description "List of DNS Servers associated with IP Profile";
- type inet:ip-address;
+ description "List of DNS Servers associated with IP Profile";
+ type inet:ip-address;
}
}
@@ -1972,7 +2164,6 @@
case image {
uses image-properties;
}
-
}
leaf device-bus {
@@ -1994,6 +2185,16 @@
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/yang/nsd-base.yang b/models/yang/nsd-base.yang
new file mode 100644
index 0000000..6c852cb
--- /dev/null
+++ b/models/yang/nsd-base.yang
@@ -0,0 +1,792 @@
+
+/*
+ *
+ * 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 rw-pb-ext {
+ prefix "rwpb";
+ }
+
+ 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 {
+ rwpb:msg-new NsdInitialServicePrimitive;
+ description
+ "Initial set of service primitives for NSD.";
+ key "seq";
+
+ uses manotypes:event-config;
+ }
+
+ list terminate-service-primitive {
+ rwpb:msg-new NsdTerminateServicePrimitive;
+ 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;
+ }
+
+ leaf ipv4-nat-pool-name{
+ type string;
+ description "IPV4 nat pool name";
+ }
+
+ 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/yang/nsd.yang b/models/yang/nsd.yang
index 48fc484..4a88eac 100644
--- a/models/yang/nsd.yang
+++ b/models/yang/nsd.yang
@@ -1,7 +1,7 @@
/*
*
- * Copyright 2016 RIFT.IO Inc
+ * 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.
@@ -23,22 +23,23 @@
namespace "urn:ietf:params:xml:ns:yang:nfvo:nsd";
prefix "nsd";
- import rw-pb-ext {
- prefix "rwpb";
- }
-
import vnfd {
prefix "vnfd";
}
- import ietf-inet-types {
- prefix "inet";
+ 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
@@ -47,193 +48,45 @@
"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 {
+ grouping nsd-constituent-vnfd {
+ list constituent-vnfd {
description
- "Name of the parameter.";
- type string;
- }
+ "List of VNFDs that are part of this
+ network service.";
- leaf data-type {
- description
- "Data type associated with the name.";
- type manotypes:parameter-data-type;
- }
+ key "member-vnf-index";
- 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 {
- leaf id {
- description "Identifier for the NSD.";
- type string;
- }
-
- 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 network service (NS) has one or more external connection
- points that connect the NS to other NSs or to external networks.
- Each NS exposes connection points to the orchestrator, which can
- construct network service chains by connecting the connection
- points between different NSs.";
- key "name";
- leaf name {
+ leaf member-vnf-index {
description
- "Name of the NS connection point.";
- type string;
+ "Identifier/index for the VNFD. This separate id
+ is required to ensure that multiple VNFs can be
+ part of single NS";
+ type uint64;
}
- leaf type {
+ leaf vnfd-id-ref {
description
- "Type of the connection point.";
- type manotypes:connection-point-type;
+ "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;
}
}
+ }
- /* Model Limitations,
- see the comments under vnfd-connection-point-ref
- */
+ grouping nsd-vld {
list vld {
- description
- "List of Virtual Link Descriptors (VLDs).";
key "id";
- 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;
- }
+ uses nsd-base:nsd-vld-common;
list vnfd-connection-point-ref {
description
@@ -266,235 +119,30 @@
}
}
}
-
- // 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";
- }
- }
- }
- }
}
+ }
- list constituent-vnfd {
+ grouping nsd-vnf-dependency {
+ list vnf-dependency {
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 so that multiple VNFs can be part of
- single NS";
- type uint64;
- }
-
- leaf vnfd-id-ref {
- description
- "Identifier for the VNFD.";
+ "List of VNF dependencies.";
+ key vnf-source-ref;
+ leaf vnf-source-ref {
type leafref {
path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id";
}
}
-
- leaf start-by-default {
+ leaf vnf-depends-on-ref {
description
- "VNFD is started as part of the NS instantiation";
- type boolean;
- default true;
- }
- }
-
- 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.
- Defaults 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 scaling activity";
- type uint32;
- mandatory true;
- }
-
- list scaling-criteria {
- description
- "list of conditions to be met for generating scaling
- requests";
- key "name";
-
- leaf name {
- description "Name of the scaling criteria";
- type string;
- }
-
- leaf scale-in-threshold {
- description
- "Value below which scale-in requests are generated
- (depends on monitoring parameters)";
- type uint64;
- }
-
- leaf scale-out-threshold {
- description
- "Value above which scale-out requests are generated
- (depends on monitoring parameters)";
- 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 defines the number of instances when a
- scaling action targets this scaling group.";
- type uint32;
- default 1;
- }
- }
-
- leaf min-instance-count {
- description
- "Minimum number of instances of the scaling group that
- are allowed in a single network service. These instances
- are created by default when the network service is
- instantiated.";
- type uint32;
- default 0;
- }
-
- leaf max-instance-count {
- description
- "Maximum number of instances of this scaling group that
- are allowed in a single network service. The network
- service scaling fails when the number of service group
- instances exceeds 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-config-primitive-name-ref {
- description "Reference to the NS config name primitive";
- type leafref {
- path "../../../service-primitive/name";
- }
+ "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";
@@ -518,248 +166,21 @@
description
"Identifier for the VNFD.";
type leafref {
- path "../../../constituent-vnfd" +
+ path "../../../constituent-vnfd" +
"[member-vnf-index = current()/../member-vnf-index-ref]" +
"/vnfd-id-ref";
}
}
}
}
+ }
- uses manotypes:ip-profile-list;
-
- list vnf-dependency {
- description
- "List of VNF dependencies.";
- key vnf-source-ref;
- leaf vnf-source-ref {
- type leafref {
- path "../../constituent-vnfd/vnfd-id-ref";
- }
- }
- leaf vnf-depends-on-ref {
- description
- "Reference to VNF on which the source VNF depends.";
- type leafref {
- path "../../constituent-vnfd/vnfd-id-ref";
- }
- }
- }
-
- 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";
- 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";
- }
- }
- }
- } //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";
- 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";
- }
- }
-
- 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
- "Internet 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;
- }
- } //match-attributes
- } // classifier
- } // vnffgd
+ grouping nsd-monitoring-param {
list monitoring-param {
- description
- "List of monitoring parameters from VNFs that should be
- propogated up into NSR";
- key "id";
+ key id;
- leaf id {
- description "Identifier for a monitoring parameter";
- type string;
- }
-
- leaf name {
- description "Name of the monitoring parameter";
- type string;
- }
-
- uses manotypes:monitoring-param-value;
- uses manotypes:monitoring-param-ui-data;
- uses manotypes:monitoring-param-aggregation;
+ uses nsd-base:monitoring-param-common;
list vnfd-monitoring-param {
description "A list of VNFD monitoring params";
@@ -794,42 +215,10 @@
}
}
}
+ }
- uses manotypes:input-parameter-xpath;
-
- list parameter-pool {
- description
- "Pool of parameter values from which to choose during
- configuration.";
- key "name";
-
- leaf name {
- description
- "Name of the configuration value pool";
- type string;
- }
-
- container range {
- description
- "Create a range of values from which 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 service-primitive {
+ grouping nsd-service-primitive {
+ list service-primitive {
description
"Network service level service primitives.";
@@ -905,72 +294,26 @@
type string;
}
}
-
- list initial-config-primitive {
- rwpb:msg-new NsdInitialConfigPrimitive;
- description
- "Initial set of configuration primitives for NSD.";
- key "seq";
-
- uses manotypes:initial-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;
- }
- }
- }
}
-
container nsd-catalog {
list nsd {
- key "id";
+ key id;
- uses 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;
}
}
-
}
diff --git a/models/yang/nsr.tailf.yang b/models/yang/nsr.tailf.yang
deleted file mode 100644
index b68872e..0000000
--- a/models/yang/nsr.tailf.yang
+++ /dev/null
@@ -1,52 +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 nsr-annotation
-{
- namespace "http://riftio.com/ns/riftware-1.0/nsr-annotation";
- prefix "nsr-ann";
-
- import tailf-common {
- prefix tailf;
- }
-
- import nsr {
- prefix nsr;
- }
-
- tailf:annotate "/nsr:ns-instance-opdata" {
- tailf:callpoint rw_callpoint;
- }
- tailf:annotate "/nsr:exec-ns-service-primitive" {
- tailf:actionpoint rw_actionpoint;
- }
- tailf:annotate "/nsr:exec-scale-out" {
- tailf:actionpoint rw_actionpoint;
- }
- tailf:annotate "/nsr:exec-scale-in" {
- tailf:actionpoint rw_actionpoint;
- }
- tailf:annotate "/nsr:get-ns-service-primitive-values" {
- tailf:actionpoint rw_actionpoint;
- }
- tailf:annotate "/nsr:start-network-service" {
- tailf:actionpoint rw_actionpoint;
- }
-}
diff --git a/models/yang/nsr.yang b/models/yang/nsr.yang
index 36e03a4..7597a6f 100644
--- a/models/yang/nsr.yang
+++ b/models/yang/nsr.yang
@@ -1,7 +1,7 @@
/*
*
- * Copyright 2016 RIFT.IO Inc
+ * 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.
@@ -31,12 +31,16 @@
prefix "vlr";
}
- import nsd {
- prefix "nsd";
+ import nsd-base {
+ prefix "nsd-base";
}
- import vnfd {
- prefix "vnfd";
+ import project-nsd {
+ prefix "project-nsd";
+ }
+
+ import project-vnfd {
+ prefix "project-vnfd";
}
import vnfr {
@@ -55,8 +59,13 @@
prefix "manotypes";
}
- import rw-sdn {
- prefix "rwsdn";
+ import rw-project {
+ prefix "rw-project";
+ }
+
+ revision 2017-02-08 {
+ description
+ "Update model to support projects.";
}
revision 2015-09-10 {
@@ -74,6 +83,7 @@
enum config_not_needed;
enum configured;
enum failed;
+ enum terminate;
}
}
@@ -95,16 +105,16 @@
leaf key-pair-ref {
description "A reference to the key pair entry in the global key pair table";
type leafref {
- path "/nsr:key-pair/nsr:name";
+ path "../../../../key-pair/name";
}
}
}
list user {
key "name";
-
- description "List of users to be added through cloud-config";
+ description "Used to configure the list of public keys to be injected as part
+ of ns instantiation";
leaf name {
- description "Name of the user ";
+ description "Name of this key pair";
type string;
}
leaf user-info {
@@ -114,108 +124,128 @@
list ssh-authorized-key {
key "key-pair-ref";
- description "Used to configure the list of public keys to be injected as part
+ 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 "/nsr:key-pair/nsr:name";
+ path "../../../../../key-pair/name";
}
}
}
}
}
- list key-pair {
- key "name";
- description "Used to configure the list of public keys to be injected as part
+ 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 this key pair";
+ description
+ "Name of the service primitive.";
+ type string;
+ mandatory "true";
+ }
+
+ leaf user-defined-script {
+ description
+ "A user defined script.";
type string;
}
- leaf key {
- description "Key associated with this key pair";
- type string;
- }
- }
-
- rpc start-network-service {
- description "Start the network service";
- input {
+ list parameter {
+ key "name";
leaf name {
- mandatory true;
- description "Name of the Network Service";
type string;
}
- leaf nsd-ref {
- description "Reference to NSR ID ref";
- mandatory true;
- type leafref {
- path "/nsd:nsd-catalog/nsd:nsd/nsd:id";
- }
- }
- uses ns-instance-config-params;
- }
- output {
- leaf nsr-id {
- description "Automatically generated parameter";
- type yang:uuid;
+ leaf value {
+ type string;
}
}
}
+ augment "/rw-project:project" {
+ container ns-instance-config {
+ list nsr {
+ key "id";
+ unique "name";
- 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;
+ leaf id {
+ description "Identifier for the NSR.";
+ type yang:uuid;
}
- }
- container nsd {
- description "NS descriptor used to instantiate this NS";
- uses nsd:nsd-descriptor;
- }
+ leaf name {
+ description "NSR name.";
+ type string;
+ }
- uses ns-instance-config-params;
+ 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 {
+ grouping ns-instance-config-params-common {
uses manotypes:input-parameter;
list scaling-group {
@@ -224,7 +254,7 @@
leaf scaling-group-name-ref {
description "name of the scaling group
- leafref path ../../nsd/scaling-group-descriptor/name";
+ leafref path ../nsd/scaling-group-descriptor/name";
type string;
}
@@ -241,48 +271,60 @@
list nsd-placement-group-maps {
description
"Mapping from mano-placement groups construct from NSD to cloud
- platform placement group construct";
+ platform placement group construct";
key "placement-group-ref";
leaf placement-group-ref {
- description "Reference for NSD placement group
- leafref path ../../nsd/placement-groups/name";
+ description
+ "Reference for NSD placement group";
+ // type leafref {
+ // path "../../nsd/placement-groups/name";
+ // }
type string;
}
uses manotypes:placement-group-input;
}
+ }
- list vnfd-placement-group-maps {
+ 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
+ "Mapping from mano-placement groups construct from VNFD to cloud
platform placement group construct";
- key "placement-group-ref vnfd-id-ref";
+ key "placement-group-ref vnfd-id-ref";
- leaf vnfd-id-ref {
- description
+ leaf vnfd-id-ref {
+ description
"A reference to a vnfd. This is a
leafref to path:
- ../../../../nsd:constituent-vnfd
- + [nsr:id = current()/../nsd:id-ref]
- + /nsd:vnfd-id-ref
- NOTE: confd limitations prevent the use of xpath";
- type yang:uuid;
- }
-
- leaf placement-group-ref {
- description
- "A reference to VNFD placement group";
- type leafref {
- path "/vnfd:vnfd-catalog/vnfd:vnfd[vnfd:id = current()/" +
- "../nsr:vnfd-id-ref]/vnfd:placement-groups/vnfd:name";
+ ../../../../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 manotypes:placement-group-input;
- }
- uses cloud-config;
+ uses cloud-config;
}
grouping vnffgr {
@@ -298,18 +340,19 @@
leaf vnffgd-id-ref {
description "VNFFG descriptor id reference";
type leafref {
- path "/nsr:ns-instance-config/nsr:nsr"
- + "[nsr:id=current()/../../ns-instance-config-ref]"
- + "/nsr:nsd/nsr:vnffgd/nsr:id";
+ 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"
+ path "../../../../ns-instance-config/nsr"
+ "[id=current()/../../ns-instance-config-ref]"
- + "/nsd/vnffgd[nsr:id = current()/../vnffgd-id-ref]"
+ + "/nsd/vnffgd"
+ + "[id=current()/../vnffgd-id-ref]"
+ "/name";
}
}
@@ -318,9 +361,12 @@
description
"The SDN account to use when requesting resources for
this vnffgr";
- type leafref {
- path "/rwsdn:sdn/rwsdn:account/rwsdn:name";
- }
+ type string;
+ }
+
+ leaf cloud-account {
+ description "Cloud Account in which NSR is instantiated";
+ type string;
}
leaf operational-status {
@@ -358,11 +404,17 @@
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"
+ path "../../../../../ns-instance-config/nsr"
+ "[id=current()/../../../ns-instance-config-ref]"
+ "/nsd/vnffgd"
+ "[id=current()/../../vnffgd-id-ref]"
@@ -374,11 +426,12 @@
description
"Name for the VNFFG Descriptor RSP reference";
type leafref {
- path "/ns-instance-config/nsr:nsr"
+ 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]"
+ + "/rsp"
+ + "[id=current()/../vnffgd-rsp-id-ref]"
+ "/name";
}
}
@@ -422,22 +475,22 @@
description
"A reference to a vnfr id";
type leafref {
- path "/vnfr:vnfr-catalog/vnfr:vnfr/vnfr:id";
+ 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";
+ 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()/../nsr:vnfr-id-ref]"
+ path "../../../../../../vnfr:vnfr-catalog/vnfr:vnfr"
+ + "[vnfr:id = current()/../vnfr-id-ref]"
+ "/vnfr:connection-point/vnfr:name";
}
}
@@ -504,11 +557,16 @@
"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 "../../nsr:rsp/nsr:id";
+ path "../../rsp/id";
}
}
leaf rsp-name {
@@ -520,22 +578,22 @@
description
"A reference to a vnfr id";
type leafref {
- path "/vnfr:vnfr-catalog/vnfr:vnfr/vnfr:id";
+ 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";
+ 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()/../nsr:vnfr-id-ref]"
+ path "../../../../../vnfr:vnfr-catalog/vnfr:vnfr"
+ + "[vnfr:id = current()/../vnfr-id-ref]"
+ "/vnfr:connection-point/vnfr:name";
}
}
@@ -559,62 +617,66 @@
}
}
- container ns-instance-opdata {
- config false;
+ augment "/rw-project:project" {
+ container ns-instance-opdata {
+ config false;
- list nsr {
- key "ns-instance-config-ref";
+ list nsr {
+ key "ns-instance-config-ref";
- leaf ns-instance-config-ref {
- type leafref {
- path "/nsr:ns-instance-config/nsr:nsr/nsr:id";
+ 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 "/nsr:ns-instance-config/nsr:nsr/nsr:name";
+ 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-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 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.
+ 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;
- }
+ type uint32;
+ }
- leaf uptime {
- description
- "Active period of this Network Service.
+ leaf uptime {
+ description
+ "Active period of this Network Service.
Uptime is expressed in seconds";
- type uint32;
- }
+ type uint32;
+ }
- list connection-point {
- description
+ 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
@@ -624,101 +686,100 @@
construct network service chains by connecting the
connection points between different NS.";
- key "name";
- leaf name {
- description
+ key "name";
+ leaf name {
+ description
"Name of the NS connection point.";
- type string;
- }
+ type string;
+ }
- leaf type {
- description
+ 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";
+ 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 {
+
+ 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
- "A list of references to connection points.";
+ "List of VNFRs that are part of this
+ network service.";
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";
+ "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 "/vnfr:vnfr-catalog/vnfr:vnfr"
- + "[vnfr:id = current()/../nsr:vnfr-id]"
- + "/vnfr:connection-point/vnfr:name";
+ path "../../../../ns-instance-config/nsr"
+ + "[id=current()/../../ns-instance-config-ref]"
+ + "/nsd/scaling-group-descriptor/name";
}
}
- }
- }
- list constituent-vnfr-ref {
- description
- "List of VNFRs that are part of this
- network service.";
- key "vnfr-id";
+ list instance {
+ description "Reference to scaling group instance record";
+ key "instance-id";
+ leaf instance-id {
+ description "Scaling group instance id";
+ type uint16;
+ }
- 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
+ leaf is-default {
+ description "Flag indicating whether this instance was part of
default scaling group (and thus undeletable)";
- type boolean;
- }
+ type boolean;
+ }
- leaf op-status {
- description
- "The operational status of the NS instance
+ 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.
@@ -728,58 +789,58 @@
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;
+ 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
+ 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;
- }
+ type config-states;
+ }
- leaf error-msg {
- description
- "Reason for failure in configuration of this scaling instance";
- type string;
- }
+ 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.
+ 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";
+ leaf-list vnfrs {
+ description "Reference to VNFR within the scale instance";
+ type leafref {
+ path "../../../constituent-vnfr-ref/vnfr-id";
+ }
}
}
}
- }
- uses vnffgr;
+ uses vnffgr;
- leaf operational-status {
- description
- "The operational status of the NS instance
+ 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.
@@ -795,271 +856,200 @@
vl-terminate : The NS is terminating a VL
";
- 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;
+ 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;
+ }
}
- }
- leaf config-status {
- description
- "The configuration status of the NS instance
+ 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;
- }
+ 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
- "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: confd limitations prevent the use of xpath";
-
- 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 {
+ 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-config-primitive {
- rwpb:msg-new NsrInitialConfigPrimitive;
- description
- "Initial set of configuration primitives for NSD.";
- key "seq";
- leaf seq {
- description
- "Sequence number for the configuration primitive.";
- type uint64;
+ type string;
+ }
}
- leaf name {
+ list initial-service-primitive {
+ rwpb:msg-new NsrInitialServicePrimitive;
description
- "Name of the configuration primitive.";
- type string;
- mandatory "true";
+ "Initial set of service primitives for NSD.";
+ key "seq";
+
+ uses event-service-primitive;
}
- leaf user-defined-script {
+ list terminate-service-primitive {
+ rwpb:msg-new NsrTerminateServicePrimitive;
description
- "A user defined script.";
- type string;
+ "Set of service primitives to
+ execute during termination of NSD.";
+ key "seq";
+
+ uses event-service-primitive;
}
- list parameter {
+ list monitoring-param {
description
- "List of parameters for the initial config primitive";
- key "name";
+ "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 {
- description "Name of the intitial config parameter";
type string;
}
- leaf value {
- description "Value associated with the initial config
- parameter";
- type string;
- }
- }
- }
-
-
- 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
+ leaf nsd-mon-param-ref {
+ description "Reference to the NSD monitoring param descriptor
that produced this result";
- type leafref {
- path "/nsd:nsd-catalog/nsd:nsd[nsd:id = current()/" +
- "../../nsr:nsd-ref]/nsd:monitoring-param/nsd:id";
+ // 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";
+ 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
+ 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;
- }
+ 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()/../nsr:vnfr-id-ref]"
- + "/vnfr:monitoring-param/vnfr:id";
+ 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";
+ list config-agent-job {
+ key "job-id";
- leaf job-id {
- description "config agent job Identifier for the NS.";
- type uint64;
- }
+ 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-name {
+ description "Config agent job name";
+ type string;
+ }
- leaf job-status {
- description
+ 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;
@@ -1067,30 +1057,85 @@
}
}
- list primitive {
+ 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 "the name of the primitive";
+ description
+ "Name of the parameter.";
type string;
}
uses manotypes:primitive-parameter-value;
+ }
- leaf execution-id {
- description "Execution id of the primitive";
- type string;
+ list vnfr {
+ key "id";
+ leaf id {
+ description "Identifier for the VNFR.";
+ type yang:uuid;
}
- leaf execution-status {
- description "status of the Execution";
+ 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;
}
}
- leaf execution-error-details {
- description "Error details if execution-status is failure";
- type string;
+
+ 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;
+ }
}
}
}
@@ -1098,22 +1143,30 @@
}
}
+ 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 nsr_id_ref {
- description "Reference to NSR ID ref";
- mandatory true;
- type leafref {
- path "/nsr:ns-instance-config/nsr:nsr/nsr:id";
- }
- }
+ input {
leaf name {
description "Name of the NS service primitive group";
mandatory true;
type string;
}
+
+ uses rpc-common;
}
output {
@@ -1168,10 +1221,14 @@
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: confd limitations prevent the use of xpath";
+ ../../../../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;
}
@@ -1215,12 +1272,7 @@
type string;
}
- leaf nsr_id_ref {
- description "Reference to NSR ID ref";
- type leafref {
- path "/nsr:ns-instance-config/nsr:nsr/nsr:id";
- }
- }
+ uses rpc-common;
leaf triggered-by {
description "The primitive is triggered from NS or VNF level";
@@ -1297,12 +1349,7 @@
type string;
}
- leaf nsr_id_ref {
- description "Reference to NSR ID ref";
- type leafref {
- path "/nsr:ns-instance-config/nsr:nsr/nsr:id";
- }
- }
+ uses rpc-common;
leaf triggered-by {
description "The primitive is triggered from NS or VNF level";
@@ -1397,22 +1444,29 @@
description "Executes scale out request";
input {
-
- leaf nsr-id-ref {
- description "Reference to NSR ID ref";
- type leafref {
- path "/nsr:ns-instance-config/nsr:nsr/nsr:id";
- }
- }
+ uses rpc-common;
leaf scaling-group-name-ref {
description "name of the scaling group";
- type string;
+ 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;
+ 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;
}
@@ -1429,25 +1483,25 @@
description "Executes scale out request";
input {
-
- leaf nsr-id-ref {
- description "Reference to NSR ID ref";
- type leafref {
- path "/nsr:ns-instance-config/nsr:nsr/nsr:id";
- }
- }
+ uses rpc-common;
leaf scaling-group-name-ref {
description "name of the scaling group";
- type string;
+ 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";
@@ -1456,4 +1510,109 @@
}
}
+ 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/yang/pnfd.yang b/models/yang/pnfd.yang
deleted file mode 100644
index 2f9bcdf..0000000
--- a/models/yang/pnfd.yang
+++ /dev/null
@@ -1,104 +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 pnfd
-{
- namespace "urn:ietf:params:xml:ns:yang:nfvo:pnfd";
- prefix "pnfd";
-
- import rw-pb-ext {
- prefix "rwpb";
- }
-
- import ietf-inet-types {
- prefix "inet";
- }
-
- import ietf-yang-types {
- prefix "yang";
- }
-
- import mano-types {
- prefix "manotypes";
- }
-
- revision 2015-09-10 {
- description
- "Initial revision. This YANG file defines
- the Physical Network Function Descriptor (PNFD)";
- reference
- "Derived from earlier versions of base YANG files";
- }
-
- container pnfd-catalog {
-
- list pnfd {
- key "id";
-
- leaf id {
- description "Identifier for the PNFD.";
- type yang:uuid;
- }
-
- leaf name {
- description "PNFD name.";
- type string;
- }
-
- leaf short-name {
- description "Short name to appear as label in the UI";
- type string;
- }
-
- leaf vendor {
- description "Vendor of the PNFD.";
- type string;
- }
-
- leaf description {
- description "Description of the PNFD.";
- type string;
- }
-
- leaf version {
- description "Version of the PNFD";
- type string;
- }
-
- list connection-point {
- description
- "List for external connection points. Each PNF has one or more external
- connection points.";
- key "id";
- leaf id {
- description
- "Identifier for the external connection points";
- type uint64;
- }
-
- leaf cp-type {
- description
- "Type of the connection point.";
- type manotypes:connection-point-type;
- }
- }
- }
- }
-}
diff --git a/models/yang/project-nsd.yang b/models/yang/project-nsd.yang
new file mode 100644
index 0000000..ae79d96
--- /dev/null
+++ b/models/yang/project-nsd.yang
@@ -0,0 +1,600 @@
+
+/*
+ *
+ * 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/yang/project-vnfd.yang b/models/yang/project-vnfd.yang
new file mode 100644
index 0000000..5342436
--- /dev/null
+++ b/models/yang/project-vnfd.yang
@@ -0,0 +1,57 @@
+
+/*
+ *
+ * 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/yang/rw-nsd.yang b/models/yang/rw-nsd.yang
deleted file mode 100644
index 4475928..0000000
--- a/models/yang/rw-nsd.yang
+++ /dev/null
@@ -1,57 +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 rw-nsd
-{
- namespace "http://riftio.com/ns/riftware-1.0/rw-nsd";
- prefix "rw-nsd";
-
- import nsd {
- prefix "nsd";
- }
-
- import ietf-yang-types {
- prefix "yang";
- }
-
- import mano-types {
- prefix "manotypes";
- }
-
- revision 2015-09-10 {
- description
- "Initial revision. This YANG file augments
- the base MANO NSD";
- reference
- "Derived from earlier versions of base YANG files";
- }
-
- augment /nsd:nsd-catalog/nsd:nsd {
- uses manotypes:control-param;
- uses manotypes:action-param;
- leaf meta {
- description
- "Any meta-data needed by the UI";
- type string;
- }
- }
-}
-
-// vim: sw=2
diff --git a/models/yang/rw-nsr.tailf.yang b/models/yang/rw-nsr.tailf.yang
deleted file mode 100644
index 3b7588a..0000000
--- a/models/yang/rw-nsr.tailf.yang
+++ /dev/null
@@ -1,45 +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 rw-nsr-annotation
-{
- namespace "http://riftio.com/ns/riftware-1.0/rw-nsr-annotation";
- prefix "rw-nsr-ann";
-
- import tailf-common {
- prefix tailf;
- }
-
- import rw-nsr {
- prefix rw-nsr;
- }
-
- import nsr {
- prefix nsr;
- }
-
- tailf:annotate "/nsr:ns-instance-opdata/nsr:nsr/rw-nsr:operational-events" {
- tailf:callpoint rw_callpoint;
- }
-
- tailf:annotate "/nsr:ns-instance-opdata/rw-nsr:nsd-ref-count" {
- tailf:callpoint rw_callpoint;
- }
-}
diff --git a/models/yang/rw-nsr.yang b/models/yang/rw-nsr.yang
deleted file mode 100644
index 472332e..0000000
--- a/models/yang/rw-nsr.yang
+++ /dev/null
@@ -1,436 +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 rw-nsr
-{
- namespace "http://riftio.com/ns/riftware-1.0/rw-nsr";
- prefix "rw-nsr";
-
- import mano-types {
- prefix "manotypes";
- }
-
- import nsr {
- prefix "nsr";
- }
-
- import nsd {
- prefix "nsd";
- }
-
- import rw-cloud {
- prefix "rw-cloud";
- }
-
- import rw-config-agent {
- prefix "rw-config-agent";
- }
-
- import rw-sdn {
- prefix "rw-sdn";
- }
-
- import ietf-yang-types {
- prefix "yang";
- }
-
- revision 2015-09-10 {
- description
- "Initial revision. This YANG file augments
- the base MANO VNFD";
- reference
- "Derived from earlier versions of base YANG files";
- }
-
- grouping operational-events {
- list operational-events {
- key "id";
- description
- "Recent operational events for this network service.
- Though the model does not impose any restrictions on the numbe of events,
- the max operational events will be limited to the most recent 10";
-
- leaf id {
- description "The id of the instance";
- type uint64;
- }
-
- leaf timestamp {
- description
- "The timestamp of this event expressed as seconds since
- unix epoch - 1970-01-01T00:00:00Z";
- type uint32;
- }
- leaf event {
- description "Short description of the event";
- type string;
- }
- leaf description {
- description
- "The description of this event";
- type string;
- }
- leaf details {
- description
- "The detailed description of this event (in case of errors)";
- type string;
- }
- }
- }
-
-
- grouping rw-ns-instance-config {
- leaf cloud-account {
- description
- "The configured cloud account which the NSR is instantiated within.
- All VDU's, Virtual Links, and provider networks will be requested
- using the cloud-account's associated CAL instance";
- type leafref {
- path "/rw-cloud:cloud/rw-cloud:account/rw-cloud:name";
- }
- }
-
- leaf om-datacenter {
- description
- "Openmano datacenter name to use when instantiating
- the network service. This is only used when openmano
- is selected as the cloud account. This should be superceded
- by multiple cloud accounts when that becomes available.";
- type string;
- }
-
- list vnf-cloud-account-map {
- description
- "Mapping VNF to Cloud Account where VNF will be instantiated";
-
- key "member-vnf-index-ref";
- leaf member-vnf-index-ref {
- type uint64;
- }
-
- leaf cloud-account {
- description
- "The configured cloud account where VNF is instantiated within.
- All VDU's, Virtual Links, and provider networks will be requested
- using the cloud-account's associated CAL instance";
- type leafref {
- path "/rw-cloud:cloud/rw-cloud:account/rw-cloud:name";
- }
- }
-
- leaf om-datacenter {
- description
- "Openmano datacenter name to use when instantiating
- the network service. This is only used when openmano
- is selected as the cloud account. This should be superceded
- by multiple cloud accounts when that becomes available.";
- type string;
- }
-
- leaf config-agent-account {
- description
- "The configured config agent account to use for instantiating this VNF.
- The configuration for this VNF will be driven using the specified config
- agent account";
- type leafref {
- path "/rw-config-agent:config-agent/rw-config-agent:account/rw-config-agent:name";
- }
- }
- }
-
- list vl-cloud-account-map {
- description
- "Mapping VL to Cloud Account where VL will be instantiated";
-
- key "vld-id-ref";
-
- leaf vld-id-ref {
- description
- "A reference to a vld.
- leafref path ../../nsd/vld/id";
- type string;
- }
-
- leaf-list cloud-accounts {
- description
- "The configured list of cloud accounts where VL is instantiated.
- All VDU's, Virtual Links, and provider networks will be requested
- using the cloud-account's associated CAL instance";
- type leafref {
- path "/rw-cloud:cloud/rw-cloud:account/rw-cloud:name";
- }
- }
-
- leaf-list om-datacenters {
- description
- "Openmano datacenter names to use when instantiating
- the VLs. This is only used when openmano
- is selected as the cloud account. This should be superceded
- by multiple cloud accounts when that becomes available.";
- type string;
- }
- }
- }
-
-
- augment /nsr:ns-instance-config/nsr:nsr {
- uses rw-ns-instance-config;
- }
-
- augment /nsr:start-network-service/nsr:input{
- uses rw-ns-instance-config;
- }
-
- augment /nsr:ns-instance-opdata/nsr:nsr {
- uses manotypes:action-param;
- uses manotypes:control-param;
-
- leaf sdn-account {
- description
- "The SDN account associted with the cloud account using which an
- NS was instantiated.";
- type leafref {
- path "/rw-sdn:sdn/rw-sdn:account/rw-sdn:name";
- }
- }
-
- leaf config-status-details {
- description
- "The configuration status error details of the NS instance, in case of any errors";
- type string;
- }
-
- container nfvi-metrics {
- container vm {
- leaf label {
- description
- "Label to show in UI";
- type string;
- default "VM";
- }
-
- leaf active-vm {
- description
- "The number of active VMs.";
- type uint64;
- }
-
- leaf inactive-vm {
- description
- "The number of inactive VMs.";
- type uint64;
- }
- }
-
- uses manotypes:nfvi-metrics;
- }
-
- container epa-param {
- container ovs-acceleration {
- leaf label {
- description
- "Label to show in UI for the param";
- type string;
- default "OVS ACCELERATION";
- }
-
- leaf vm {
- description
- "Number of VMs with the EPA attribute";
- type uint64;
- }
-
- leaf unit {
- description
- "Unit label to show in the UI";
- type string;
- default "vms";
- }
- }
-
- container ovs-offload {
- leaf label {
- description
- "Label to show in UI for the param";
- type string;
- default "OVS OFFLOAD";
- }
-
- leaf vm {
- description
- "Number of VMs with the EPA attribute";
- type uint64;
- }
-
- leaf unit {
- description
- "Unit label to show in the UI";
- type string;
- default "vms";
- }
-
- }
-
- container ddio {
- leaf label {
- description
- "Label to show in UI for the param";
- type string;
- default "DDIO";
- }
-
- leaf vm {
- description
- "Number of VMs with the EPA attribute";
- type uint64;
- }
-
- leaf unit {
- description
- "Unit label to show in the UI";
- type string;
- default "vms";
- }
-
- }
-
- container cat {
- leaf label {
- description
- "Label to show in UI for the param";
- type string;
- default "CAT";
- }
-
- leaf vm {
- description
- "Number of VMs with the EPA attribute";
- type uint64;
- }
-
- leaf unit {
- description
- "Unit label to show in the UI";
- type string;
- default "vms";
- }
- }
-
- container cmt {
- leaf label {
- description
- "Label to show in UI for the param";
- type string;
- default "CMT";
- }
-
- leaf vm {
- description
- "Number of VMs with the EPA attribute";
- type uint64;
- }
-
- leaf unit {
- description
- "Unit label to show in the UI";
- type string;
- default "vms";
- }
-
- }
- }
- uses operational-events;
- }
-
-
- augment /nsr:ns-instance-opdata/nsr:nsr/nsr:vlr {
- leaf assigned-subnet {
- description "Subnet added for the VL";
- type string;
- }
- leaf cloud-account {
- description
- "The configured cloud account in which the VL is instantiated within.";
- type leafref {
- path "/rw-cloud:cloud/rw-cloud:account/rw-cloud:name";
- }
- }
- leaf om-datacenter {
- description
- "Openmano datacenter name to use when instantiating
- the network service. This is only used when openmano
- is selected as the cloud account. This should be superceded
- by multiple cloud accounts when that becomes available.";
- type string;
- }
- }
-
- augment /nsr:ns-instance-opdata/nsr:nsr/nsr:constituent-vnfr-ref {
- leaf cloud-account {
- description
- "The configured cloud account in which the VNF is instantiated within.
- All VDU's, Virtual Links, and provider networks will be requested
- using the cloud-account's associated CAL instance";
- type leafref {
- path "/rw-cloud:cloud/rw-cloud:account/rw-cloud:name";
- }
- }
- leaf om-datacenter {
- description
- "Openmano datacenter name to use when instantiating
- the network service. This is only used when openmano
- is selected as the cloud account. This should be superceded
- by multiple cloud accounts when that becomes available.";
- type string;
- }
- }
-
- augment /nsr:ns-instance-config {
- leaf nfvi-polling-period {
- description
- "Defines the period (secons) that the NFVI metrics are polled at";
- type uint64;
- default 4;
- }
- }
-
- notification nsm-notification {
- description "Notification for NSM Events.
- The timestamp of this event is automatically expressed
- in human readble format - 1970-01-01T00:00:00Z";
-
- leaf event {
- description "Short name of the event";
- type string;
- }
-
- leaf description {
- description "The description of this event";
- type string;
- }
-
- leaf details {
- description "The detailed description of this event, in case of errors";
- type string;
- }
- }
-}
-
-// vim: sw=2
diff --git a/models/yang/rw-pb-ext.yang b/models/yang/rw-pb-ext.yang
new file mode 100644
index 0000000..1b90153
--- /dev/null
+++ b/models/yang/rw-pb-ext.yang
@@ -0,0 +1,358 @@
+/* STANDARD_RIFT_IO_COPYRIGHT */
+
+/**
+ * @file rw-pb-ext.yang
+ * @author Tim Mortsolf, Anil Gunturu, Tom Seidenberg
+ * @date 2013/03/21
+ * @brief RiftWare yang to protobuf conversion extensions
+ */
+
+module rw-pb-ext
+{
+ namespace "http://riftio.com/ns/riftware-1.0/rw-pb-ext";
+ prefix "rwpb";
+
+ revision 2014-03-28 {
+ description
+ "Initial revision.";
+ reference
+ "RIFT yang extensions for converting yang files to Google
+ Protocol Buffers (protobuf) using rift protoc-c extensions.";
+ }
+
+ extension msg-new {
+ argument "typename";
+ description
+ "Generate an equivalent, top-level, protobuf message for this
+ container, list, rpc input, rpc output, or notification. The
+ argument is the name of the protobuf message type. Allowed
+ values are valid C identifiers.
+
+ The protobuf definition will only be generated when processing
+ the same module that defines the yang object - a duplicate will
+ not be generated when importing reusing a yang object via uses,
+ or when importing the module.";
+ }
+
+ extension msg-name {
+ argument "typename";
+ description
+ "Change the name of an embedded protobuf message type for this
+ container or list. Allowed values are valid C identifiers.
+
+ In lieu of this extension, embedded protobuf message typenames
+ are based on the fieldname, and further mangled by removing
+ underscores and CamelCased at underscore boundaries. This
+ extension allows the automatic mangling procedure to be
+ overridden.
+
+ This extension is incompatible with msg-new, which already
+ defines the typename for top-level messages. Use this extension
+ solely for embedded messages.";
+ }
+
+ extension msg-flat {
+ argument "selection";
+ description
+ "Set the protobuf message rw_msgopts flat option on a container
+ or list statement. Allowed values are 'true', 'false', and
+ 'auto'. The default is 'false' for top-level messages, and
+ 'auto' for embedded messages. If 'auto' is specified, the
+ behavior is the same as the enclosing container or list.
+
+ Unless overridden, this extension effectively applies to all
+ enclosed descendent container and list statements. Flatness will
+ be required by the protobuf compilation step.";
+ }
+
+ extension msg-tag-base {
+ argument "value";
+ description
+ "Specify a base tag value for a container, list, grouping, or
+ uses statement. Field tags may be specified relative to this
+ base. Allowed values are positive
+ decimal integers.";
+ // ATTN: would really like to specify field-relative in uses!
+ }
+
+/*
+ extension msg-tag-reserve {
+ argument "value";
+ description
+ "Reserve space in the tag numbering for future expansion of the
+ enclosing grouping, container, or choice. Must be a positive
+ decimal integer. Choose carefully, as you cannot increase the
+ value at a later time.";
+ }
+*/
+
+ extension msg-proto-max-size {
+ argument "value";
+ description
+ "Specify the maximum size of this message in the C structure or
+ so in bytes. Allowed values are positive decimal integers.";
+ }
+
+ extension msg-typedef {
+ argument "typename";
+ description
+ "Create a prototbuf-c message typedef for the original, base
+ definition of the container, list, grouping, rpc input, rpc
+ output, or notification. Allowed values are valid C identifiers.
+
+ typename will be appended to the mangeled protobuf package name
+ and an underscore, to ensure name uniqueness across the global
+ schema.
+
+ The typedef will only be generated when processing
+ the same module that defines the yang object - a duplicate will
+ not be generated when importing reusing a yang object via uses,
+ or when importing the module.";
+ }
+
+ extension field-name {
+ argument "fieldname";
+ description
+ "Change the name of the element to fieldname, when converting the
+ object to protobuf. Allowed values are valid C identifiers.
+
+ In lieu of this extension, element names will be used as-is, if
+ possible, or mangled to fit in the C identifier character space
+ (invalid C identifier characters will be replaced with
+ underscore). This extension allows the automatic mangling
+ procedure to be overridden.";
+ }
+
+ extension field-inline {
+ argument "selection";
+ description
+ "Set the protobuf field 'inline' option on a container, list,
+ leaf-list, or leaf statement. Allowed values are 'true',
+ 'false', and 'auto'. If 'auto' is specified, the behavior is
+ controlled by the enclosing container or list's protobuf-msg-flat
+ setting.
+
+ When applied to a container or list statement, this extension is
+ inherited by all enclosed objects, unless overridden.";
+ }
+
+ extension field-inline-max {
+ argument "limit";
+ description
+ "Set the protobuf field 'inline_max' option for list and
+ leaf-list statements. Allowed values are a positive decimal
+ integer, 'yang', or 'none'. Example limits:
+
+ '64'
+ 'yang'
+ 'none'
+
+ If 'none' is specified, then the inline_max protobuf extension
+ will not be used.
+
+ If 'yang' is specified, then the number of elements specified in
+ the yang 'max-elements' statement is used. If there is no
+ 'max-elements' statement, the behavior defaults to 'none'.
+
+ If a decimal integer is specified, that number is used as the
+ maximum length.
+
+ If this extension is not specified, the behavior defaults to
+ 'yang'. Descendant list and leaf-list objects do not inherit
+ this extension.";
+ }
+
+ extension field-string-max {
+ argument "limit";
+ description
+ "Set the protobuf field 'string_max' option for a leaf or
+ leaf-list of type string, binary, leafref, identityref, or
+ instance-identifier. Allowed values are a positive decimal
+ integer, 'yang', or 'none'. An optional encoding specifier may
+ also be specified, as octet or utf8, which specifies how
+ characters are counted. If specified, the encoding must come
+ first. Example limits:
+
+ 'octet 64'
+ 'utf8 20'
+ 'utf8 yang'
+ 'utf8'
+ '128'
+ 'none'
+
+ If 'none' is specified, then the string_max protobuf extension
+ will not be used. 'none' cannot be combined with 'octet' or
+ 'utf8'.
+
+ If 'yang' is specified, the yang type must be string or binary.
+ If the yang type includes the length statement, then the
+ statements maximum length is used as the length. Otherwise,
+ behavior defaults to 'none'.
+
+ If a decimal integer is specified, that number is used as the
+ length.
+
+ The encoding specifiers are used to determine the actual number
+ of bytes used in the protobuf extension. If the 'octet'
+ specifier is used, then the maximum length is used literally as
+ the byte length. If the 'utf8' specified is used, then the
+ maximum length is considered to be in terms of worst-case UTF-8
+ characters, in which case the protobuf byte length will actually
+ be 4 times the specified length.
+
+ For string and binary types, the default encoding is 'octet'.
+ For the remaining types, the default encoding is 'utf8',
+ reflecting those types fundemental description as XML entities
+ assumed to be encoded in UTF-8.
+
+ If this extension is not specified, then the default is 'yang'
+ for string and binary, and 'none' for the other types. This
+ extension cannot be specified on aggregate objects, and so it
+ cannot be inherited.";
+ }
+
+ extension field-tag {
+ argument "value";
+ description
+ "Set the protobuf field tag. Allowed values are a positive
+ decimal integer, 'auto', a base-relative addition expression, or
+ a field-relative addition expression.
+
+ If a decimal integer is specified, then the tag is set to the
+ specified number. You should avoid using this form in a
+ grouping, because you may not be able to guarantee uniqueness
+ across all the uses of the group. However, the syntax will be
+ allowed.
+
+ A base-relative addition expression allows the tag of a field to
+ be defined in terms of the base tag of an enclosing grouping,
+ container, list, or uses statement. The expression has the form
+ '+NUMBER', where NUMBER is the value to add to the base to derive
+ the current field's tag.
+
+ A field-relative addition expression allows the tag of one field
+ to be defined in terms of another field. The expression has the
+ form 'NAME+NUMBER', where NAME is the name of the other field,
+ and NUMBER is the value to add to the other fields tag to derive
+ the current field's tag.
+
+ If this extension is not specified, the default behavior is
+ 'auto'.";
+ }
+
+ extension field-type {
+ argument "type";
+ description
+ "Override the default protobuf field type mapping for a leaf or
+ leaf-list type, and use the specified protobuf type instead.
+
+ Allowed values are any of the Protobuf scalar types, as
+ restricted by the yang leaf type:
+
+ +---------------------------+-------------------------------+
+ | (pseudo) yang leaf type | (pseudo) protobuf scalar type |
+ |---------------------------+-------------------------------+
+ | int8, int16, int32 | int32, sint32, sfixed32, auto |
+ +---------------------------+-------------------------------+
+ | int64 | int64, sint64, sfixed64, auto |
+ +---------------------------+-------------------------------+
+ | uint8, uint16, uint32 | uint32, fixed32, auto |
+ +---------------------------+-------------------------------+
+ | uint64 | uint64, fixed64, auto |
+ +---------------------------+-------------------------------+
+ | decimal | uint64, sint64, int64, |
+ | | fixed64, sfixed64, |
+ | | float, double, auto |
+ +---------------------------+-------------------------------+
+ | empty, boolean | bool, auto |
+ +---------------------------+-------------------------------+
+ | string, leafref, | string, auto |
+ | identityref, | |
+ | instance-identifier, | |
+ | anyxml | |
+ +---------------------------+-------------------------------+
+ | bits, binary | bytes, auto |
+ +---------------------------+-------------------------------+
+
+ If 'auto' is specified, the default conversion will be used. The
+ protobuf pseudo-type utf8 is equivalent to string, except that
+ length limits will be adjusted in protobuf extentions to allow
+ the string to be composed entirely of the maximum sized UTF-8
+ multibyte characters (byte length is 4 times larger than the
+ character length).";
+ }
+
+ extension field-c-type {
+ argument "type";
+ description
+ "Override the default protoc-c C-language type mapping for a leaf
+ or leaf-list type, and use the specified C type instead.";
+ }
+
+ /* ATTN: Stop using this extension? */
+ extension package-name {
+ argument "pkgname";
+ description
+ "Specifies the name of the package name in the generated .proto
+ file on a module statement The argument is the name of the
+ package-name. Allowed values are valid C identifiers When
+ package-name is not specified the generated package name defaults
+ to the Yang module name";
+ }
+
+ extension application-request-point {
+ description
+ "This extension is used temporarily until the config and data portions
+ are split into different namespaces and keyspecs. This allows
+ applications to provide data at a keyspec, and request config at a
+ different level";
+ }
+
+ extension enum-name {
+ argument "enumname";
+ description
+ "Use the specified name for the enum enumerator in the .proto
+ instead of the default mangled name of the yang identifer.
+ If there is a name conflict with other enum name either specified
+ explicitly or generated one, the yangpbc conversion will fail.
+ Allowed values are valid C identifiers.";
+ }
+
+ extension enum-type {
+ argument "enumtypename";
+ description
+ "Use the specified name for the enum type in the .proto instead
+ of the default mangled name of the yang identifier. If there is
+ a name conflict with another enum type, either auto-generated or
+ explicitly specified one, the yangpbc conversion will fail.
+ Allowed values are valid C identifiers.";
+ }
+
+ extension file-pbc-include {
+ argument "pathstring";
+ description
+ "A module level extension to specify the include files for pb-c.h
+ when any rift specific c-types are used. This extension can
+ occur multiple times as a child of module statement. The value
+ should be a valid path string.";
+ }
+
+ extension field-merge-behavior {
+ argument "value";
+ description
+ "An extension for controlling the merge done for listy types
+ during upacking of protobuf. It can take 3 different value:
+
+ 1) default: The default is whatever protobuf-c does today
+ (for keyed lists, the default is equivalent to by-keys).
+
+ 2) by-keys: allowed on keyed lists (and leaf-lists): merge
+ elements with matching key.
+
+ 3) none: allowed on keyed lists (and leaf-lists): do not
+ attempt to merge elements. This must ONLY be used when it
+ is known or expected that the proto message would contain
+ large number of list items.";
+ }
+
+} // rw-pb-ext
diff --git a/models/yang/rw-project.yang b/models/yang/rw-project.yang
new file mode 100644
index 0000000..4c9d5cb
--- /dev/null
+++ b/models/yang/rw-project.yang
@@ -0,0 +1,63 @@
+/*
+ * 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 rw-project
+{
+ namespace "http://riftio.com/ns/riftware-1.0/rw-project";
+ prefix "rw-project";
+
+ description
+ "This yang module defines project-based tenancy for RIFT.ware.
+ Authorization for project access is defined in terms of RIFT.ware's
+ Role-Based Access Control (RBAC) model.";
+
+ revision 2015-09-10 {
+ description
+ "Initial revision. This YANG file defines the model for
+ RIFT.ware project management for multi-tenancy";
+ reference
+ "RIFT.io MANO Tenancy Design Specification";
+ }
+
+ list project {
+ description
+ "Configuration and state for individual projects. RIFT.ware
+ applications and projects are expected to augment this list in
+ order to add configuration for projects that is specific to the
+ product or application. As such, this list contains minimal
+ data defined in this yang module.
+
+ When augmenting this element, other yang modules should prefer to
+ define containers with the same name as the augmenting module.
+ (Augmenting RIFT.ware modules should prefer to augment without
+ the rw prefix [for new features], or should prefer to augment the
+ augmented container of an existing augment, to ease future
+ adoption and/or standardization.)";
+
+ key "name";
+ leaf name {
+ description "Name of the project.";
+ type string {
+ length "1..255";
+ }
+ }
+
+ leaf description {
+ description "Information about project";
+ type string;
+ }
+ }
+}
diff --git a/models/yang/rw-topology.yang b/models/yang/rw-topology.yang
deleted file mode 100644
index ff1f2ba..0000000
--- a/models/yang/rw-topology.yang
+++ /dev/null
@@ -1,126 +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 rw-topology {
- namespace "http://riftio.com/ns/riftware-1.0/rw-topology";
- prefix rw-topology;
-
- import ietf-inet-types {prefix inet;}
- import ietf-network {prefix nw;}
- import ietf-network-topology {prefix nt;}
- import ietf-l2-topology {prefix l2t;}
-
- revision "2015-10-20" {
- description "Initial revision of IP level addressing for L2 host topology";
- }
-
- grouping ip-address-group {
- description "IP addresses if present for L2 termination points";
- container ip-attributes {
- description "L2 termination points containing IP addresses";
- list ip-addresses {
- key ip;
- leaf ip {
- type inet:ip-address;
- description "IPv4 or IPv6 address";
- }
- }
- }
- } // grouping ip-address-group
-
-
- grouping rw-network-attributes {
- description "RW Topology scope attributes";
- container rw-network-attributes {
- description "Containing RW network attributes";
- leaf name {
- type string;
- description "Name of the RW Topology network";
- }
- leaf sdn-account-name {
- type string;
- description "Name of the SDN account from which topology is got";
- }
- }
- }
-
- grouping rw-node-attributes {
- description "RW node attributes";
- container rw-node-attributes {
- description "Containing RW node attributes";
- leaf name {
- type string;
- description "Node name";
- }
- leaf ovs-bridge-name {
- type string;
- description "Name of OVS bridge";
- }
- }
- }
-
- grouping rw-link-attributes {
- description "RW link attributes";
- container rw-link-attributes {
- description "Containing RW link attributes";
- leaf name {
- type string;
- description "Link name";
- }
- }
- }
-
- grouping rw-termination-point-attributes {
- description "RW termination point attributes";
- container rw-termination-point-attributes {
- description "Containing RW TP attributes";
- leaf description {
- type string;
- description "Port description";
- }
- uses ip-address-group;
- }
- }
-
- augment "/nw:network" {
- description
- "Configuration parameters for the RW network
- as a whole";
- uses rw-network-attributes;
- }
-
- augment "/nw:network/nw:node" {
- description
- "Configuration parameters for RW at the node
- level";
- uses rw-node-attributes;
- }
-
- augment "/nw:network/nt:link" {
- description "Augment RW topology link information";
- uses rw-link-attributes;
- }
-
- augment "/nw:network/nw:node/nt:termination-point" {
- description
- "Augment RW topology termination point configuration";
- uses rw-termination-point-attributes;
- }
-}
diff --git a/models/yang/rw-vlr.yang b/models/yang/rw-vlr.yang
deleted file mode 100644
index 755bb81..0000000
--- a/models/yang/rw-vlr.yang
+++ /dev/null
@@ -1,87 +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 rw-vlr
-{
- namespace "http://riftio.com/ns/riftware-1.0/rw-vlr";
- prefix "rw-vlr";
-
- import mano-types {
- prefix "manotypes";
- }
-
- import vlr {
- prefix "vlr";
- }
-
- import rw-cloud {
- prefix "rw-cloud";
- }
-
- import ietf-yang-types {
- prefix "yang";
- }
-
- revision 2015-09-30 {
- description
- "Initial revision. This YANG file augments
- the base MANO VNFD";
- reference
- "Derived from earlier versions of base YANG files";
- }
-
- augment /vlr:vlr-catalog/vlr:vlr {
- leaf cloud-account {
- description
- "The cloud account to use when requesting resources for
- this vlr";
- type leafref {
- path "/rw-cloud:cloud/rw-cloud:account/rw-cloud:name";
- }
- }
- leaf om-datacenter {
- description
- "Openmano datacenter name to use when instantiating
- the network service. This is only used when openmano
- is selected as the cloud account. This should be superceded
- by multiple cloud accounts when that becomes available.";
- type string;
- }
-
-
- leaf network_pool {
- description "The network pool the resource was allocated from.";
- type string;
- }
-
- leaf assigned-subnet {
- description "Subnet added for the VL";
- type string;
- }
-
- leaf operational-status-details {
- description
- "The error message in case of a failed VLR operational status";
- type string;
- }
- }
-}
-
-// vim: sw=2
diff --git a/models/yang/rw-vnfd.yang b/models/yang/rw-vnfd.yang
deleted file mode 100644
index 29eb852..0000000
--- a/models/yang/rw-vnfd.yang
+++ /dev/null
@@ -1,117 +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 rw-vnfd
-{
- namespace "http://riftio.com/ns/riftware-1.0/rw-vnfd";
- prefix "rw-vnfd";
-
- import vnfd {
- prefix "vnfd";
- }
-
- import rwvcs-types {
- prefix "rwvcstypes";
- }
-
- import rw-pb-ext { prefix "rwpb"; }
-
- import ietf-yang-types {
- prefix "yang";
- }
-
- import mano-types {
- prefix "manotypes";
- }
-
- revision 2015-09-10 {
- description
- "Initial revision. This YANG file augments
- the base MANO VNFD";
- reference
- "Derived from earlier versions of base YANG files";
- }
-
- augment /vnfd:vnfd-catalog/vnfd:vnfd {
- uses manotypes:control-param;
- uses manotypes:action-param;
- leaf meta {
- description
- "Any meta-data needed by the UI";
- type string;
- }
- list component {
- description
- "This section defines the RIFT.ware
- virtual components";
- key "component-name";
- rwpb:msg-new VcsComponent;
- rwpb:application-request-point;
-
- leaf component-name {
- description "";
- type string;
- }
-
- leaf component-type {
- description "";
- type rwvcstypes:component_type;
- mandatory true;
- }
-
- choice component {
- case rwvcs-rwcollection {
- uses rwvcstypes:rwvcs-rwcollection;
- }
- case rwvcs-rwvm {
- uses rwvcstypes:rwvcs-rwvm;
- }
- case rwvcs-rwproc {
- uses rwvcstypes:rwvcs-rwproc;
- }
- case native-proc {
- uses rwvcstypes:native-proc;
- }
- case rwvcs-rwtasklet {
- uses rwvcstypes:rwvcs-rwtasklet;
- }
- }
- } // list component
- }
-
- augment /vnfd:vnfd-catalog/vnfd:vnfd/vnfd:vdu {
- leaf vcs-component-ref {
- description
- "This defines the software components using the
- RIFT.ware Virtual Component System (VCS). This
- also allows specifying a state machine during
- the VM startup.
- NOTE: This is an significant addition to MANO,
- since MANO doesn't clearly specify a method to
- identify various software components in a VM.
- Also using a state machine is not something that
- is well described in MANO.";
- type leafref {
- path "/vnfd:vnfd-catalog/vnfd:vnfd/rw-vnfd:component/rw-vnfd:component-name";
- }
- }
- }
-}
-// vim: sw=2
diff --git a/models/yang/rw-vnfr.tailf.yang b/models/yang/rw-vnfr.tailf.yang
deleted file mode 100644
index 6090fcf..0000000
--- a/models/yang/rw-vnfr.tailf.yang
+++ /dev/null
@@ -1,50 +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 rw-vnfr-annotation
-{
- namespace "http://riftio.com/ns/riftware-1.0/rw-vnfr-annotation";
- prefix "rw-vnfr-ann";
-
- import tailf-common {
- prefix tailf;
- }
-
- import rw-vnfr {
- prefix rw-vnfr;
- }
-
- import vnfr {
- prefix vnfr;
- }
-
- tailf:annotate "/vnfr:vnfr-catalog/rw-vnfr:vnfd-ref-count" {
- tailf:callpoint rw_callpoint;
- }
-
- tailf:annotate "/vnfr:vnfr-catalog/vnfr:vnfr/rw-vnfr:operational-events" {
- tailf:callpoint rw_callpoint;
- }
-
- tailf:annotate "/rw-vnfr:vnfr-console" {
- tailf:callpoint rw_callpoint;
- }
-
-}
diff --git a/models/yang/rw-vnfr.yang b/models/yang/rw-vnfr.yang
deleted file mode 100644
index be8acb4..0000000
--- a/models/yang/rw-vnfr.yang
+++ /dev/null
@@ -1,324 +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 rw-vnfr
-{
- namespace "http://riftio.com/ns/riftware-1.0/rw-vnfr";
- prefix "rw-vnfr";
-
- import mano-types {
- prefix "manotypes";
- }
-
- import rw-pb-ext { prefix "rwpb"; }
-
- import vnfr {
- prefix "vnfr";
- }
-
- import vnfd {
- prefix "vnfd";
- }
-
- import rw-cloud {
- prefix "rw-cloud";
- }
-
- import rwvcs-types {
- prefix "rwvcstypes";
- }
-
- import ietf-yang-types {
- prefix "yang";
- }
-
- import ietf-inet-types {
- prefix "inet";
- }
-
- revision 2015-09-10 {
- description
- "Initial revision. This YANG file augments
- the base MANO VNFD";
- reference
- "Derived from earlier versions of base YANG files";
- }
-
- grouping vnfr-operational-events {
- list operational-events {
- key "id";
- description
- "Recent operational events for VNFR
- Though the model does not impose any restrictions on the numbe of events,
- the max operational events will be limited to the most recent 10";
-
- leaf id {
- description "The id of the instance";
- type uint64;
- }
-
- leaf timestamp {
- description
- "The timestamp of this event expressed as seconds since
- unix epoch - 1970-01-01T00:00:00Z";
- type uint32;
- }
- leaf event {
- description "The event";
- type enumeration {
- rwpb:enum-type "VnfrOperationalEvent";
- enum instantiate-rcvd;
- enum vl-inited;
- enum vnf-inited;
- enum running;
- enum terminate-rcvd;
- enum vnf-terminated;
- enum vl-terminated;
- enum terminated;
- }
- }
- leaf description {
- description
- "The description of this event";
- type string;
- }
- }
- }
-
- grouping vdur-operational-events {
- list operational-events {
- key "id";
- description
- "Recent operational events for VDUR
- Though the model does not impose any restrictions on the numbe of events,
- the max operational events will be limited to the most recent 10";
-
- leaf id {
- description "The id of the instance";
- type uint64;
- }
-
- leaf timestamp {
- description
- "The timestamp of this event expressed as seconds since
- unix epoch - 1970-01-01T00:00:00Z";
- type uint32;
- }
- leaf event {
- description "The event";
- type enumeration {
- rwpb:enum-type "VdurOperationalEvent";
- enum instantiate-rcvd;
- enum vm-allocation-requested;
- enum running;
- enum terminate-rcvd;
- enum vm-terminate-requested;
- enum terminated;
- }
- }
- leaf description {
- description
- "The description of this event";
- type string;
- }
- }
- }
-
- augment /vnfr:vnfr-catalog/vnfr:vnfr {
- uses manotypes:action-param;
- uses manotypes:control-param;
-
- leaf cloud-account {
- description
- "The cloud account to use when requesting resources for
- this vnf";
- type leafref {
- path "/rw-cloud:cloud/rw-cloud:account/rw-cloud:name";
- }
- }
-
- leaf om-datacenter {
- description
- "Openmano datacenter name to use when instantiating
- the network service. This is only used when openmano
- is selected as the cloud account. This should be superceded
- by multiple cloud accounts when that becomes available.";
- type string;
- }
-
- container nfvi-metrics {
- container vm {
- leaf label {
- description
- "Label to show in UI";
- type string;
- default "VM";
- }
-
- leaf active-vm {
- description
- "The number of active VMs.";
- type uint64;
- }
-
- leaf inactive-vm {
- description
- "The number of inactive VMs.";
- type uint64;
- }
- }
-
- uses manotypes:nfvi-metrics;
- }
-
- list component {
- description
- "This section defines the RIFT.ware
- virtual components";
- key "component-name";
- rwpb:msg-new VcsComponentOp;
- rwpb:application-request-point;
-
- leaf component-name {
- description "";
- type string;
- }
-
- leaf component-type {
- description "";
- type rwvcstypes:component_type;
- mandatory true;
- }
-
- choice component {
- case rwvcs-rwcollection {
- uses rwvcstypes:rwvcs-rwcollection;
- }
- case rwvcs-rwvm {
- uses rwvcstypes:rwvcs-rwvm;
- }
- case rwvcs-rwproc {
- uses rwvcstypes:rwvcs-rwproc;
- }
- case native-proc {
- uses rwvcstypes:native-proc;
- }
- case rwvcs-rwtasklet {
- uses rwvcstypes:rwvcs-rwtasklet;
- }
- }
- } // list component
-
- uses vnfr-operational-events;
-
- leaf operational-status-details {
- description
- "The error message in case of a failed VNFR operational status";
- type string;
- }
- }
-
- augment /vnfr:vnfr-catalog/vnfr:vnfr/vnfr:vdur {
- leaf vm-pool {
- description
- "The pool from which this vm was allocated from";
- type string;
- }
-
- container nfvi-metrics {
- uses manotypes:nfvi-metrics;
- }
-
- leaf vcs-component-ref {
- description
- "This defines the software components using the
- RIFT.ware Virtual Component System (VCS). This
- also allows specifying a state machine during
- the VM startup.
- NOTE: This is an significant addition to MANO,
- since MANO doesn't clearly specify a method to
- identify various software components in a VM.
- Also using a state machine is not something that
- is well described in MANO.";
- type leafref {
- path "/vnfr:vnfr-catalog/vnfr:vnfr/rw-vnfr:component/rw-vnfr:component-name";
- }
- }
-
- uses vdur-operational-events;
-
- leaf operational-status-details {
- description
- "The error message in case of a failed VDU operational status";
- type string;
- }
- }
- grouping vnfd-ref-count {
- list vnfd-ref-count {
- key "vnfd-id-ref";
- description "This table maintains the number of VNFRs used by each VNFD";
-
- leaf vnfd-id-ref {
- description "Reference to VNFD";
- type leafref {
- path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:id";
- }
- }
- leaf instance-ref-count {
- description
- "Reference count for the number of VNFRs refering this VNFD.
- Every VNF Record instantiated using this descriptor takes
- a reference on the VNFD and releases the reference when the
- virtual network service is terminated. This desciptor cannot
- be deleted when this counter is non zero";
- type uint64;
- }
- }
- }
- augment /vnfr:vnfr-catalog {
- uses vnfd-ref-count;
- }
-
- container vnfr-console {
- config false;
- list vnfr {
- key "id";
- leaf id {
- description "Identifier for the VNFR.";
- type yang:uuid;
- }
- list vdur {
- description "List of Virtual Deployment Units";
- key "id";
- leaf id {
- description "Unique id for the VDU";
- type yang:uuid;
- }
- leaf console-url {
- description "Console URL for this VDU, if available";
- type inet:uri;
- }
- }
- }
- }
-
-}
-
-// vim: sw=2
diff --git a/models/yang/vlr.tailf.yang b/models/yang/vlr.tailf.yang
deleted file mode 100644
index 4bed1d2..0000000
--- a/models/yang/vlr.tailf.yang
+++ /dev/null
@@ -1,37 +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 vlr-annotation
-{
- namespace "http://riftio.com/ns/riftware-1.0/vlr-annotation";
- prefix "vlr-ann";
-
- import tailf-common {
- prefix tailf;
- }
-
- import vlr {
- prefix vlr;
- }
-
- tailf:annotate "/vlr:vlr-catalog" {
- tailf:callpoint rw_callpoint;
- }
-}
diff --git a/models/yang/vlr.yang b/models/yang/vlr.yang
index b079dff..616bad0 100644
--- a/models/yang/vlr.yang
+++ b/models/yang/vlr.yang
@@ -1,7 +1,7 @@
/*
*
- * Copyright 2016 RIFT.IO Inc
+ * 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.
@@ -27,10 +27,6 @@
prefix "rwpb";
}
- import ietf-inet-types {
- prefix "inet";
- }
-
import ietf-yang-types {
prefix "yang";
}
@@ -39,6 +35,14 @@
prefix "manotypes";
}
+ import rw-project {
+ prefix "rw-project";
+ }
+
+ revision 2017-02-08 {
+ description
+ "Update model to support projects.";
+ }
revision 2015-09-10 {
description
@@ -48,125 +52,127 @@
"Derived from earlier versions of base YANG files";
}
- container vlr-catalog {
- config false;
+ augment "/rw-project:project" {
+ container vlr-catalog {
+ config false;
- list vlr {
- key "id";
- unique "name";
+ list vlr {
+ key "id";
+ unique "name";
- leaf id {
- description "Identifier for the VLR.";
- type yang:uuid;
- }
+ leaf id {
+ description "Identifier for the VLR.";
+ type yang:uuid;
+ }
- leaf name {
- description "VLR name.";
- type string;
- }
+ leaf name {
+ description "VLR name.";
+ type string;
+ }
- leaf nsr-id-ref {
- description
+ leaf nsr-id-ref {
+ description
"NS instance identifier.
- This is a leafref /nsr:ns-instance-config/nsr:nsr/nsr:id";
- type yang:uuid;
- }
+ 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
- /nsr:ns-instance-config/nsr:nsr[nsr:id=../nsr-id-ref]/nsd/vld:vld/vld:id";
- type string;
- }
+ 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 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 short-name {
+ description "Short name to appear as label in the UI";
+ type string;
+ }
- leaf vendor {
- description "Provider of the VLR.";
- type string;
- }
+ leaf vendor {
+ description "Provider of the VLR.";
+ type string;
+ }
- leaf description {
- description "Description of the VLR.";
- type string;
- }
+ leaf description {
+ description "Description of the VLR.";
+ type string;
+ }
- leaf version {
- description "Version of the VLR";
- type string;
- }
+ leaf version {
+ description "Version of the VLR";
+ type string;
+ }
- leaf type {
- type manotypes:virtual-link-type;
- }
+ leaf type {
+ type manotypes:virtual-link-type;
+ }
- leaf root-bandwidth {
- description
+ leaf root-bandwidth {
+ description
"For ELAN this is the aggregate bandwidth.";
- type uint64;
- }
+ type uint64;
+ }
- leaf leaf-bandwidth {
- description
+ leaf leaf-bandwidth {
+ description
"For ELAN this is the bandwidth of branches.";
- type uint64;
- }
+ type uint64;
+ }
- leaf create-time {
- description
- "Creation timestamp of this Virtual Link.
+ 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;
- }
+ type uint32;
+ }
- leaf uptime {
- description
- "Active period of this Virtual Link.
+ leaf uptime {
+ description
+ "Active period of this Virtual Link.
Uptime is expressed in seconds";
- type uint32;
- }
+ type uint32;
+ }
- leaf network-id {
- description
+ leaf network-id {
+ description
"Identifier for the allocated network resource.";
- type string;
- }
+ type string;
+ }
- leaf vim-network-name {
- description
+ 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;
+ type string;
}
- }
- leaf operational-status {
- description
- "The operational status of the Virtual Link
+
+ // 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
@@ -175,14 +181,15 @@
failed : The VL instantiation failed in VIM.
";
- type enumeration {
- rwpb:enum-type "VlOperationalStatus";
- enum init;
- enum vl-alloc-pending;
- enum running;
- enum vl-terminate-pending;
- enum terminated;
- enum failed;
+ type enumeration {
+ rwpb:enum-type "VlOperationalStatus";
+ enum init;
+ enum vl-alloc-pending;
+ enum running;
+ enum vl-terminate-pending;
+ enum terminated;
+ enum failed;
+ }
}
}
}
diff --git a/models/yang/vnfd-base.yang b/models/yang/vnfd-base.yang
new file mode 100644
index 0000000..5d76290
--- /dev/null
+++ b/models/yang/vnfd-base.yang
@@ -0,0 +1,540 @@
+
+/*
+ *
+ * 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;
+ }
+
+ 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;
+
+ 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/yang/vnfd.yang b/models/yang/vnfd.yang
index 60fc757..d1c9df6 100644
--- a/models/yang/vnfd.yang
+++ b/models/yang/vnfd.yang
@@ -1,7 +1,7 @@
/*
*
- * Copyright 2016 RIFT.IO Inc
+ * 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.
@@ -23,12 +23,13 @@
namespace "urn:ietf:params:xml:ns:yang:nfvo:vnfd";
prefix "vnfd";
- import mano-types {
- prefix "manotypes";
+ import vnfd-base {
+ prefix "vnfd-base";
}
- import ietf-inet-types {
- prefix "inet";
+ revision 2017-02-28 {
+ description
+ "Update model to support projects.";
}
revision 2015-09-10 {
@@ -38,497 +39,15 @@
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;
- }
- }
-
- 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;
- }
-
- 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 {
- description "Description of internal 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;
- }
-
- 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 leafref {
- path "../../ip-profiles/name";
- }
- }
- }
- }
- }
-
- 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;
- }
-
- list internal-interface {
- description
- "List of internal interfaces for the VNF";
- key name;
-
- leaf name {
- description
- "Name of internal interface. Note that this
- name has only local significance to the VDU.";
- type string;
- }
-
- leaf vdu-internal-connection-point-ref {
- type leafref {
- path "../../internal-connection-point/id";
- }
- }
- uses virtual-interface;
- }
-
- list external-interface {
- description
- "List of external interfaces for the VNF.
- The external interfaces enable sending
- traffic to and from VNF.";
- key name;
-
- leaf name {
- description
- "Name of the external interface. Note that
- this name has only local significance to
- the VDU.";
- type string;
- }
-
- leaf vnfd-connection-point-ref {
- description
- "Name of the 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";
- }
- }
- }
- }
- }
-
container vnfd-catalog {
description
- "Virtual Network Function Descriptor (VNFD).";
+ "Virtual Network Function Descriptor (VNFD).";
list vnfd {
key "id";
- uses vnfd-descriptor;
- }
+ uses vnfd-base:vnfd-descriptor;
+ }
}
}
diff --git a/models/yang/vnffgd.yang b/models/yang/vnffgd.yang
new file mode 100644
index 0000000..652ee81
--- /dev/null
+++ b/models/yang/vnffgd.yang
@@ -0,0 +1,82 @@
+
+/*
+ *
+ * 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/yang/vnfr.tailf.yang b/models/yang/vnfr.tailf.yang
deleted file mode 100644
index 150dc9a..0000000
--- a/models/yang/vnfr.tailf.yang
+++ /dev/null
@@ -1,45 +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 vnfr-annotation
-{
- namespace "http://riftio.com/ns/riftware-1.0/vnfr-annotation";
- prefix "vnfr-ann";
-
- import tailf-common {
- prefix tailf;
- }
-
- import vnfr {
- prefix vnfr;
- }
-
- tailf:annotate "/vnfr:vnfr-catalog" {
- tailf:callpoint rw_callpoint;
- }
-
- tailf:annotate "/vnfr:create-alarm" {
- tailf:actionpoint rw_actionpoint;
- }
-
- tailf:annotate "/vnfr:destroy-alarm" {
- tailf:actionpoint rw_actionpoint;
- }
-}
diff --git a/models/yang/vnfr.yang b/models/yang/vnfr.yang
index 773cc95..d47c6a7 100644
--- a/models/yang/vnfr.yang
+++ b/models/yang/vnfr.yang
@@ -1,7 +1,7 @@
/*
*
- * Copyright 2016 RIFT.IO Inc
+ * 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.
@@ -31,12 +31,16 @@
prefix "rwpb";
}
- import vnfd {
- prefix "vnfd";
+ import vnfd-base {
+ prefix "vnfd-base";
}
- import nsd {
- prefix "nsd";
+ import project-vnfd {
+ prefix "project-vnfd";
+ }
+
+ import project-nsd {
+ prefix "project-nsd";
}
import vlr {
@@ -51,6 +55,15 @@
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
@@ -133,120 +146,166 @@
}
}
- container vnfr-catalog {
- config false;
- list vnfr {
- description
- "Virtual Network Function Record (VNFR).";
- key "id";
- unique "name";
+ grouping associated-virtual-cps {
+ list virtual-cps {
+ key "name";
+ uses vnfd-base:common-connection-point;
- leaf id {
- description "Identifier for the VNFR.";
- type yang:uuid;
+ leaf ip-address {
+ description
+ "IP address assigned to the virtual connection point";
+ type inet:ip-address;
}
- leaf nsr-id-ref {
+ 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 "/nsd:nsd-catalog/nsd:nsd/nsd:constituent-vnfd/nsd:member-vnf-index";
+ type yang:uuid;
}
- }
- leaf dashboard-url {
- description "Dashboard URL";
- type inet:uri;
- }
+ 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 name {
- description "VNFR name.";
- type string;
- }
+ leaf dashboard-url {
+ description "Dashboard URL";
+ type inet:uri;
+ }
- leaf short-name {
- description "VNFR short name.";
- type string;
- }
+ leaf name {
+ description "VNFR name.";
+ type string;
+ }
- leaf vendor {
- description "Vendor of the VNFR.";
- type string;
- }
+ leaf short-name {
+ description "VNFR short name.";
+ type string;
+ }
- leaf description {
- description "Description of the VNFR.";
- type string;
- }
+ leaf vendor {
+ description "Vendor of the VNFR.";
+ type string;
+ }
- leaf version {
- description "Version of the VNFR";
- type string;
- }
+ leaf description {
+ description "Description of the VNFR.";
+ type string;
+ }
- leaf create-time {
- description
- "Creation timestamp of this Virtual Network
+ 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;
- }
+ type uint32;
+ }
- leaf uptime {
- description
- "Active period of this Virtual Network Function.
+ leaf uptime {
+ description
+ "Active period of this Virtual Network Function.
Uptime is expressed in seconds";
- type uint32;
- }
+ type uint32;
+ }
- container vnfd {
- description "VNF descriptor used to instantiate this VNF";
- uses vnfd:vnfd-descriptor;
- }
+ container vnfd {
+ description "VNF descriptor used to instantiate this VNF";
+ uses vnfd-base:vnfd-descriptor;
+ }
- // Use parameters provided here to configure this VNF
+ 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;
- }
- }
+ // Mainly used by Mon-params & dashboard url
+ container mgmt-interface {
+ leaf ip-address {
+ type inet:ip-address;
+ }
- list internal-vlr {
- key "vlr-ref";
+ leaf port {
+ type inet:port-number;
+ }
- leaf vlr-ref {
- description "Reference to a VLR record in the VLR catalog";
- type leafref {
- path "/vlr:vlr-catalog/vlr:vlr/vlr:id";
+ 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;
+ }
}
}
- leaf-list internal-connection-point-ref {
- type leafref {
- path "../../vdur/internal-connection-point/id";
+ 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 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
@@ -257,133 +316,126 @@
different VNFs. The NFVO will use VLDs and VNFFGs at
the network service level to construct network services.";
- uses vnfd:common-connection-point;
+ uses vnfd-base:common-connection-point;
- leaf vlr-ref {
- description
+ leaf vlr-ref {
+ description
"Reference to the VLR associated with this connection point";
- type leafref {
- path "/vlr:vlr-catalog/vlr:vlr/vlr:id";
+ type leafref {
+ path "../../../../vlr:vlr-catalog/vlr:vlr/vlr:id";
+ }
}
- }
- leaf ip-address {
- description
+ 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 {
- rwpb:field-inline "true";
- rwpb:field-string-max 64;
- type string;
- }
- }
-
- 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";
- rwpb:field-inline "true";
- rwpb:field-string-max 64;
- type string;
- }
-
- leaf vdu-id-ref {
- type leafref {
- path "../../vnfd/vdu/id";
+ 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;
}
- leaf vim-id {
- description "Allocated VM resource id";
- type string;
- }
+ list vdur {
+ description "List of Virtual Deployment Units";
+ key "id";
+ unique "name";
- leaf flavor-id {
- description "VIM assigned flavor id";
- type string;
- }
+ leaf id {
+ description "Unique id for the VDU";
+ type yang:uuid;
+ }
- leaf image-id {
- description "VIM assigned image id";
- type string;
- }
+ leaf name {
+ description "name of the instantiated VDUR";
+ type string;
+ }
- leaf management-ip {
- description "Management IP address";
- type inet:ip-address;
- }
+ 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";
+ rwpb:field-inline "true";
+ rwpb:field-string-max 64;
+ type string;
+ }
- leaf vm-management-ip {
- description "VM Private Management IP address";
- type inet:ip-address;
- }
+ leaf vdu-id-ref {
+ type leafref {
+ path "../../vnfd/vdu/id";
+ }
+ }
- leaf console-url {
- description "Console URL for this VDU, if available";
- type inet:uri;
- }
+ leaf vim-id {
+ description "Allocated VM resource id";
+ type string;
+ }
- uses manotypes:vm-flavor;
- uses manotypes:guest-epa;
- uses manotypes:vswitch-epa;
- uses manotypes:hypervisor-epa;
- uses manotypes:host-epa;
+ leaf flavor-id {
+ description "VIM assigned flavor id";
+ type string;
+ }
- uses manotypes:supplemental-boot-data;
+ 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";
+ list volumes {
+ key "name";
- leaf name {
- description "Name of the disk-volumes, e.g. vda, vdb etc";
- type string;
+ 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;
}
- leaf volume-id {
- description "VIM assigned volume id";
- type string;
- }
-
- uses manotypes:volume-info;
- }
-
- list alarms {
- description
- "A list of the alarms that have been created for this VDU";
-
- key "alarm-id";
- uses manotypes:alarm;
- }
-
- list internal-connection-point {
- key "id";
- description
+ 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
@@ -391,64 +443,76 @@
has only one VNFC, it may not have any internal
connection points.";
- uses vnfd:common-connection-point;
+ uses vnfd-base:common-connection-point;
- leaf ip-address {
- description
+ leaf ip-address {
+ description
"IP address assigned to the internal connection point";
- type inet:ip-address;
- }
- leaf mac-address {
- description
+ type inet:ip-address;
+ }
+ leaf mac-address {
+ description
"MAC address assigned to the internal connection point";
- // type inet:mac-address;
- type string;
- }
- }
+ // type inet:mac-address;
+ type string;
+ }
- list internal-interface {
+ leaf connection-point-id {
+ type string;
+ }
+
+ uses associated-virtual-cps;
+ }
+
+ list interface {
description
- "List of internal interfaces for the VNF";
+ "List of interfaces (internal and external) for the VNF";
key name;
leaf name {
description
- "Name of internal interface. Note that this
- name has only local significance to the VDU.";
+ "Name of the interface. Note that this
+ name has only local significance to the VDU.";
type string;
}
- leaf vdur-internal-connection-point-ref {
- type leafref {
- path "../../internal-connection-point/id";
+ 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;
}
- list external-interface {
- description
- "List of external interfaces for the VNF.
- The external interfaces enable sending
- traffic to and from VNF.";
- key name;
-
- leaf name {
- description
- "Name of the external interface. Note that
- this name has only local significance.";
- type string;
- }
-
- leaf vnfd-connection-point-ref {
- description
- "Name of the external connection point.";
- type leafref {
- path "../../../connection-point/name";
- }
- }
- uses virtual-interface;
- }
leaf operational-status {
description
"The operational status of the VDU
@@ -462,112 +526,82 @@
failed : The VDU instantiation failed.
";
+ type enumeration {
+ rwpb:enum-type "VduOperationalStatus";
+ enum init;
+ enum vm-init-phase;
+ enum vm-alloc-pending;
+ enum running;
+ enum terminate;
+ enum vl-terminate-phase;
+ enum terminated;
+ enum failed;
+ }
+ }
+
+ 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 enumeration {
- rwpb:enum-type "VduOperationalStatus";
+ rwpb:enum-type "VnfrOperationalStatus";
+ enum pre-init;
enum init;
+ enum vl-init-phase;
enum vm-init-phase;
- enum vm-alloc-pending;
enum running;
enum terminate;
+ enum vm-terminate-phase;
enum vl-terminate-phase;
enum terminated;
enum failed;
}
}
- uses placement-group-info;
- }
- uses manotypes:monitoring-param;
-
- leaf operational-status {
- description
- "The operational status of the VNFR instance
- 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 enumeration {
- rwpb:enum-type "VnfrOperationalStatus";
- enum init;
- enum vl-init-phase;
- enum vm-init-phase;
- enum running;
- enum terminate;
- enum vm-terminate-phase;
- enum vl-terminate-phase;
- enum terminated;
- enum failed;
- }
- }
- leaf config-status {
- description
- "The configuration status of the NS instance
+ 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;
+ type enumeration {
+ enum configuring {
+ value 1;
+ }
+ enum configured {
+ value 2;
+ }
+ enum failed {
+ value 3;
+ }
+ enum config-not-needed {
+ value 4;
+ }
}
}
- }
- uses placement-group-info;
- }
- }
+ uses placement-group-info;
- rpc create-alarm {
- description "Create an alert for a running VDU";
- input {
- leaf cloud-account {
- mandatory true;
- type string;
- }
-
- leaf vdur-id {
- mandatory true;
- type string;
- }
-
- container alarm {
- uses manotypes:alarm;
- }
- }
-
- output {
- leaf alarm-id {
- type string;
- }
- }
- }
-
- rpc destroy-alarm {
- description "Destroy an alert that is associated with a running VDU";
- input {
- leaf cloud-account {
- mandatory true;
- type string;
- }
-
- leaf alarm-id {
- mandatory true;
- type string;
+ container cloud-config {
+ rwpb:msg-new VnfrCloudConfig;
+ uses manotypes:cloud-config;
+ }
}
}
}