blob: 810b9594ee23acdf50fb7840b150832676c0695e [file] [log] [blame]
//INFORMATION
//organization "CTTC";
//contact "Pol Alemany, Ricard Vilalta, Juan Luis de la Cruz";
//description "Network Slice components definition";
// MODULE STRUCTURE
module instantiation-parameters {
//header information
yang-version 1;
namespace "urn:ietf:params:xml:ns:yang:nfvo:instantiation-parameters";
prefix "instantiation-parameters";
import rw-project {
prefix "rw-project";
}
import nsd {
prefix "nsd";
}
import vnfd {
prefix "vnfd";
}
import nsr {
prefix "nsr";
}
import ietf-inet-types {
prefix "inet";
}
import ietf-yang-types {
prefix "ietf-yang";
}
//revision history
revision 2018-09-14 {
description "Initial version";
}
grouping ns_instantiate {
leaf nsName {
mandatory true;
type string;
}
leaf nsDescription {
type string;
}
leaf nsdId {
mandatory true;
type leafref {
path "/nsd:nsd-catalog/nsd:nsd/nsd:id";
}
}
leaf vimAccountId {
mandatory true;
type string;
}
leaf ssh_keys {
type string;
}
leaf nsr_id {
config false;
type leafref {
path "/rw-project:project/nsr:ns-instance-opdata/nsr:nsr/nsr:ns-instance-config-ref";
}
}
list vnf {
key "member-vnf-index";
uses vnf;
}
list vld {
key "name";
uses vld;
}
}
grouping vnf {
leaf member-vnf-index{
mandatory true;
type string;
}
leaf vimAccountId {
type string;
}
list vdu {
key "id";
uses ns_instantiate_vdu;
}
list internal-vld {
key "name";
uses ns-instantiate-internal-vld;
}
}
grouping vld {
leaf name {
type string;
}
leaf vim-network-name {
type string;
}
container ip-profile {
uses ip-profile-update-schema;
}
list vnfd-connection-point-ref {
key "member-vnf-index-ref vnfd-connection-point-ref";
leaf member-vnf-index-ref {
type leafref {
//path "../../../vnf/member-vnf-index";
path "/nsd:nsd-catalog/nsd:nsd/nsd:constituent-vnfd/nsd:member-vnf-index";
}
}
leaf vnfd-connection-point-ref {
type leafref {
path "/vnfd:vnfd-catalog/vnfd:vnfd/vnfd:connection-point/vnfd:name";
}
}
leaf ip-address{
type inet:ip-address;
}
}
}
grouping ns_instantiate_vdu {
leaf id {
mandatory true;
type string;
}
list volume {
key "name";
leaf name {
mandatory true;
type string;
}
leaf vim-volume-id {
mandatory true;
type string;
}
}
list interface {
key "name";
leaf name {
mandatory true;
type string;
}
leaf ip-address {
type inet:ip-address;
}
leaf mac-address {
type ietf-yang:mac-address;
}
leaf floating-ip-required {
type boolean;
}
}
}
grouping ns-instantiate-internal-vld {
leaf name {
mandatory true;
type string;
}
leaf vim-network-name {
type string;
}
container ip-profile {
uses ip-profile-update-schema;
}
list internal-connection-point {
key "id-ref";
leaf id-ref {
mandatory true;
type string;
}
leaf ip-address{
type inet:ip-address;
}
}
}
grouping ip-profile-update-schema { //each leaf/list is either null or something
leaf ip-version {
type inet:ip-version;
}
leaf subnet-address {
type inet:ip-prefix;
}
leaf gateway-address {
type inet:ip-prefix;
}
list dns-server {
key "address";
leaf address {
mandatory true;
type inet:ip-address;
}
}
container dhcp-params {
leaf enabled {
type boolean;
}
leaf count {
type uint8; // >=1
}
leaf start-address {
type inet:ip-address;
}
}
}
}