--- /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 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