--- /dev/null
+
+/*
+ *
+ * Copyright 2016 RIFT.IO Inc
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ *
+ */
+
+module nsr
+{
+ namespace "urn:ietf:params:xml:ns:yang:nfvo:nsr";
+ prefix "nsr";
+
+ import rw-pb-ext {
+ prefix "rwpb";
+ }
+
+ import vlr {
+ prefix "vlr";
+ }
+
+ import vld {
+ prefix "vld";
+ }
+
+ import nsd {
+ prefix "nsd";
+ }
+
+ import vnfd {
+ prefix "vnfd";
+ }
+
+ import vnfr {
+ prefix "vnfr";
+ }
+
+ import ietf-inet-types {
+ prefix "inet";
+ }
+
+ import ietf-yang-types {
+ prefix "yang";
+ }
+
+ import mano-types {
+ prefix "manotypes";
+ }
+
+ import rw-sdn {
+ prefix "rwsdn";
+ }
+
+ 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 config-states {
+ type enumeration {
+ enum init;
+ enum configuring;
+ enum config_not_needed;
+ enum configured;
+ enum failed;
+ }
+ }
+
+ 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 nsd-ref {
+ description "Reference to NSD";
+ type leafref {
+ path "/nsd:nsd-catalog/nsd:nsd/nsd:id";
+ }
+ }
+
+ leaf admin-status {
+ description
+ "This is the administrative status of the NS instance";
+
+ type enumeration {
+ enum ENABLED;
+ enum DISABLED;
+ }
+ }
+
+ 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";
+ type leafref {
+ path "/nsd:nsd-catalog/nsd:nsd[nsd:id = current()/" +
+ "../../nsr:nsd-ref]/nsd:scaling-group-descriptor/nsd:name";
+ }
+ }
+
+ 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:nsd-catalog/nsd:nsd[nsd:id = current()/" +
+ "../../nsr:nsd-ref]/nsd:placement-groups/nsd:name";
+ }
+ }
+ uses manotypes:placement-group-input;
+ }
+
+ 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:
+ ../../../../nsd:constituent-vnfd
+ + [nsr: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 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";
+ }
+ }
+
+ uses manotypes:placement-group-input;
+ }
+ }
+ }
+
+ grouping vnffgr {
+
+ list vnffgr {
+ key "id";
+
+ leaf id {
+ description "Identifier for the VNFFGR.";
+ type yang:uuid;
+ }
+
+ leaf nsd-id {
+ description
+ "Network sevice descriptor ID reference";
+ type leafref {
+ path "/nsd:nsd-catalog/nsd:nsd/nsd:id";
+ }
+ }
+
+
+ leaf vnffgd-id-ref {
+ description "VNFFG descriptor id reference";
+ type leafref {
+ path "/nsd:nsd-catalog/nsd:nsd"
+ + "[nsd:id = current()/../nsr:nsd-id]"
+ + "/nsd:vnffgd/nsd:id";
+ }
+ }
+
+ leaf vnffgd-name-ref {
+ description "VNFFG descriptor name reference";
+ type leafref {
+ path "/nsd:nsd-catalog/nsd:nsd"
+ + "[nsd:id = current()/../nsr:nsd-id]"
+ + "/nsd:vnffgd[nsd:id = current()/../vnffgd-id-ref]"
+ + "/nsd:name";
+ }
+ }
+
+ leaf sdn-account {
+ description
+ "The SDN account to use when requesting resources for
+ this vnffgr";
+ type leafref {
+ path "/rwsdn:sdn-account/rwsdn:name";
+ }
+ }
+
+ 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 enumeration {
+ //rwpb:enum-type "VnffgrOperationalStatus";
+ enum init;
+ enum running;
+ enum terminate;
+ enum terminated;
+ enum failed;
+ }
+ }
+
+ list rsp {
+ key "id";
+
+ leaf id {
+ description
+ "Identifier for the RSP.";
+ type yang:uuid;
+ }
+
+ leaf name {
+ description
+ "Name for the RSP";
+ type string;
+ }
+
+ leaf vnffgd-rsp-id-ref {
+ description
+ "Identifier for the VNFFG Descriptor RSP reference";
+ type leafref {
+ path "/nsd:nsd-catalog/nsd:nsd/nsd:vnffgd"
+ + "[nsd:id = current()/../../nsr:vnffgd-id-ref]"
+ + "/nsd:rsp/nsd:id";
+ }
+ }
+
+ leaf vnffgd-rsp-name-ref {
+ description
+ "Name for the VNFFG Descriptor RSP reference";
+ type leafref {
+ path "/nsd:nsd-catalog/nsd:nsd/nsd:vnffgd"
+ + "[nsd:id = current()/../../nsr:vnffgd-id-ref]"
+ + "/nsd:rsp[nsd:id=current()/../vnffgd-rsp-id-ref]"
+ + "/nsd: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 manadatory 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()/../nsr: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 {
+ //rwpb:field-inline "true";
+ //rwpb:field-string-max 64;
+ type string;
+ }
+ leaf vm-id {
+ //rwpb:field-inline "true";
+ //rwpb:field-string-max 64;
+ 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 rsp-id-ref {
+ description
+ "A reference to the RSP.";
+ type leafref {
+ path "../../nsr:rsp/nsr: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()/../nsr:vnfr-id-ref]"
+ + "/vnfr:connection-point/vnfr:name";
+ }
+ }
+ leaf port-id {
+ //rwpb:field-inline "true";
+ //rwpb:field-string-max 64;
+ type string;
+ }
+ leaf vm-id {
+ //rwpb:field-inline "true";
+ //rwpb:field-string-max 64;
+ type string;
+ }
+ leaf ip-address {
+ type string;
+ }
+ leaf sff-name {
+ type string;
+ }
+ }
+ }
+ }
+
+ container ns-instance-opdata {
+ config false;
+
+ list nsr {
+ key "ns-instance-config-ref";
+
+ leaf ns-instance-config-ref {
+ type leafref {
+ path "/nsr:ns-instance-config/nsr:nsr/nsr:id";
+ }
+ }
+
+ leaf name-ref {
+ description "Network service name reference";
+ type leafref {
+ path "/nsr:ns-instance-config/nsr:nsr/nsr:name";
+ }
+ }
+
+ leaf nsd-ref {
+ description "Network service descriptor id reference";
+ type leafref {
+ path "/nsd:nsd-catalog/nsd:nsd/nsd:id";
+ }
+ }
+
+ leaf nsd-name-ref {
+ description "Network service descriptor name reference";
+ type leafref {
+ path "/nsd:nsd-catalog/nsd:nsd/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;
+ }
+
+ 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()/../nsr: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";
+ type leafref {
+ path "/vnfr:vnfr-catalog/vnfr:vnfr/vnfr:id";
+ }
+ }
+ }
+
+ 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 "/nsd:nsd-catalog/nsd:nsd"+
+ "[nsd:id = current()/../../nsr:nsd-ref]" +
+ "/nsd:scaling-group-descriptor/nsd: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
+ ";
+
+ 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;
+ }
+ }
+
+ 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;
+ }
+
+ uses manotypes:monitoring-param;
+ uses manotypes:config-primitive;
+
+ list vnf-monitoring-param {
+ description
+ "List of VNF monitoring params.";
+
+ key "vnfr-id-ref";
+
+ leaf vnfr-id-ref {
+ description
+ "Reference to vnfr-id";
+ type leafref {
+ path "/vnfr:vnfr-catalog/vnfr:vnfr/vnfr:id";
+ }
+ }
+
+ uses manotypes:monitoring-param;
+ }
+
+ 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;
+ }
+ }
+
+ 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;
+ }
+ 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;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ rpc get-ns-config-primitive-values {
+ description "Executes a VNF configuration primitive";
+ input {
+ leaf nsr_id_ref {
+ description "Reference to NSR ID ref";
+ mandatory true;
+ type leafref {
+ path "/nsr:ns-instance-config/nsr:nsr/nsr:id";
+ }
+ }
+
+ leaf name {
+ description "Name of the NS config primitive group";
+ mandatory true;
+ type string;
+ }
+ }
+
+ 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 configuration 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 resovled 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-config-primitive {
+ description "Executes a NS configuration primitive or script";
+
+ input {
+ leaf name {
+ description "Name of the primitive";
+ type string;
+ }
+
+ leaf nsr_id_ref {
+ description "Reference to NSR ID ref";
+ type leafref {
+ path "/nsr:ns-instance-config/nsr:nsr/nsr:id";
+ }
+ }
+
+ list parameter {
+ description
+ "List of NS Primitive parameters";
+ key "name";
+ leaf name {
+ description
+ "Name of the parameter.";
+ type string;
+ }
+
+ leaf value {
+ description
+ "Value associated with the name.";
+ type string;
+ }
+ }
+
+ list parameter-group {
+ description
+ "List of NS Primitive parameter groups";
+ key "name";
+ leaf name {
+ description
+ "Name of the parameter.";
+ type string;
+ }
+
+ list parameter {
+ description
+ "List of NS parameter group parameters";
+ key "name";
+ leaf name {
+ description
+ "Name of the parameter.";
+ type string;
+ }
+
+ leaf value {
+ description
+ "Value associated with the name.";
+ type string;
+ }
+ }
+ }
+
+ 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 configuration primitives supported by the
+ configuration agent for this VNF.";
+ key "index";
+
+ leaf index {
+ description
+ "index of the configuration primitive.";
+ type uint32;
+ }
+ leaf name {
+ description
+ "Name of the configuration primitive.";
+ type string;
+ }
+
+ list parameter {
+ description
+ "List of parameters to the configuration primitive.";
+ key "name";
+ leaf name {
+ description
+ "Name of the parameter.";
+ type string;
+ }
+
+ leaf value {
+ description
+ "Value associated with the name.";
+ type string;
+ }
+ }
+ }
+ }
+ 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 config";
+ type string;
+ }
+
+ leaf nsr_id_ref {
+ description "Reference to NSR ID ref";
+ type leafref {
+ path "/nsr:ns-instance-config/nsr:nsr/nsr:id";
+ }
+ }
+
+ 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 configuration primitives supported by the
+ configuration agent for this VNF.";
+ key "index";
+
+ leaf index {
+ description
+ "index of the configuration primitive.";
+ type uint32;
+ }
+
+ leaf name {
+ description
+ "Name of the configuration primitive.";
+ type string;
+ }
+
+ leaf execution-id {
+ description "Execution id of this primitive";
+ type string;
+ }
+
+ leaf execution-status {
+ description "Status of the execution of this primitive";
+ type string;
+ }
+ }
+ }
+ }
+ }
+}