BUG 363 -- use yang files from IM repo
[osm/SO.git] / models / plugins / yang / nsr.yang
diff --git a/models/plugins/yang/nsr.yang b/models/plugins/yang/nsr.yang
deleted file mode 100644 (file)
index 12cf850..0000000
+++ /dev/null
@@ -1,1610 +0,0 @@
-
-/*
- * 
- *   Copyright 2016-2017 RIFT.IO Inc
- *
- *   Licensed under the Apache License, Version 2.0 (the "License");
- *   you may not use this file except in compliance with the License.
- *   You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *   Unless required by applicable law or agreed to in writing, software
- *   distributed under the License is distributed on an "AS IS" BASIS,
- *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *   See the License for the specific language governing permissions and
- *   limitations under the License.
- *
- *
- */
-
-module nsr
-{
-  namespace "urn:ietf:params:xml:ns:yang:nfvo:nsr";
-  prefix "nsr";
-
-  import vlr {
-    prefix "vlr";
-  }
-
-  import nsd-base {
-    prefix "nsd-base";
-  }
-
-  import project-nsd {
-    prefix "project-nsd";
-  }
-
-  import project-vnfd {
-    prefix "project-vnfd";
-  }
-
-  import vnfr {
-    prefix "vnfr";
-  }
-
-  import ietf-inet-types {
-    prefix "inet";
-  }
-
-  import ietf-yang-types {
-    prefix "yang";
-  }
-
-  import mano-types {
-    prefix "manotypes";
-  }
-
-  import rw-project {
-    prefix "rw-project";
-  }
-
-  revision 2017-02-08 {
-    description
-      "Update model to support projects.";
-  }
-
-  revision 2015-09-10 {
-    description
-      "Initial revision. This YANG file defines
-       the Network Service Record (NSR)";
-    reference
-      "Derived from earlier versions of base YANG files";
-  }
-
-  typedef vnffgr-operational-status {
-    type enumeration {
-      enum init;
-      enum running;
-      enum terminate;
-      enum terminated;
-      enum failed;
-    }
-  }
-
-  typedef ns-operational-status {
-    type enumeration {
-      enum init;
-      enum vl-init-phase;
-      enum vnf-init-phase;
-      enum running;
-      enum terminate;
-      enum vnf-terminate-phase;
-      enum vl-terminate-phase;
-      enum terminated;
-      enum failed;
-      enum scaling-out;
-      enum scaling-in;
-      enum vl-instantiate;
-      enum vl-terminate;
-    }
-  }
-
-  typedef config-states {
-    type enumeration {
-      enum init;
-      enum configuring;
-      enum config_not_needed;
-      enum configured;
-      enum failed;
-      enum terminate;
-    }
-  }
-
-  typedef trigger-type {
-    type enumeration {
-      enum ns-primitive;
-      enum vnf-primitive;
-    }
-  }
-
-  grouping cloud-config {
-    description "List of cloud config parameters";
-
-    list ssh-authorized-key {
-      key "key-pair-ref";
-
-      description "List of authorized ssh keys as part of cloud-config";
-
-      leaf key-pair-ref {
-        description "A reference to the key pair entry in the global key pair table";
-        type leafref {
-          path "../../../../key-pair/name";
-        }
-      }
-    }
-    list user {
-      key "name";
-      description "Used to configure the list of public keys to be injected as part
-                 of ns instantiation";
-      leaf name {
-        description "Name of this key pair";
-        type string;
-      }
-      leaf user-info {
-        description "The user name's real name";
-        type string;
-      }
-      list ssh-authorized-key {
-        key "key-pair-ref";
-
-        description "Used to configure the list of public keys to be injected as part
-                        of ns instantiation";
-
-        leaf key-pair-ref {
-          description "A reference to the key pair entry in the global key pair table";
-          type leafref {
-            path "../../../../../key-pair/name";
-          }
-        }
-      }
-    }
-  }
-
-  augment "/rw-project:project" {
-    list key-pair {
-      key "name";
-      description "Used to configure the list of public keys to be injected as part
-                 of ns instantiation";
-      leaf name {
-        description "Name of this key pair";
-        type string;
-      }
-
-      leaf key {
-        description "Key associated with this key pair";
-        type string;
-      }
-    }
-  }
-
-  grouping event-service-primitive {
-    leaf seq {
-      description
-          "Sequence number for the service primitive.";
-      type uint64;
-    }
-
-    leaf name {
-      description
-          "Name of the service primitive.";
-      type string;
-      mandatory "true";
-    }
-
-    leaf user-defined-script {
-      description
-          "A user defined script.";
-      type string;
-    }
-
-    list parameter {
-      key "name";
-      leaf name {
-        type string;
-      }
-
-      leaf value {
-        type string;
-      }
-    }
-  }
-
-  augment "/rw-project:project" {
-    container ns-instance-config {
-
-      list nsr {
-        key "id";
-        unique "name";
-
-        leaf id {
-          description "Identifier for the NSR.";
-          type yang:uuid;
-        }
-
-        leaf name {
-          description "NSR name.";
-          type string;
-        }
-
-        leaf short-name {
-          description "NSR short name.";
-          type string;
-        }
-
-        leaf description {
-          description "NSR description.";
-          type string;
-        }
-
-        leaf admin-status {
-          description
-            "This is the administrative status of the NS instance";
-
-          type enumeration {
-            enum ENABLED;
-            enum DISABLED;
-          }
-        }
-
-        container nsd {
-          description "NS descriptor used to instantiate this NS";
-
-          uses nsd-base:nsd-descriptor-common;
-
-          uses project-nsd:nsr-nsd-vld;
-
-          uses project-nsd:nsr-nsd-constituent-vnfd;
-
-          uses project-nsd:nsr-nsd-placement-groups;
-
-          uses project-nsd:nsr-nsd-vnf-dependency;
-
-          uses project-nsd:nsr-nsd-monitoring-param;
-
-          uses project-nsd:nsr-nsd-service-primitive;
-        }
-        uses ns-instance-config-params;
-      }
-    }
-  }
-
-  grouping ns-instance-config-params-common {
-    uses manotypes:input-parameter;
-
-    list scaling-group {
-      description "List of ns scaling group instances";
-      key "scaling-group-name-ref";
-
-      leaf scaling-group-name-ref {
-        description "name of the scaling group
-        leafref path ../nsd/scaling-group-descriptor/name";
-        type string;
-      }
-
-      list instance {
-        description "The instance of the scaling group";
-        key "id";
-        leaf id {
-          description "Scaling group instance uuid";
-          type uint16;
-        }
-      }
-    }
-
-    list nsd-placement-group-maps {
-      description
-          "Mapping from mano-placement groups construct from NSD to cloud
-           platform placement group construct";
-
-      key "placement-group-ref";
-
-      leaf placement-group-ref {
-        description
-          "Reference for NSD placement group";
-        // type leafref {
-        //   path "../../nsd/placement-groups/name";
-        // }
-        type string;
-      }
-      uses manotypes:placement-group-input;
-    }
-  }
-
-  grouping ns-instance-config-params {
-    uses ns-instance-config-params-common;
-
-    list vnfd-placement-group-maps {
-      description
-        "Mapping from mano-placement groups construct from VNFD to cloud
-          platform placement group construct";
-
-      key "placement-group-ref vnfd-id-ref";
-
-      leaf vnfd-id-ref {
-        description
-          "A reference to a vnfd. This is a
-          leafref to path:
-          ../../../../project-nsd:constituent-vnfd
-          + [id = current()/../id-ref]
-          + /project-nsd:vnfd-id-ref
-          NOTE: An issue with confd is preventing the
-          use of xpath. Seems to be an issue with leafref
-          to leafref, whose target is in a different module.
-          Once that is resolved this will switched to use
-          leafref";
-        type yang:uuid;
-      }
-
-      leaf placement-group-ref {
-        description
-          "A reference to VNFD placement group";
-        type leafref {
-          path "../../../../project-vnfd:vnfd-catalog/project-vnfd:vnfd[project-vnfd:id = " +
-            "current()/../vnfd-id-ref]/project-vnfd:placement-groups/project-vnfd:name";
-        }
-      }
-
-      uses manotypes:placement-group-input;
-    }
-
-    uses cloud-config;
-  }
-
-  grouping vnffgr {
-
-    list vnffgr {
-      key "id";
-
-      leaf id {
-        description "Identifier for the VNFFGR.";
-        type yang:uuid;
-      }
-
-      leaf vnffgd-id-ref {
-        description "VNFFG descriptor id reference";
-        type leafref {
-          path "../../../../ns-instance-config/nsr"
-            + "[id=current()/../../ns-instance-config-ref]"
-            + "/nsd/vnffgd/id";
-        }
-      }
-
-      leaf vnffgd-name-ref {
-        description "VNFFG descriptor name reference";
-        type leafref {
-            path "../../../../ns-instance-config/nsr"
-              + "[id=current()/../../ns-instance-config-ref]"
-              + "/nsd/vnffgd"
-              + "[id=current()/../vnffgd-id-ref]"
-              + "/name";
-        }
-      }
-
-      leaf sdn-account {
-        description
-            "The SDN account to use when requesting resources for
-            this vnffgr";
-        type string;
-      }
-
-      leaf cloud-account {
-        description "Cloud Account in which NSR is instantiated";
-        type string;
-      }
-
-      leaf operational-status {
-        description
-          "The operational status of the VNFFGR instance
-            init                : The VNFFGR has just started.
-            running             : The VNFFGR is in running state.
-            terminate           : The VNFFGR is being terminated.
-            terminated          : The VNFFGR is in the terminated state.
-            failed              : The VNFFGR instantiation failed
-          ";
-        type vnffgr-operational-status;
-      }
-
-      list rsp {
-        key "id";
-
-        leaf id {
-          description
-              "Identifier for the RSP.";
-          type yang:uuid;
-        }
-
-        leaf name {
-          description
-              "Name for the RSP";
-          type string;
-        }
-
-        leaf rsp-id {
-          description
-              "Returned Identifier for the RSP.";
-          type yang:uuid;
-        }
-
-        leaf vnffgd-rsp-id-ref {
-          description
-              "Identifier for the VNFFG Descriptor RSP reference";
-          type leafref {
-            path "../../../../../ns-instance-config/nsr"
-              + "[id=current()/../../../ns-instance-config-ref]"
-              + "/nsd/vnffgd"
-              + "[id=current()/../../vnffgd-id-ref]"
-              + "/rsp/id";
-          }
-        }
-
-        leaf vnffgd-rsp-name-ref {
-          description
-              "Name for the VNFFG Descriptor RSP reference";
-          type leafref {
-            path "../../../../../ns-instance-config/nsr"
-              + "[id=current()/../../../ns-instance-config-ref]"
-              + "/nsd/vnffgd"
-              + "[id=current()/../../vnffgd-id-ref]"
-              + "/rsp"
-              + "[id=current()/../vnffgd-rsp-id-ref]"
-              + "/name";
-          }
-        }
-
-        leaf classifier-name {
-          type string;
-        }
-
-        leaf path-id {
-          description
-              "Unique Identifier for the service path";
-          type uint32;
-        }
-
-        list vnfr-connection-point-ref {
-          key "hop-number";
-          leaf hop-number {
-            description
-                "Monotonically increasing number to show service path hop
-                order";
-            type uint8;
-          }
-          leaf service-function-type {
-            description
-                "Type of Service Function.
-                NOTE: This needs to map with Service Function Type in ODL to
-                support VNFFG. Service Function Type is mandatory param in ODL
-                SFC. This is temporarily set to string for ease of use";
-            type string;
-          }
-
-          leaf member-vnf-index-ref {
-            type uint64;
-          }
-          leaf vnfd-id-ref {
-            description
-                "Reference to VNF Descriptor Id";
-            type string;
-          }
-          leaf vnfr-id-ref {
-            description
-                "A reference to a vnfr id";
-                type leafref {
-                  path "../../../../../../vnfr:vnfr-catalog/vnfr:vnfr/vnfr:id";
-                }
-          }
-          leaf vnfr-name-ref {
-            description
-                "A reference to a vnfr name";
-                type leafref {
-                  path "../../../../../../vnfr:vnfr-catalog/vnfr:vnfr/vnfr:name";
-                }
-          }
-          leaf vnfr-connection-point-ref {
-            description
-                "A reference to a vnfr connection point.";
-            type leafref {
-              path "../../../../../../vnfr:vnfr-catalog/vnfr:vnfr"
-                 + "[vnfr:id = current()/../vnfr-id-ref]"
-                 + "/vnfr:connection-point/vnfr:name";
-            }
-          }
-          leaf service-index {
-            description
-                "Location within the service path";
-            type uint8;
-          }
-          container connection-point-params {
-            leaf mgmt-address {
-              type inet:ip-address;
-            }
-            leaf name {
-              type string;
-            }
-            leaf port-id {
-              type string;
-            }
-            leaf vm-id {
-              type string;
-            }
-            leaf address {
-              type inet:ip-address;
-            }
-            leaf port {
-              type inet:port-number;
-            }
-          }
-
-          container service-function-forwarder {
-            leaf name {
-              description
-                  "Service Function Forwarder name";
-              type string;
-            }
-            leaf ip-address {
-              description
-                  "Data Plane IP Address of the SFF";
-              type inet:ip-address;
-            }
-            leaf port {
-              description
-                  "Data Plane Port of the SFF";
-              type inet:port-number;
-            }
-          }
-        }
-      }
-
-      list classifier {
-          key "id";
-
-          leaf id {
-            description
-                "Identifier for the classifier rule.";
-            type yang:uuid;
-          }
-          leaf name {
-            description
-                "Name of the classifier.";
-            type string;
-          }
-          leaf-list classifier-id {
-            description
-                "Returned Identifier for the classifier rule.";
-            type yang:uuid;
-          }
-          leaf rsp-id-ref {
-            description
-                "A reference to the RSP.";
-            type leafref {
-              path "../../rsp/id";
-            }
-          }
-          leaf rsp-name {
-            description
-              "Name for the RSP";
-            type string;
-          }
-          leaf vnfr-id-ref {
-            description
-                "A reference to a vnfr id";
-                type leafref {
-                  path "../../../../../vnfr:vnfr-catalog/vnfr:vnfr/vnfr:id";
-                }
-          }
-          leaf vnfr-name-ref {
-            description
-                "A reference to a vnfr name";
-                type leafref {
-                  path "../../../../../vnfr:vnfr-catalog/vnfr:vnfr/vnfr:name";
-                }
-          }
-          leaf vnfr-connection-point-ref {
-            description
-                "A reference to a vnfr connection point.";
-            type leafref {
-              path "../../../../../vnfr:vnfr-catalog/vnfr:vnfr"
-                 + "[vnfr:id = current()/../vnfr-id-ref]"
-                 + "/vnfr:connection-point/vnfr:name";
-            }
-          }
-          leaf port-id {
-            type string;
-          }
-          leaf vm-id {
-            type string;
-          }
-          leaf ip-address {
-            type string;
-          }
-          leaf sff-name {
-            type string;
-          }
-      }
-    }
-  }
-
-  augment "/rw-project:project" {
-    container ns-instance-opdata {
-      config false;
-
-      list nsr {
-        key "ns-instance-config-ref";
-
-        leaf ns-instance-config-ref {
-          type leafref {
-            path "../../../ns-instance-config/nsr/id";
-          }
-          // type yang:uuid;
-        }
-
-        leaf name-ref {
-          description "Network service name reference";
-          type leafref {
-            path "../../../ns-instance-config/nsr" +
-              "[id=current()/../ns-instance-config-ref]" +
-              "/name";
-          }
-        }
-
-        leaf nsd-ref {
-          description "Network service descriptor id reference";
-          type leafref {
-            path "../../../ns-instance-config/nsr"
-              + "[id=current()/../ns-instance-config-ref]"
-              + "/nsd/id";
-          }
-        }
-
-        leaf nsd-name-ref {
-          description "Network service descriptor name reference";
-          type leafref {
-            path "../../../ns-instance-config/nsr"
-              + "[id=current()/../ns-instance-config-ref]"
-              + "/nsd/name";
-          }
-        }
-
-        leaf create-time {
-          description
-            "Creation timestamp of this Network Service.
-          The timestamp is expressed as seconds
-          since unix epoch - 1970-01-01T00:00:00Z";
-
-          type uint32;
-        }
-
-        leaf uptime {
-          description
-            "Active period of this Network Service.
-          Uptime is expressed in seconds";
-
-          type uint32;
-        }
-
-        list connection-point {
-          description
-            "List for external connection points.
-            Each NS has one or more external connection points.
-            As the name implies that external connection points
-            are used for connecting the NS to other NS or to
-            external networks. Each NS exposes these connection
-            points to the orchestrator. The orchestrator can
-            construct network service chains by connecting the
-            connection points between different NS.";
-
-          key "name";
-          leaf name {
-            description
-              "Name of the NS connection point.";
-            type string;
-          }
-
-          leaf type {
-            description
-              "Type of the connection point.";
-            type manotypes:connection-point-type;
-          }
-        }
-
-        list vlr {
-          key "vlr-ref";
-          leaf vlr-ref {
-            description
-              "Reference to a VLR record in the VLR catalog";
-            type leafref {
-              path "../../../../vlr:vlr-catalog/vlr:vlr/vlr:id";
-            }
-          }
-
-
-          list vnfr-connection-point-ref {
-            description
-              "A list of references to connection points.";
-            key "vnfr-id";
-
-            leaf vnfr-id {
-              description "A reference to a vnfr";
-              type leafref {
-                path "../../../../../vnfr:vnfr-catalog/vnfr:vnfr/vnfr:id";
-              }
-            }
-
-            leaf connection-point {
-              description
-                "A reference to a connection point name in a vnfr";
-              type leafref {
-                path "../../../../../vnfr:vnfr-catalog/vnfr:vnfr"
-                  + "[vnfr:id = current()/../vnfr-id]"
-                  + "/vnfr:connection-point/vnfr:name";
-              }
-            }
-          }
-        }
-
-        list constituent-vnfr-ref {
-          description
-            "List of VNFRs that are part of this
-             network service.";
-          key "vnfr-id";
-
-          leaf vnfr-id {
-            description
-              "Reference to the VNFR id
-               This should be a leafref to /vnfr:vnfr-catalog/vnfr:vnfr/vnfr:id
-               But due to confd bug (RIFT-9451), changing to string.";
-            type string;
-          }
-        }
-
-        list scaling-group-record {
-          description "List of scaling group records";
-          key "scaling-group-name-ref";
-
-          leaf scaling-group-name-ref {
-            description "name of the scaling group";
-            type leafref {
-              path "../../../../ns-instance-config/nsr"
-                + "[id=current()/../../ns-instance-config-ref]"
-                + "/nsd/scaling-group-descriptor/name";
-            }
-          }
-
-          list instance {
-            description "Reference to scaling group instance record";
-            key "instance-id";
-            leaf instance-id {
-              description "Scaling group instance id";
-              type uint16;
-            }
-
-            leaf is-default {
-              description "Flag indicating whether this instance was part of
-                default scaling group (and thus undeletable)";
-              type boolean;
-            }
-
-            leaf op-status {
-              description
-                "The operational status of the NS instance
-                init                : The scaling group has just started.
-                vnf-init-phase      : The VNFs in the scaling group are being instantiated.
-                running             : The scaling group  is in running state.
-                terminate           : The scaling group is being terminated.
-                vnf-terminate-phase : The VNFs in the scaling group are being terminated.
-                terminated          : The scaling group  is in the terminated state.
-                failed              : The scaling group instantiation failed.
-              ";
-
-              type enumeration {
-                enum init;
-                enum vnf-init-phase;
-                enum running;
-                enum terminate;
-                enum vnf-terminate-phase;
-                enum terminated;
-                enum failed;
-              }
-            }
-
-            leaf config-status {
-              description
-                "The configuration status of the scaling group instance
-               configuring : At least one of the VNFs in this scaling group instance
-                             is in configuring state
-               configured  : All the VNFs in this scaling group instance are
-                             configured or config-not-needed state
-               failed      : Configuring this scaling group instance failed
-              ";
-              type config-states;
-            }
-
-            leaf error-msg {
-              description
-                "Reason for failure in configuration of this scaling instance";
-              type string;
-            }
-
-            leaf create-time {
-              description
-                "Creation timestamp of this scaling group record.
-              The timestamp is expressed as seconds
-              since unix epoch - 1970-01-01T00:00:00Z";
-
-              type uint32;
-            }
-
-            leaf-list vnfrs {
-              description "Reference to VNFR within the scale instance";
-              type leafref {
-                path "../../../constituent-vnfr-ref/vnfr-id";
-              }
-            }
-          }
-        }
-
-        uses vnffgr;
-
-        leaf operational-status {
-          description
-            "The operational status of the NS instance
-            init                : The network service has just started.
-            vl-init-phase       : The VLs in the NS are being instantiated.
-            vnf-init-phase      : The VNFs in the NS are being instantiated.
-            running             : The NS is in running state.
-            terminate           : The NS is being terminated.
-            vnf-terminate-phase : The NS is terminating the VNFs in the NS.
-            vl-terminate-phase  : The NS is terminating the VLs in the NS.
-            terminated          : The NS is in the terminated state.
-            failed              : The NS instantiation failed.
-            scaling-out         : The NS is scaling out
-            scaling-in          : The NS is scaling in
-            vl-instantiate      : The NS is initiating a new VL
-            vl-terminate        : The NS is terminating a VL
-          ";
-
-          type ns-operational-status;
-        }
-
-        leaf config-status {
-          description
-            "The configuration status of the NS instance
-            configuring: At least one of the VNFs in this instance is in configuring state
-            configured:  All the VNFs in this NS instance are configured or config-not-needed state
-          ";
-          type config-states;
-        }
-
-        list service-primitive {
-           description
-                "Network service level service primitives.";
-
-           key "name";
-
-           leaf name {
-              description
-                  "Name of the service primitive.";
-              type string;
-           }
-
-           list parameter {
-              description
-                  "List of parameters for the service primitive.";
-
-              key "name";
-              uses manotypes:primitive-parameter;
-           }
-
-           uses manotypes:ui-primitive-group;
-
-           list vnf-primitive-group {
-              description
-                "Reference to member-vnf within constituent-vnfds";
-
-              key "member-vnf-index-ref";
-              leaf member-vnf-index-ref {
-                description
-                   "Reference to member-vnf within constituent-vnfds";
-                type uint64;
-              }
-
-              leaf vnfd-id-ref {
-                 description
-                   "A reference to a vnfd. This is a 
-                    leafref to path:
-                        ../../../../nsd:constituent-vnfd
-                        + [nsd:id = current()/../nsd:id-ref]
-                        + /nsd:vnfd-id-ref
-                    NOTE: An issue with confd is preventing the
-                    use of xpath. Seems to be an issue with leafref
-                    to leafref, whose target is in a different module.
-                    Once that is resovled this will switched to use
-                    leafref";
-
-                 type string;
-              }
-
-              leaf vnfd-name {
-                 description
-                   "Name of the VNFD";
-                 type string;
-              }
-
-              list primitive {
-                 key "index";
-
-                 leaf index {
-                   description "Index of this primitive";
-                   type uint32;
-                 }
-
-                 leaf name {
-                   description "Name of the primitive in the VNF primitive ";
-                   type string;
-                 }
-              }
-           }
-
-           leaf user-defined-script {
-             description
-               "A user defined script.";
-             type string;
-           }
-        }
-
-        list initial-service-primitive {
-          description
-            "Initial set of service primitives for NSD.";
-          key "seq";
-
-          uses event-service-primitive;
-        }
-
-        list terminate-service-primitive {
-          description
-            "Set of service primitives to
-             execute during termination of NSD.";
-          key "seq";
-
-          uses event-service-primitive;
-        }
-
-        list monitoring-param {
-          description
-            "List of NS level params.";
-          key "id";
-
-          uses manotypes:monitoring-param-value;
-          uses manotypes:monitoring-param-ui-data;
-          uses manotypes:monitoring-param-aggregation;
-
-          leaf id {
-            type string;
-          }
-
-          leaf name {
-            type string;
-          }
-
-          leaf nsd-mon-param-ref {
-            description "Reference to the NSD monitoring param descriptor
-                       that produced this result";
-            // TODO: Fix leafref
-            type leafref {
-              path "../../../../project-nsd:nsd-catalog/project-nsd:nsd" +
-                "[project-nsd:id = current()/../../nsd-ref]" +
-                "/project-nsd:monitoring-param/project-nsd:id";
-            }
-          }
-
-          list vnfr-mon-param-ref {
-            description "A list of VNFR monitoring params associated with this monp";
-            key "vnfr-id-ref vnfr-mon-param-ref";
-
-            leaf vnfr-id-ref {
-              description
-                "A reference to a vnfr. This is a
-                leafref to path:
-                    /vnfr:vnfr-catalog/vnfr:vnfr/vnfr:id";
-
-              type yang:uuid;
-            }
-
-            leaf vnfr-mon-param-ref {
-              description "A reference to the VNFR monitoring param";
-              type leafref {
-                path "../../../../../vnfr:vnfr-catalog/vnfr:vnfr"
-                  + "[vnfr:id = current()/../vnfr-id-ref]"
-                  + "/vnfr:monitoring-param/vnfr:id";
-              }
-            }
-          }
-        }
-
-        list config-agent-job {
-          key "job-id";
-
-          leaf job-id {
-            description "config agent job Identifier for the NS.";
-            type uint64;
-          }
-
-          leaf job-name {
-            description "Config agent job name";
-            type string;
-          }
-
-          leaf job-status {
-            description
-              "Job status to be set based on each VNF primitive execution,
-               pending  - if at least one VNF is in pending state
-                          and remaining VNFs are in success state.
-               Success  - if all VNF executions are in success state
-               failure  - if one of the VNF executions is failure";
-            type enumeration {
-              enum pending;
-              enum success;
-              enum failure;
-            }
-          }
-
-          leaf triggered-by {
-            description "The primitive is triggered from NS or VNF level";
-            type trigger-type;
-          }
-
-          leaf create-time {
-            description
-              "Creation timestamp of this Config Agent Job.
-            The timestamp is expressed as seconds
-            since unix epoch - 1970-01-01T00:00:00Z";
-
-            type uint32;
-          }
-
-          leaf job-status-details {
-            description "Config agent job status details, in case of errors";
-            type string;
-          }
-
-          uses manotypes:primitive-parameter-value;
-
-          list parameter-group {
-            description
-              "List of NS Primitive parameter groups";
-            key "name";
-            leaf name {
-              description
-                "Name of the parameter.";
-              type string;
-            }
-
-            uses manotypes:primitive-parameter-value;
-          }
-
-          list vnfr {
-            key "id";
-            leaf id {
-              description "Identifier for the VNFR.";
-              type yang:uuid;
-            }
-            leaf vnf-job-status {
-              description
-                "Job status to be set based on each VNF primitive execution,
-                 pending  - if at least one primitive is in pending state
-                            and remaining primitives are in success state.
-                 Success  - if all primitive executions are in success state
-                 failure  - if one of the primitive executions is failure";
-              type enumeration {
-                enum pending;
-                enum success;
-                enum failure;
-              }
-            }
-
-            list primitive {
-              key "name";
-              leaf name {
-                description "the name of the primitive";
-                type string;
-              }
-
-              uses manotypes:primitive-parameter-value;
-
-              leaf execution-id {
-                description "Execution id of the primitive";
-                type string;
-              }
-              leaf execution-status {
-                description "status of the Execution";
-                type enumeration {
-                  enum pending;
-                  enum success;
-                  enum failure;
-                }
-              }
-              leaf execution-error-details {
-                description "Error details if execution-status is failure";
-                type string;
-              }
-            }
-          }
-        }
-      }
-    }
-  }
-
-  grouping rpc-common {
-    uses manotypes:rpc-project-name;
-
-    leaf nsr_id_ref {
-      description "Reference to NSR ID ref";
-      type leafref {
-        path "/rw-project:project[rw-project:name=current()/.." +
-          "/nsr:project-name]/nsr:ns-instance-config/nsr:nsr/nsr:id";
-      }
-      mandatory true;
-    }
-  }
-
-  rpc get-ns-service-primitive-values {
-    description "Get the service primitive parameter values";
-
-    input {
-      leaf name {
-        description "Name of the NS service primitive group";
-        mandatory true;
-        type string;
-      }
-
-      uses rpc-common;
-    }
-
-    output {
-      list ns-parameter {
-        description "Automatically generated parameter";
-        key "name";
-
-        leaf name {
-          description "Parameter name which should be pulled from a parameter pool";
-          type string;
-        }
-        leaf value {
-          description "Automatically generated value";
-          type string;
-        }
-      }
-
-      list ns-parameter-group {
-        description "Automatically generated parameters in parameter group";
-        key "name";
-        leaf name {
-          description "Parameter group name";
-          type string;
-        }
-        list parameter {
-          description "Automatically generated group parameter";
-          key "name";
-
-          leaf name {
-            description "Parameter name which should be pulled from a parameter pool";
-            type string;
-          }
-          leaf value {
-            description "Automatically generated value";
-            type string;
-          }
-        }
-      }
-
-      list vnf-primitive-group {
-        description
-            "List of service primitives grouped by VNF.";
-
-        key "member-vnf-index-ref";
-        leaf member-vnf-index-ref {
-          description
-              "Reference to member-vnf within constituent-vnfds";
-          type uint64;
-        }
-
-        leaf vnfd-id-ref {
-          description
-              "A reference to a vnfd. This is a
-               leafref to path:
-                   ../../../../project-nsd:constituent-vnfd
-                   + [project-nsd:id = current()/../project-nsd:id-ref]
-                   + /project-nsd:vnfd-id-ref
-               NOTE: An issue with confd is preventing the
-               use of xpath. Seems to be an issue with leafref
-               to leafref, whose target is in a different module.
-               Once that is resolved this will switched to use
-               leafref";
-
-          type string;
-        }
-
-        list primitive {
-          key "index";
-          leaf index {
-            description "Index of this primitive";
-            type uint32;
-          }
-
-          leaf name {
-            description "Name of the primitive associated with a value pool";
-            type string;
-          }
-
-          list parameter {
-            description "Automatically generated parameter";
-            key "name";
-
-            leaf name {
-              description "Parameter name which should be pulled from a parameter pool";
-              type string;
-            }
-            leaf value {
-              description "Automatically generated value";
-              type string;
-            }
-          }
-        }
-      }
-    }
-  }
-
-  rpc exec-ns-service-primitive {
-    description "Executes a NS service primitive or script";
-
-    input {
-      leaf name {
-        description "Name of the primitive";
-        type string;
-      }
-
-      uses rpc-common;
-
-      leaf triggered-by {
-        description "The primitive is triggered from NS or VNF level";
-        type trigger-type;
-        default ns-primitive;
-      }
-
-      uses manotypes:primitive-parameter-value;
-
-      list parameter-group {
-        description
-            "List of NS Primitive parameter groups";
-        key "name";
-        leaf name {
-          description
-              "Name of the parameter.";
-          type string;
-        }
-
-        uses manotypes:primitive-parameter-value;
-      }
-
-      list vnf-list {
-        description
-            "List of VNFs whose primitives are being set.";
-        key "member_vnf_index_ref";
-
-        leaf member_vnf_index_ref {
-          description "Member VNF index";
-          type uint64;
-        }
-
-        leaf vnfr-id-ref {
-          description
-              "A reference to a vnfr. This is a
-               leafref to path";
-          type yang:uuid;
-        }
-
-        list vnf-primitive {
-          description
-              "List of service primitives supported by the
-            configuration agent for this VNF.";
-          key "index";
-
-          leaf index {
-            description
-                "index of the service primitive.";
-            type uint32;
-          }
-          leaf name {
-            description
-                "Name of the service primitive.";
-            type string;
-          }
-
-          uses manotypes:primitive-parameter-value;
-        }
-      }
-      leaf user-defined-script {
-        description
-            "A user defined script.";
-        type string;
-      }
-    }
-    output {
-      leaf job-id {
-        description "Job identifier for this RPC";
-        type uint64;
-      }
-
-      leaf name {
-        description "Name of the service primitive";
-        type string;
-      }
-
-      uses rpc-common;
-
-      leaf triggered-by {
-        description "The primitive is triggered from NS or VNF level";
-        type trigger-type;
-      }
-
-      leaf create-time {
-        description
-          "Creation timestamp of this config agent JOB.
-          The timestamp is expressed as seconds
-          since unix epoch - 1970-01-01T00:00:00Z";
-
-        type uint32;
-      }
-
-      leaf job-status-details {
-        description "Job status details, in case of any errors";
-        type string;
-      }
-
-      uses manotypes:primitive-parameter-value;
-
-      list parameter-group {
-        description
-            "List of NS Primitive parameter groups";
-        key "name";
-        leaf name {
-          description
-              "Name of the parameter.";
-          type string;
-        }
-
-        uses manotypes:primitive-parameter-value;
-      }
-
-      list vnf-out-list {
-        description
-            "List of VNFs whose primitives were set.";
-        key "member_vnf_index_ref";
-
-        leaf member_vnf_index_ref {
-          description "Member VNF index";
-          type uint64;
-        }
-        leaf vnfr-id-ref {
-          description
-              "A reference to a vnfr. This is a
-               leafref to path";
-          type yang:uuid;
-        }
-
-        list vnf-out-primitive {
-          description
-              "List of service primitives supported by the
-            configuration agent for this VNF.";
-          key "index";
-
-          leaf index {
-            description
-                "index of the service primitive.";
-            type uint32;
-          }
-
-          leaf name {
-            description
-                "Name of the service primitive.";
-            type string;
-          }
-
-          uses manotypes:primitive-parameter-value;
-
-          leaf execution-id {
-            description "Execution id of this primitive";
-            type string;
-          }
-
-          leaf execution-status {
-            description "Status of the execution of this primitive";
-            type string;
-          }
-
-          leaf execution-error-details {
-            description "Error details if execution-status is failed";
-            type string;
-          }
-        }
-      }
-    }
-  }
-
-  rpc exec-scale-in {
-    description "Executes scale out request";
-
-    input {
-      uses rpc-common;
-
-      leaf scaling-group-name-ref {
-        description "name of the scaling group";
-        type leafref {
-          path "/rw-project:project[rw-project:name=current()/.." +
-            "/nsr:project-name]/nsr:ns-instance-config/nsr:nsr" +
-            "[nsr:id=current()/../nsr:nsr_id_ref]/nsr:nsd" +
-            "/nsr:scaling-group-descriptor/nsr:name";
-        }
-        mandatory true;
-      }
-
-      leaf instance-id {
-        description "id of the scaling group";
-        type leafref {
-          path "/rw-project:project[rw-project:name=current()/.." +
-            "/nsr:project-name]/nsr:ns-instance-config/nsr:nsr" +
-            "[nsr:id=current()/../nsr:nsr_id_ref]" +
-            "/nsr:scaling-group[nsr:scaling-group-name-ref=current()/.." +
-            "/nsr:scaling-group-name-ref]/nsr:instance/nsr:id";
-        }
-        mandatory true;
-      }
-
-
-    }
-    output {
-      leaf instance-id {
-        description "id of the scaling group";
-        type uint64;
-      }
-    }
-  }
-
-  rpc exec-scale-out {
-    description "Executes scale out request";
-
-    input {
-      uses rpc-common;
-
-      leaf scaling-group-name-ref {
-        description "name of the scaling group";
-        type leafref {
-          path "/rw-project:project[rw-project:name=current()/.." +
-            "/nsr:project-name]/nsr:ns-instance-config/nsr:nsr" +
-            "[nsr:id=current()/../nsr:nsr_id_ref]/nsr:nsd" +
-            "/nsr:scaling-group-descriptor/nsr:name";
-        }
-        mandatory true;
-      }
-
-      leaf instance-id {
-        description "id of the scaling group";
-        type uint64;
-      }
-    }
-
-    output {
-     leaf instance-id {
-        description "id of the scaling group";
-        type uint64;
-      }
-    }
-  }
-
-  rpc start-network-service {
-    description "Start the network service";
-    input {
-      leaf name {
-        mandatory true;
-        description "Name of the Network Service";
-        type string;
-      }
-
-      uses manotypes:rpc-project-name;
-
-      leaf nsd_id_ref {
-        description "Reference to NSD ID ref";
-        type leafref {
-          path "/rw-project:project[rw-project:name=current()/.." +
-            "/project-name]/project-nsd:nsd-catalog/project-nsd:nsd/project-nsd:id";
-        }
-      }
-      uses ns-instance-config-params-common;
-
-      list vnfd-placement-group-maps {
-        description
-          "Mapping from mano-placement groups construct from VNFD to cloud
-          platform placement group construct";
-
-        key "placement-group-ref vnfd-id-ref";
-
-        leaf vnfd-id-ref {
-          description
-            "A reference to a vnfd. This is a
-          leafref to path:
-          ../../../../project-nsd:constituent-vnfd
-          + [id = current()/../project-nsd:id-ref]
-          + /project-nsd:vnfd-id-ref
-          NOTE: An issue with confd is preventing the
-          use of xpath. Seems to be an issue with leafref
-          to leafref, whose target is in a different module.
-          Once that is resovled this will switched to use
-          leafref";
-          type yang:uuid;
-        }
-
-        leaf placement-group-ref {
-          description
-            "A reference to VNFD placement group";
-          type leafref {
-            path "/rw-project:project[rw-project:name=current()/" +
-              "../../project-name]/project-vnfd:vnfd-catalog/project-vnfd:vnfd[project-vnfd:id = " +
-              "current()/../vnfd-id-ref]/project-vnfd:placement-groups/project-vnfd:name";
-          }
-        }
-
-        uses manotypes:placement-group-input;
-
-        list ssh-authorized-key {
-          key "key-pair-ref";
-
-          description "List of authorized ssh keys as part of cloud-config";
-
-          leaf key-pair-ref {
-            description "A reference to the key pair entry in the global key pair table";
-            type leafref {
-              path "/rw-project:project[rw-project:name=current()/../../../" +
-                "project-name]/key-pair/name";
-            }
-          }
-        }
-
-        list user {
-          key "name";
-
-          description "List of users to be added through cloud-config";
-          leaf name {
-            description "Name of the user ";
-            type string;
-          }
-          leaf user-info {
-            description "The user name's real name";
-            type string;
-          }
-          list ssh-authorized-key {
-            key "key-pair-ref";
-
-            description "Used to configure the list of public keys to be injected as part
-                        of ns instantiation";
-
-            leaf key-pair-ref {
-              description "A reference to the key pair entry in the global key pair table";
-              type leafref {
-                path "/rw-project:project[rw-project:name=current()/" +
-                  "../../../../project-name]/key-pair/name";
-              }
-            }
-          }
-        }
-      }
-    }
-
-    output {
-      leaf nsr-id {
-        description "Automatically generated parameter";
-        type yang:uuid;
-      }
-    }
-  }
-}