/* * * 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 rw-nsr { namespace "http://riftio.com/ns/riftware-1.0/rw-nsr"; prefix "rw-nsr"; import mano-types { prefix "manotypes"; } import nsr { prefix "nsr"; } import nsd { prefix "nsd"; } import project-vnfd { prefix "project-vnfd"; } import project-nsd { prefix "project-nsd"; } import rw-project-vnfd { prefix "rw-project-vnfd"; } import vnfd-base { prefix "vnfd-base"; } import mano-rift-groupings { prefix "mano-rift"; } import rw-cloud { prefix "rw-cloud"; } import rw-ro-account { prefix "rw-ro-account"; } import rw-config-agent { prefix "rw-config-agent"; } import rw-sdn { prefix "rw-sdn"; } import rw-project { prefix "rw-project"; } import ietf-yang-types { prefix "yang"; } revision 2017-02-08 { description "Update model to support projects."; } 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 operational-events { list operational-events { key "id"; description "Recent operational events for this network service. 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 "Short description of the event"; type string; } leaf description { description "The description of this event"; type string; } leaf details { description "The detailed description of this event (in case of errors)"; type string; } } } grouping rw-ns-instance-config { list vnf-datacenter-map { description "Mapping VNF to Cloud Account where VNF will be instantiated"; key "member-vnf-index-ref"; leaf member-vnf-index-ref { type uint64; } leaf datacenter { description "datacenter name to use when instantiating the network service."; type string; } leaf config-agent-account { description "The configured config agent account to use for instantiating this VNF. The configuration for this VNF will be driven using the specified config agent account"; type leafref { path "../../../../rw-config-agent:config-agent/" + "rw-config-agent:account/rw-config-agent:name"; } } } list vl-datacenter-map { description "Mapping VL to Cloud Account where VL will be instantiated"; key "vld-id-ref"; leaf vld-id-ref { description "A reference to a vld. leafref path ../../nsd/vld/id"; type string; } leaf-list datacenters { description "datacenter names to use when instantiating the VLs."; type string; } } leaf resource-orchestrator { description "Resource Orchestrator to use when instantiating the VNF."; type leafref { path "../../../rw-ro-account:ro-account/rw-ro-account:account/rw-ro-account:name"; } } leaf datacenter { description "datacenter name to use when instantiating the network service."; type string; } } augment /rw-project:project/nsr:ns-instance-config/nsr:nsr { uses rw-ns-instance-config; } augment /rw-project:project/nsr:ns-instance-opdata/nsr:nsr { uses manotypes:action-param; uses manotypes:control-param; container orchestration-progress { container vms { leaf active { type uint32; default 0; } leaf total { type uint32; default 0; } } container networks { leaf active { type uint32; default 0; } leaf total { type uint32; default 0; } } } leaf sdn-account { description "The SDN account associted with the cloud account using which an NS was instantiated."; type leafref { path "../../../rw-sdn:sdn/rw-sdn:account/rw-sdn:name"; } } leaf config-status-details { description "The configuration status error details of the NS instance, in case of any errors"; 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; } container epa-param { container ovs-acceleration { leaf label { description "Label to show in UI for the param"; type string; default "OVS ACCELERATION"; } leaf vm { description "Number of VMs with the EPA attribute"; type uint64; } leaf unit { description "Unit label to show in the UI"; type string; default "vms"; } } container ovs-offload { leaf label { description "Label to show in UI for the param"; type string; default "OVS OFFLOAD"; } leaf vm { description "Number of VMs with the EPA attribute"; type uint64; } leaf unit { description "Unit label to show in the UI"; type string; default "vms"; } } container ddio { leaf label { description "Label to show in UI for the param"; type string; default "DDIO"; } leaf vm { description "Number of VMs with the EPA attribute"; type uint64; } leaf unit { description "Unit label to show in the UI"; type string; default "vms"; } } container cat { leaf label { description "Label to show in UI for the param"; type string; default "CAT"; } leaf vm { description "Number of VMs with the EPA attribute"; type uint64; } leaf unit { description "Unit label to show in the UI"; type string; default "vms"; } } container cmt { leaf label { description "Label to show in UI for the param"; type string; default "CMT"; } leaf vm { description "Number of VMs with the EPA attribute"; type uint64; } leaf unit { description "Unit label to show in the UI"; type string; default "vms"; } } } uses operational-events; } grouping project-nsr-nsd-config-parameter{ list config-parameter-map { key "id"; description "A mapping of VNF config parameter requests and sources within this network service"; leaf id { description "Identfier for VNF map"; type string; } container config-parameter-request { leaf member-vnf-index-ref { description "Reference to member-vnf within constituent-vnfds"; type leafref { path "../../../nsr:constituent-vnfd/nsr:member-vnf-index"; } } leaf vnfd-id-ref { description "A reference to a vnfd. This is a leafref to path: ../../nsr:constituent-vnfd + [nsr:id = current()/../id-ref] + /vnfd-id-ref"; type leafref { path "../../../nsr:constituent-vnfd[nsr:member-vnf-index = current()/../member-vnf-index-ref]/nsr:vnfd-id-ref"; } } leaf config-parameter-request-ref { description "Reference to the request in the VNF with the specified member-vnf-index"; type leafref { path "../../../../../.." + "/project-vnfd:vnfd-catalog/project-vnfd:vnfd[project-vnfd:id = current()/../vnfd-id-ref]" + "/rw-project-vnfd:config-parameter/rw-project-vnfd:config-parameter-request/rw-project-vnfd:name"; } } } container config-parameter-source { leaf member-vnf-index-ref { description "Reference to member-vnf within constituent-vnfds"; type leafref { path "../../../nsr:constituent-vnfd/nsr: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"; type leafref { path "../../../nsr:constituent-vnfd[nsr:member-vnf-index = current()/../member-vnf-index-ref]/nsr:vnfd-id-ref"; } } leaf config-parameter-source-ref { description "Reference to the source in the VNF with the specified member-vnf-index"; type leafref { path "../../../../../.." + "/project-vnfd:vnfd-catalog/project-vnfd:vnfd[project-vnfd:id = current()/../vnfd-id-ref]" + "/rw-project-vnfd:config-parameter/rw-project-vnfd:config-parameter-source/rw-project-vnfd:name"; } } } } } augment /rw-project:project/nsr:ns-instance-opdata/nsr:nsr/nsr:vlr { leaf assigned-subnet { description "Subnet added for the VL"; type string; } leaf datacenter { description "Datacenter name to use when instantiating the network service. "; type string; } } augment /rw-project:project/nsr:ns-instance-opdata/nsr:nsr/nsr:constituent-vnfr-ref { leaf datacenter { description "Datacenter name to use when instantiating the network service."; type string; } } augment /rw-project:project/nsr:ns-instance-config { leaf nfvi-polling-period { description "Defines the period (secons) that the NFVI metrics are polled at"; type uint64; default 4; } } augment /rw-project:project/nsr:ns-instance-config/nsr:nsr/nsr:nsd/nsr:vld { leaf ipv4-nat-pool-name{ type string; description "IPV4 nat pool name"; } list virtual-connection-points { description "A list of virtual-connection points associated with Virtual Link. These connection points are not directly associated with any VNFs"; key name; uses vnfd-base:common-connection-point; leaf-list associated-cps { description "A List of connection points associated with virtual connection point"; type leafref { path "../../nsr:vnfd-connection-point-ref/nsr:vnfd-connection-point-ref"; } } } } augment /rw-project:project/nsr:ns-instance-config/nsr:nsr/nsr:nsd { uses project-nsr-nsd-config-parameter; } augment /rw-project:project/nsr:ns-instance-config/nsr:nsr { list vnf-input-parameter { description "List of input parameters for Constituent VNFs that can be specified when instantiating a network service."; key "member-vnf-index-ref vnfd-id-ref"; leaf member-vnf-index-ref { description "Reference to member-vnf within constituent-vnfds"; type leafref { path "../../nsr:nsd/nsr:constituent-vnfd/nsr:member-vnf-index"; } } leaf vnfd-id-ref { description "A reference to a VNFD"; type leafref { path "../../nsr:nsd/nsr:constituent-vnfd/nsr:vnfd-id-ref"; } } uses manotypes:input-parameter; } } augment /rw-project:project/nsr:ns-instance-opdata/nsr:nsr { uses mano-rift:ssh-key-generated; } grouping leaf-out { leaf out { description "If this is an output of the primitive execution"; type boolean; default false; } } augment /rw-project:project/nsr:ns-instance-config/nsr:nsr/nsr:nsd/nsr:service-primitive/nsr:parameter { uses leaf-out; } augment /rw-project:project/nsr:ns-instance-config/nsr:nsr/nsr:nsd/nsr:service-primitive/nsr:parameter-group/nsr:parameter { uses leaf-out; } augment /rw-project:project/nsr:ns-instance-opdata/nsr:nsr/nsr:service-primitive/nsr:parameter { uses leaf-out; } augment /rw-project:project/nsr:ns-instance-opdata/nsr:nsr/nsr:service-primitive/nsr:parameter-group/nsr:parameter { uses leaf-out; } notification nsm-notification { description "Notification for NSM Events. The timestamp of this event is automatically expressed in human readble format - 1970-01-01T00:00:00Z"; leaf event { description "Short name of the event"; type string; } leaf description { description "The description of this event"; type string; } leaf details { description "The detailed description of this event, in case of errors"; type string; } } } // vim: sw=2