+++ /dev/null
-
-/*
- *
- * Copyright 2017 RIFT.IO Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- *
- */
-
-module project-nsd
-{
- namespace "http://riftio.com/ns/riftware-1.0/project-nsd";
- prefix "project-nsd";
-
- import mano-types {
- prefix "manotypes";
- }
-
- import project-vnfd {
- prefix "project-vnfd";
- }
-
- import nsd-base {
- prefix "nsd-base";
- }
-
- import rw-project {
- prefix "rw-project";
- }
-
-
- revision 2017-02-28 {
- description
- "Initial revision. This YANG file defines
- the Network Service Descriptor (NSD)
- under projects";
- reference
- "Derived from earlier versions of base YANG files";
- }
-
-
- grouping nsd-constituent-vnfd {
- list constituent-vnfd {
- description
- "List of VNFDs that are part of this
- network service.";
-
- key "member-vnf-index";
-
- leaf member-vnf-index {
- description
- "Identifier/index for the VNFD. This separate id
- is required to ensure that multiple VNFs can be
- part of single NS";
- type uint64;
- }
-
- leaf vnfd-id-ref {
- description
- "Identifier for the VNFD.";
- type leafref {
- path "/rw-project:project[rw-project:name = current()/../../../../rw-project:name]" +
- "/project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
- }
- }
-
- leaf start-by-default {
- description
- "VNFD is started as part of the NS instantiation";
- type boolean;
- default true;
- }
- }
- }
-
- grouping nsr-nsd-constituent-vnfd {
- list constituent-vnfd {
- description
- "List of VNFDs that are part of this
- network service.";
-
- key "member-vnf-index";
-
- leaf member-vnf-index {
- description
- "Identifier/index for the VNFD. This separate id
- is required to ensure that multiple VNFs can be
- part of single NS";
- type uint64;
- }
-
- leaf vnfd-id-ref {
- description
- "Identifier for the VNFD.";
- type leafref {
- path "/rw-project:project[rw-project:name = current()/../../../../../rw-project:name]" +
- "/project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
- }
- }
-
- leaf start-by-default {
- description
- "VNFD is started as part of the NS instantiation";
- type boolean;
- default true;
- }
- }
- }
-
- grouping nsd-vld {
- list vld {
-
- key "id";
-
- uses nsd-base:nsd-vld-common;
-
- list vnfd-connection-point-ref {
- description
- "A list of references to connection points.";
- key "member-vnf-index-ref vnfd-connection-point-ref";
-
- leaf member-vnf-index-ref {
- description "Reference to member-vnf within constituent-vnfds";
- type leafref {
- path "../../../constituent-vnfd/member-vnf-index";
- }
- }
-
- leaf vnfd-id-ref {
- description
- "A reference to a vnfd. This is a
- leafref to path:
- ../../constituent-vnfd
- + [id = current()/../id-ref]
- + /vnfd-id-ref
- NOTE: An issue with confd is preventing the
- use of xpath. Seems to be an issue with leafref
- to leafref, whose target is in a different module.
- Once that is resolved this will switched to use
- leafref";
- //type string;
- type leafref {
- path "../../../constituent-vnfd[member-vnf-index = current()/../member-vnf-index-ref]/vnfd-id-ref";
- }
- }
-
- leaf vnfd-connection-point-ref {
- description "A reference to a connection point name";
- type leafref {
- path "../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd" +
- "[project-vnfd:id = current()/../vnfd-id-ref]/" +
- "project-vnfd:connection-point/project-vnfd:name";
- }
- }
- }
- }
- }
-
- grouping nsr-nsd-vld {
- list vld {
-
- key "id";
-
- uses nsd-base:nsd-vld-common;
-
- list vnfd-connection-point-ref {
- description
- "A list of references to connection points.";
- key "member-vnf-index-ref vnfd-connection-point-ref";
-
- leaf member-vnf-index-ref {
- description "Reference to member-vnf within constituent-vnfds";
-
- type leafref {
- path "../../../constituent-vnfd/member-vnf-index";
- }
- }
-
- leaf vnfd-id-ref {
- description
- "A reference to a vnfd. This is a
- leafref to path:
- ../../nsd:constituent-vnfd
- + [nsd:id = current()/../nsd:id-ref]
- + /nsd:vnfd-id-ref
- NOTE: An issue with confd is preventing the
- use of xpath. Seems to be an issue with leafref
- to leafref, whose target is in a different module.
- Once that is resolved this will switched to use
- leafref";
- type string;
- }
-
- leaf vnfd-connection-point-ref {
- description "A reference to a connection point name";
- type leafref {
- path "../../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd" +
- "[project-vnfd:id = current()/../vnfd-id-ref]/" +
- "project-vnfd:connection-point/project-vnfd:name";
- }
- }
- }
- }
- }
-
- grouping nsd-vnf-dependency {
- list vnf-dependency {
- description
- "List of VNF dependencies.";
- key vnf-source-ref;
- leaf vnf-source-ref {
- type leafref {
- path "../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
- }
- }
- leaf vnf-depends-on-ref {
- description
- "Reference to VNF that sorce VNF depends.";
- type leafref {
- path "../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
- }
- }
- }
- }
-
- grouping nsr-nsd-vnf-dependency {
- list vnf-dependency {
- description
- "List of VNF dependencies.";
- key vnf-source-ref;
- leaf vnf-source-ref {
- type leafref {
- path "../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
- }
- }
- leaf vnf-depends-on-ref {
- description
- "Reference to VNF that sorce VNF depends.";
- type leafref {
- path "../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
- }
- }
- }
- }
-
- grouping nsd-placement-groups {
- list placement-groups {
- description "List of placement groups at NS level";
-
- key "name";
- uses manotypes:placement-group-info;
-
- list member-vnfd {
- description
- "List of VNFDs that are part of this placement group";
-
- key "member-vnf-index-ref";
-
- leaf member-vnf-index-ref {
- description "member VNF index of this member VNF";
- type leafref {
- path "../../../constituent-vnfd/member-vnf-index";
- }
- }
-
- leaf vnfd-id-ref {
- description
- "Identifier for the VNFD.";
- type leafref {
- path "../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
- }
- }
- }
- }
- }
-
- grouping nsr-nsd-placement-groups {
- list placement-groups {
- description "List of placement groups at NS level";
-
- key "name";
- uses manotypes:placement-group-info;
-
- list member-vnfd {
- description
- "List of VNFDs that are part of this placement group";
-
- key "member-vnf-index-ref";
-
- leaf member-vnf-index-ref {
- description "member VNF index of this member VNF";
- type leafref {
- path "../../../constituent-vnfd/member-vnf-index";
- }
- }
-
- leaf vnfd-id-ref {
- description
- "Identifier for the VNFD.";
- type leafref {
- path "../../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd/project-vnfd:id";
- }
- }
- }
- }
- }
-
- grouping nsd-monitoring-param {
-
- list monitoring-param {
- key "id";
-
- uses nsd-base:monitoring-param-common;
-
- list vnfd-monitoring-param {
- description "A list of VNFD monitoring params";
- key "member-vnf-index-ref vnfd-monitoring-param-ref";
-
- leaf vnfd-id-ref {
- description
- "A reference to a vnfd. This is a
- leafref to path:
- ../../../../nsd:constituent-vnfd
- + [nsd:id = current()/../nsd:id-ref]
- + /nsd:vnfd-id-ref
- NOTE: An issue with confd is preventing the
- use of xpath. Seems to be an issue with leafref
- to leafref, whose target is in a different module.
- Once that is resolved this will switched to use
- leafref";
-
- type leafref {
- path "../../../constituent-vnfd" +
- "[member-vnf-index = current()/../member-vnf-index-ref]" +
- "/vnfd-id-ref";
- }
- }
-
- leaf vnfd-monitoring-param-ref {
- description "A reference to the VNFD monitoring param";
- type leafref {
- path "../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd"
- + "[project-vnfd:id = current()/../vnfd-id-ref]"
- + "/project-vnfd:monitoring-param/project-vnfd:id";
- }
- }
-
- leaf member-vnf-index-ref {
- description
- "Optional reference to member-vnf within constituent-vnfds";
- type leafref {
- path "../../../constituent-vnfd/member-vnf-index";
- }
- }
- }
- }
- }
-
- grouping nsr-nsd-monitoring-param {
- list monitoring-param {
- key "id";
-
- uses nsd-base:monitoring-param-common;
-
- list vnfd-monitoring-param {
- description "A list of VNFD monitoring params";
- key "member-vnf-index-ref vnfd-monitoring-param-ref";
-
- leaf vnfd-id-ref {
- description
- "A reference to a vnfd. This is a
- leafref to path:
- ../../../../nsd:constituent-vnfd
- + [nsd:id = current()/../nsd:id-ref]
- + /nsd:vnfd-id-ref
- NOTE: An issue with confd is preventing the
- use of xpath. Seems to be an issue with leafref
- to leafref, whose target is in a different module.
- Once that is resolved this will switched to use
- leafref";
-
- type string;
- }
-
- leaf vnfd-monitoring-param-ref {
- description "A reference to the VNFD monitoring param";
- type leafref {
- path "../../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd"
- + "[project-vnfd:id = current()/../vnfd-id-ref]"
- + "/project-vnfd:monitoring-param/project-vnfd:id";
- }
- }
-
- leaf member-vnf-index-ref {
- description
- "Optional reference to member-vnf within constituent-vnfds";
- type leafref {
- path "../../../constituent-vnfd/member-vnf-index";
- }
- }
- }
- }
- }
-
- grouping nsd-service-primitive {
- list service-primitive {
- description
- "Network service level service primitives.";
-
- key "name";
-
- leaf name {
- description
- "Name of the service primitive.";
- type string;
- }
-
- list parameter {
- description
- "List of parameters for the service primitive.";
-
- key "name";
- uses manotypes:primitive-parameter;
- }
-
- uses manotypes:ui-primitive-group;
-
- list vnf-primitive-group {
- description
- "List of service primitives grouped by VNF.";
-
- key "member-vnf-index-ref";
- leaf member-vnf-index-ref {
- description
- "Reference to member-vnf within constituent-vnfds";
- type leafref {
- path "../../../constituent-vnfd/member-vnf-index";
- }
- }
-
- leaf vnfd-id-ref {
- description
- "A reference to a vnfd. This is a leafref";
-
- type leafref {
- path "../../../constituent-vnfd" +
- "[member-vnf-index = current()/../member-vnf-index-ref]" + "/vnfd-id-ref";
- }
- }
-
- leaf vnfd-name {
- description
- "Name of the VNFD";
- type leafref {
- path "../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd"
- + "[project-vnfd:id = current()/../vnfd-id-ref]"
- + "/project-vnfd:name";
- }
- }
-
- list primitive {
- key "index";
-
- leaf index {
- description "Index of this primitive";
- type uint32;
- }
-
- leaf name {
- description "Name of the primitive in the VNF primitive ";
- type string;
- }
- }
- }
-
- leaf user-defined-script {
- description
- "A user defined script.";
- type string;
- }
- }
- }
-
- grouping nsr-nsd-service-primitive {
- list service-primitive {
- description
- "Network service level service primitives.";
-
- key "name";
-
- leaf name {
- description
- "Name of the service primitive.";
- type string;
- }
-
- list parameter {
- description
- "List of parameters for the service primitive.";
-
- key "name";
- uses manotypes:primitive-parameter;
- }
-
- uses manotypes:ui-primitive-group;
-
- list vnf-primitive-group {
- description
- "List of service primitives grouped by VNF.";
-
- key "member-vnf-index-ref";
- leaf member-vnf-index-ref {
- description
- "Reference to member-vnf within constituent-vnfds";
- type leafref {
- path "../../../constituent-vnfd/member-vnf-index";
- }
- }
-
- leaf vnfd-id-ref {
- description
- "A reference to a vnfd. This is a leafref";
-
- type leafref {
- path "../../../constituent-vnfd" +
- "[member-vnf-index = current()/../member-vnf-index-ref]" + "/vnfd-id-ref";
- }
- }
-
- leaf vnfd-name {
- description
- "Name of the VNFD";
- type leafref {
- path "../../../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd"
- + "[project-vnfd:id = current()/../vnfd-id-ref]"
- + "/project-vnfd:name";
- }
- }
-
- list primitive {
- key "index";
-
- leaf index {
- description "Index of this primitive";
- type uint32;
- }
-
- leaf name {
- description "Name of the primitive in the VNF primitive ";
- type string;
- }
- }
- }
-
- leaf user-defined-script {
- description
- "A user defined script.";
- type string;
- }
- }
- }
-
- grouping nsd-descriptor {
- uses nsd-base:nsd-descriptor-common;
-
- uses nsd-vld;
-
- uses nsd-constituent-vnfd;
-
- uses nsd-placement-groups;
-
- uses nsd-vnf-dependency;
-
- uses nsd-monitoring-param;
-
- uses nsd-service-primitive;
- }
-
- augment "/rw-project:project" {
- container nsd-catalog {
-
- list nsd {
- key id;
-
- uses nsd-descriptor;
- }
- }
- }
-}