))
if key != 'control-net':
vld.provider_network.physical_network = 'physnet_sriov'
- vld.provider_network.overlay_type = 'VLAN'
vnf_member_index_dict = create_consituent_vnfds()
create_connections(vnf_member_index_dict)
namespace "urn:ietf:params:xml:ns:yang:nfvo:mano-rift-groupings";
prefix "mano-rift";
- import vnfd {
- prefix "vnfd";
- }
-
import mano-types {
prefix "manotypes";
}
- import nsd {
- prefix "nsd";
- }
-
- import project-vnfd {
- prefix "project-vnfd";
- }
-
grouping custom-meta-data {
description "Grouping for instance-specific meta data";
list custom-meta-data {
}
}
}
-
- grouping image-properties {
+
+ grouping image-properties {
leaf image {
description
"Image name for the software image.
}
}
- grouping vnf-configuration {
- container vnf-configuration {
- description
- "Information about the VNF configuration. Note:
- If the NS contains multiple instances of the
- same VNF, each instance could have a different
- configuration.";
- choice config-method {
- description
- "Defines the configuration method for the VNF.";
- case script {
+ grouping vca-relationships {
+ container vca-relationships {
+ list relation {
+ description "List of relations between VCA componets.";
+
+ key "requires provides";
+
+ leaf requires {
description
- "Use custom script for configuring the VNF.
- This script is executed in the context of
- Orchestrator (The same system and environment
- as the Launchpad).";
- container script {
- leaf script-type {
- description
- "Script type - currently supported - Scripts confirming to Rift CA plugin";
- type enumeration {
- enum rift;
- }
- }
- }
+ "Name of the required relation.";
+ type string;
}
- case juju {
+ leaf provides {
description
- "Configure the VNF through Juju.";
- container juju {
- leaf charm {
- description "Juju charm to use with the VNF.";
- type string;
+ "Name of the provided relation.";
+ type string;
+ }
+ }
+ }
+ }
+
+ grouping vca-configuration {
+ description
+ "Information about the VNF or VDU configuration. Note:
+ If the NS contains multiple instances of the
+ same VNF or VDU, each instance could have a different
+ configuration.";
+
+ choice config-method {
+ description
+ "Defines the configuration method for the VNF or VDU.";
+ case script {
+ description
+ "Use custom script for configuring the VNF or VDU.
+ This script is executed in the context of
+ Orchestrator (The same system and environment
+ as the Launchpad).";
+ container script {
+ leaf script-type {
+ description
+ "Script type - currently supported - Scripts confirming to Rift CA plugin";
+ type enumeration {
+ enum rift;
}
}
}
}
- list config-primitive {
+ case juju {
description
- "List of config primitives supported by the
- configuration agent for this VNF.";
- key "name";
-
- leaf name {
- description
- "Name of the config primitive.";
- type string;
+ "Configure the VNF or VDU through Juju.";
+ container juju {
+ leaf charm {
+ description "Juju charm to use with the VNF or VDU.";
+ type string;
+ }
+ uses manotypes:vca-relationships;
}
+ }
+ }
- list parameter {
- description
- "List of parameters to the config primitive.";
- key "name";
- uses primitive-parameter;
- }
+ list config-primitive {
+ description
+ "List of config primitives supported by the
+ configuration agent for this VNF or VDU.";
+ key "name";
- leaf user-defined-script {
- description
- "A user defined script. If user defined script is defined,
- the script will be executed using bash";
- type string;
- }
+ leaf name {
+ description
+ "Name of the config primitive.";
+ type string;
}
- list initial-config-primitive {
+ list parameter {
description
- "Initial set of configuration primitives.";
- key "seq";
- leaf seq {
- description
- "Sequence number for the configuration primitive.";
- type uint64;
- }
+ "List of parameters to the config primitive.";
+ key "name";
+ uses primitive-parameter;
+ }
- choice primitive-type {
- case primitive-definition {
- leaf name {
- description
- "Name of the configuration primitive.";
- type string;
- }
+ leaf user-defined-script {
+ description
+ "A user defined script. If user defined script is defined,
+ the script will be executed using bash";
+ type string;
+ }
+ }
- uses primitive-parameter-value;
+ list initial-config-primitive {
+ description
+ "Initial set of configuration primitives.";
+ key "seq";
+ leaf seq {
+ description
+ "Sequence number for the configuration primitive.";
+ type uint64;
+ }
- leaf user-defined-script {
- description
- "A user defined script.";
- type string;
- }
+ choice primitive-type {
+ case primitive-definition {
+ leaf name {
+ description
+ "Name of the configuration primitive.";
+ type string;
+ }
+
+ uses primitive-parameter-value;
+
+ leaf user-defined-script {
+ description
+ "A user defined script.";
+ type string;
}
}
}
}
- } // END - grouping vnf-configuration
+ } // END - grouping vca-configuration
typedef virtual-link-type {
description
"Type of virtual link
ELAN: A multipoint service connecting a set of VNFs
- // ELINE: For a simple point to point connection
+ ELINE: For a simple point to point connection
// between a VNF and the existing network.
// ETREE: A multipoint service connecting one or
// more roots and a set of leaves, but
// preventing inter-leaf communication.";
type enumeration {
enum ELAN;
+ enum ELINE;
// enum ETREE;
- // enum ELINE;
}
}
type string;
}
- leaf overlay-type {
- description
- "Type of the overlay network.
- LOCAL - Provider network implemented in a single compute node
- FLAT - Provider network shared by all tenants
- VLAN - Provider network implemented using 802.1Q tagging
- VXLAN - Provider networks implemented using RFC 7348
- GRE - Provider networks implemented using GRE tunnels
- PORTGROUP - Provider networks implemented for VIO support";
- type enumeration {
- enum LOCAL;
- enum FLAT;
- enum VLAN;
- enum VXLAN;
- enum GRE;
- enum PORTGROUP;
- }
- }
leaf segmentation_id {
description
"ID of segregated virtual networks";
namespace "http://riftio.com/ns/riftware-1.0/nsd-base";
prefix "nsd-base";
- import vld {
- prefix "vld";
- }
-
- import vnfd-base {
- prefix "vnfd-base";
- }
-
import ietf-inet-types {
prefix "inet";
}
- import ietf-yang-types {
- prefix "yang";
- }
-
import mano-types {
prefix "manotypes";
}
prefix "vlr";
}
- import vld {
- prefix "vld";
- }
-
import nsd-base {
prefix "nsd-base";
}
prefix "manotypes";
}
- import rw-sdn {
- prefix "rw-sdn";
- }
-
import rw-project {
prefix "rw-project";
}
description
"The SDN account to use when requesting resources for
this vnffgr";
- type leafref {
- path "../../../../rw-sdn:sdn/rw-sdn:account/rw-sdn:name";
- }
+ type string;
}
leaf cloud-account {
namespace "http://riftio.com/ns/riftware-1.0/project-nsd";
prefix "project-nsd";
- import ietf-yang-types {
- prefix "yang";
- }
-
import mano-types {
prefix "manotypes";
}
namespace "urn:ietf:params:xml:ns:yang:nfvo:vlr";
prefix "vlr";
- import ietf-inet-types {
- prefix "inet";
- }
-
import ietf-yang-types {
prefix "yang";
}
prefix "manotypes";
}
- import vld {
- prefix "vld";
- }
-
- import vnfd-base {
- prefix "vnfd-base";
- }
-
import rw-project {
prefix "rw-project";
}
type string;
}
- uses manotypes:vnf-configuration;
+
+ container vnf-configuration {
+ uses manotypes:vca-configuration;
+ }
container mgmt-interface {
description
uses manotypes:vswitch-epa;
uses manotypes:hypervisor-epa;
uses manotypes:host-epa;
+
+ list alarm {
+ key "alarm-id";
+
+ uses manotypes:alarm;
+ }
+
uses manotypes:image-properties;
+ container vdu-configuration {
+ uses manotypes:vca-configuration;
+ }
+
choice cloud-init-input {
description
"Indicates how the contents of cloud-init script are provided.
reference
"Derived from earlier versions of base YANG files";
}
-
container vnfd-catalog {
description
"Virtual Network Function Descriptor (VNFD).";
namespace "urn:ietf:params:xml:ns:yang:nfvo:vnffgd";
prefix "vnffgd";
- import ietf-inet-types {
- prefix "inet";
- }
-
import ietf-yang-types {
prefix "yang";
}
- import mano-types {
- prefix "manotypes";
- }
-
import rw-project {
prefix "rw-project";
}
<key-set>
<name>project-name</name>
<path>/rw-project:project/rw-project:name</path>
- <path>/vnfr:create-alarm/vnfr:project-name</path>
- <path>/vnfr:destroy-alarm/vnfr:project-name</path>
</key-set>
</key-definition>
<authorize>
<permissions>create read update delete execute</permissions>
<path>/rw-project:project/vnfr:vnfr-catalog</path>
- <path>/vnfr:create-alarm</path>
- <path>/vnfr:destroy-alarm</path>
</authorize>
</role-definition>
<keys-role>rw-project-mano:vnfr-role</keys-role>
<authorize>
<permissions>create read update delete execute</permissions>
- <path>/vnfr:create-alarm</path>
- <path>/vnfr:destroy-alarm</path>
</authorize>
</role-definition>
</config>
tailf:annotate "/rw-project:project/vnfr:vnfr-catalog" {
tailf:callpoint rw_callpoint;
}
-
- tailf:annotate "/vnfr:create-alarm" {
- tailf:actionpoint rw_actionpoint;
- }
-
- tailf:annotate "/vnfr:destroy-alarm" {
- tailf:actionpoint rw_actionpoint;
- }
}
prefix "rw-project";
}
- import rw-cloud {
- prefix "rw-cloud";
- }
-
revision 2017-02-28 {
description
"Update model to support projects.";
}
// Use parameters provided here to configure this VNF
- uses manotypes:vnf-configuration;
+ container vnf-configuration {
+ uses manotypes:vca-configuration;
+ }
// Mainly used by Mon-params & dashboard url
container mgmt-interface {
uses manotypes:supplemental-boot-data;
+ container vdu-configuration {
+ uses manotypes:vca-configuration;
+ }
+
list volumes {
key "name";
uses associated-virtual-cps;
}
- list interface {
- description
- "List of interfaces (internal and external) for the VNF";
- key name;
-
- leaf name {
- description
- "Name of the interface. Note that this
- name has only local significance to the VDU.";
- type string;
- }
+ list interface {
+ description
+ "List of interfaces (internal and external) for the VNF";
+ key name;
- leaf position {
- description
- "Explicit Position of the interface within the list";
- type uint32;
- }
+ leaf name {
+ description
+ "Name of the interface. Note that this
+ name has only local significance to the VDU.";
+ type string;
+ }
- leaf type {
- description
- "Type of the Interface";
+ leaf position {
+ description
+ "Explicit Position of the interface within the list";
+ type uint32;
+ }
- type vnfd-base:interface-type;
+ leaf type {
+ description
+ "Type of the Interface";
- default "EXTERNAL";
- }
+ type vnfd-base:interface-type;
- choice connection-point-type {
- case internal {
- leaf internal-connection-point-ref {
- description
- "Leaf Ref to the particular internal connection point";
- type leafref {
- path "../../internal-connection-point/id";
- }
+ default "EXTERNAL";
+ }
+ choice connection-point-type {
+ case internal {
+ leaf internal-connection-point-ref {
+ description
+ "Leaf Ref to the particular internal connection point";
+ type leafref {
+ path "../../internal-connection-point/id";
}
}
- case external {
- leaf external-connection-point-ref {
- description
- "Leaf Ref to the particular external connection point";
- type leafref {
- path "../../../connection-point/name";
- }
+ }
+ case external {
+ leaf external-connection-point-ref {
+ description
+ "Leaf Ref to the particular external connection point";
+ type leafref {
+ path "../../../connection-point/name";
}
}
}
- uses virtual-interface;
}
+ uses virtual-interface;
+ }
- leaf operational-status {
+ leaf operational-status {
description
"The operational status of the VDU
init : The VDU has just started.
failed : The VDU instantiation failed.
";
type vdu-operational-status;
- }
+ }
+
uses placement-group-info;
}
}
}
}
-
- rpc create-alarm {
- description "Create an alert for a running VDU";
- input {
- uses manotypes:rpc-project-name;
-
- leaf cloud-account {
- mandatory true;
- type leafref {
- path "/rw-project:project[rw-project:name=current()/../project-name]" +
- "/rw-cloud:cloud/rw-cloud:account/rw-cloud:name";
- }
- }
-
- leaf vdur-id {
- mandatory true;
- type string;
- }
-
- container alarm {
- uses manotypes:alarm;
- }
- }
-
- output {
- leaf alarm-id {
- type string;
- }
- }
- }
-
- rpc destroy-alarm {
- description "Destroy an alert that is associated with a running VDU";
- input {
- uses manotypes:rpc-project-name;
-
- leaf cloud-account {
- mandatory true;
- type leafref {
- path "/rw-project:project[rw-project:name=current()/../project-name]" +
- "/rw-cloud:cloud/rw-cloud:account/rw-cloud:name";
- }
- }
-
- leaf alarm-id {
- mandatory true;
- type string;
- }
- }
- }
}