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