diff options
author | Cheung, Pat (kc1472) <kc1472@att.com> | 2018-03-07 23:29:21 +0000 |
---|---|---|
committer | Cheung, Pat (kc1472) <kc1472@att.com> | 2018-03-07 23:29:21 +0000 |
commit | 504fba7d3898e5c30c6d86311286e36e908b372f (patch) | |
tree | d5979e235cef14f0dd310cd03766d25be709935c /vnfapi/model/src/main/yang/VNF-API.yang | |
parent | 2db328c6cd234acdfc836c995876ef12a43dc7f5 (diff) |
vnfapi yang model change
Enhance vnfapi yang model to support network-role-tag, and subnet-role
Change-Id: I8f0c7cb492df905881a9cb6747e8f7da6d07c82e
Issue-ID: CCSDK-200
Signed-off-by: Cheung, Pat (kc1472) <kc1472@att.com>
Diffstat (limited to 'vnfapi/model/src/main/yang/VNF-API.yang')
-rwxr-xr-x | vnfapi/model/src/main/yang/VNF-API.yang | 1771 |
1 files changed, 932 insertions, 839 deletions
diff --git a/vnfapi/model/src/main/yang/VNF-API.yang b/vnfapi/model/src/main/yang/VNF-API.yang index 9b621aa2..2648a381 100755 --- a/vnfapi/model/src/main/yang/VNF-API.yang +++ b/vnfapi/model/src/main/yang/VNF-API.yang @@ -1,839 +1,932 @@ -module VNF-API {
-
- yang-version 1;
-
- namespace "org:onap:sdnctl:vnf";
-
- prefix vnfapi;
-
- import ietf-inet-types { prefix "ietf"; revision-date "2010-09-24"; }
-
- include "vnfsubmodule";
-
- organization "ONAP";
-
- contact
- "Network Controller <onap-sdnc@lists.onap.org>";
-
- description
- "Defines API interface for VNF Orchestration";
-
- revision "2015-07-20" {
- description
- "Initial draft";
- }
-
- // Last updated on 8-17-2016
- grouping sdnc-request-header {
- container sdnc-request-header {
- leaf svc-request-id {
- type string;
- }
- leaf svc-action {
- type enumeration {
- enum "reserve";
- enum "assign";
- enum "activate"; // equal to commit
- enum "delete"; // equal to commit
- enum "changeassign";
- enum "changedelete";
- enum "rollback";
- }
- }
- leaf svc-notification-url {
- type string;
- }
- }
- }
-
- grouping request-information {
- container request-information {
- leaf request-id {
- type string;
- }
- leaf request-action {
- type enumeration {
- enum "PreloadNetworkRequest";
- enum "DeletePreloadNetworkRequest";
- enum "NetworkActivateRequest";
- enum "DisconnectNetworkRequest";
- enum "PreloadVNFRequest";
- enum "DeletePreloadVNFRequest";
- enum "VNFActivateRequest";
- enum "ChangeVNFActivateRequest";
- enum "DisconnectVNFRequest";
- enum "PreloadVnfInstanceRequest";
- enum "DeletePreloadVnfInstanceRequest";
- enum "VnfInstanceActivateRequest";
- enum "ChangeVnfInstanceActivateRequest";
- enum "DisconnectVnfInstanceRequest";
- enum "PreloadVfModuleRequest";
- enum "DeletePreloadVfModuleRequest";
- enum "VfModuleActivateRequest";
- enum "ChangeVfModuleActivateRequest";
- enum "DisconnectVfModuleRequest";
- }
- }
- leaf request-sub-action {
- type enumeration {
- enum "SUPP";
- enum "CANCEL";
- }
- }
- leaf source {
- type string;
- }
- leaf notification-url {
- type string;
- }
- leaf order-number {
- type string;
- }
- leaf order-version {
- type string;
- }
- }
- }
-
- grouping service-information {
- container service-information {
- // 1610 use for AnAI subscription-service-type
- leaf service-type {
- type string;
- description "AnAI subscription-service-type";
- }
- leaf service-id {
- type string;
- }
- leaf service-instance-id {
- type string;
- description "A service instance that a VNF or a l3-network is associated with";
- }
- // 1610 use for global-customer-id
- leaf subscriber-name {
- type string;
- description "AnAI global-customer-id";
- }
- }
- }
-
-
- grouping vnf-request-information {
- container vnf-request-information {
- leaf vnf-request-version {
- type string;
- }
- leaf model-customization-uuid {
- type string;
- description "customized resource, i.e. vf-module, for use within a given service";
- }
- leaf use-preload {
- type enumeration {
- enum "Y";
- enum "N";
- }
- description "orchestrate vf-module with full preload data or TOSCA lookup plus EIPAM automation";
- }
- leaf vnf-id {
- type string;
- description "vf-module-id";
- }
- leaf vnf-type {
- type string;
- description "vf-module-type";
- }
- leaf vnf-name {
- type string;
- description "vf-module-name";
- }
- leaf generic-vnf-id {
- type string;
- description "generic vnf-id";
- }
- leaf generic-vnf-type {
- type string;
- description "generic vnf type";
- }
- leaf generic-vnf-name {
- type string;
- description "generic vnf name";
- }
- leaf tenant {
- type string;
- }
- leaf aic-clli {
- type string;
- }
- leaf aic-cloud-region {
- type string;
- description "The AIC cloud region which maps to contrail versions";
- }
- list vnf-networks {
- key network-role;
- uses vnf-network;
- description "Network List";
- }
- }
- }
-
- grouping network-request-information {
- container network-request-information {
- leaf network-id {
- type string;
- }
- leaf network-type {
- type string;
- }
- leaf network-name {
- type string;
- }
- leaf tenant {
- type string;
- }
- leaf aic-clli {
- type string;
- }
- leaf aic-cloud-region {
- type string;
- description "The AIC cloud region which maps to contrail versions";
- }
- }
- }
-
- /***********************************************************/
- /* PRELOAD DATA */
- /***********************************************************/
-
- container preload-vnfs {
- uses preload-model-information;
- }
- grouping preload-model-information {
- list vnf-preload-list {
- key "vnf-name vnf-type";
- leaf vnf-name {
- type string;
- description "vf-module-name";
- }
- leaf vnf-type {
- type string;
- description "vf-module-type";
- }
- uses preload-data;
- }
- }
-
- // For preload networks it will have network-topology-information
- // For preload vnfs, it will have vnf-topology-information
- grouping preload-data {
- container preload-data {
- uses vnf-topology-information;
- uses network-topology-information;
- uses oper-status;
- }
- }
-
-
- grouping vnf-topology-information {
- container vnf-topology-information {
- uses vnf-topology-identifier;
- uses vnf-assignments;
- uses vnf-parameters;
- }
- }
-
- grouping vnf-topology-identifier {
- container vnf-topology-identifier {
- leaf service-type {
- type string;
- }
- leaf service-id {
- type string;
- }
- leaf vnf-name {
- type string;
- description "vf-module-name";
- }
- leaf vnf-type {
- type string;
- description "vf-module-type";
- }
- leaf generic-vnf-name {
- type string;
- }
- leaf generic-vnf-type {
- type string;
- }
- leaf generic-vnf-id {
- type string;
- }
- }
- }
-
- grouping vnf-assignments {
- container vnf-assignments {
- leaf vnf-status {
- type string;
- description "Orchestration Status from AAI - to be set by SDNC";
- }
- list availability-zones {
- key "availability-zone";
- ordered-by user;
- leaf availability-zone {
- type string;
- description "Openstack availability zone name or UUID";
- }
- }
- list vnf-networks {
- key network-role;
- uses vnf-network;
- // 1610
- uses sriov-vlan-filter-list;
- description "Network List";
- }
- uses vm-topology;
- }
- }
-
- grouping vm-topology {
- list vnf-vms {
- key vm-type;
- leaf vm-type {
- type string;
- }
- leaf vm-count {
- type uint8;
- }
- list vm-names {
- key "vm-name";
- ordered-by user;
- leaf vm-name {
- type string;
- }
- }
- //leaf-list vm-names {
- // type string;
- // ordered-by user;
- //}
- list vm-networks {
- key network-role;
- uses vm-network;
- description "Network List";
- }
- }
- }
-
- grouping vnf-network {
- leaf network-role {
- type string;
- description "A Network Role to which a VNF must connect";
- }
- leaf network-name {
- type string;
- description "Unique Neutron UUID of an instance of the network role ";
- }
- leaf neutron-id {
- type string;
- description "Unique Neutron UUID of an instance of the network role ";
- }
- leaf network-id {
- type string;
- description "Unique Neutron UUID of an instance of the network role ";
- }
- leaf subnet-id {
- type string;
- description "ipv4 subnet UUID to be passed into the HEAT template for DHCP assignment";
- }
- leaf contrail-network-fqdn {
- type string;
- description "contrail network policy object";
- }
- // 1610
- leaf ipv6-subnet-id {
- type string;
- description "ipv6 subnet UUID to be passed into the HEAT template for DHCP assignment";
- }
- leaf ipv6-subnet-name {
- type string;
- description "ipv6 subnet-name that corresponds to the ipv6 subnet-id";
- }
- leaf subnet-name {
- type string;
- description "ipv4 subnet-name that corresponds to the ipv4 subnet-id";
- }
- }
-
- // 1610
- grouping sriov-vlan-filter-list {
- list sriov-vlan-filter-list {
- key "sriov-vlan-filter";
- leaf sriov-vlan-filter {
- type string;
- }
- }
- }
-
- grouping vm-network {
- leaf network-role {
- type string;
- description "network (identified by role) that this VM connects to. Should also be included in the vnf-networks for the containing VNF";
-
- }
- leaf use-dhcp {
- type enumeration {
- enum "Y";
- enum "N";
- }
- description "Indicator to use DHCP on this network for this VM";
- }
- leaf ip-count {
- type uint8;
- description "The number of ip addresses to be assigned per vm for this network role";
- }
- list network-ips {
- key "ip-address";
- ordered-by user;
- leaf ip-address {
- //type string;
- type ietf:ip-address;
- description "List of assigned ipv4 addresses on a network";
- }
- }
- list network-ips-v6 {
- key "ip-address-ipv6";
- ordered-by user;
- leaf ip-address-ipv6 {
- //type string;
- type ietf:ipv6-address;
- description "List of assigned ipv6 addresses on a network";
- }
- }
- list network-macs {
- key "mac-address";
- ordered-by user;
- leaf mac-address {
- type string;
- description "List of network assignments for this VM (one per network)";
- }
- }
- leaf floating-ip {
- //type string;
- type ietf:ip-address;
- description "Floating ipv4 for VMs of a given type on this network";
- }
- leaf floating-ip-v6 {
- //type string;
- type ietf:ipv6-address;
- description "Floating ipv6 for VMs of a given type on this network";
- }
- list interface-route-prefixes {
- key "interface-route-prefix-cidr";
- ordered-by user;
- leaf interface-route-prefix {
- type ietf:ip-address;
- description "OBSOLETE, route prefixes (CIDRs) to be provided to MSO in vnf-topology as a list of static routes";
- }
- leaf interface-route-prefix-cidr {
- type string;
- description "route prefixes (CIDRs) in ip/cidr format to be provided to MSO in vnf-topology as a list of static routes";
- }
- }
- }
-
- grouping vnf-parameters {
- list vnf-parameters {
- key vnf-parameter-name;
- leaf vnf-parameter-name {
- type string;
- description "The name of an arbitrary instance-specific vnf-parameters";
- }
- leaf vnf-parameter-value {
- type string;
- description "The value of an arbitrary instance-specific vnf-parameters ";
- }
- }
- }
-
- grouping network-topology-information {
- container network-topology-information {
- uses network-topology-identifier;
- uses subnets;
- uses vpn-bindings;
- uses network-policy;
- uses route-table-reference;
- uses provider-network-information;
- }
- }
-
- grouping network-topology-identifier {
- container network-topology-identifier {
- leaf service-type {
- type string;
- }
- leaf network-name {
- type string;
- }
- leaf network-role {
- type string;
- }
- leaf network-type {
- type string;
- }
- leaf network-technology{
- type string;
- }
- }
- }
- grouping subnets {
- list subnets {
- key start-address;
- leaf start-address{
- type ietf:ip-address;
- //type string;
- }
- leaf gateway-address{
- //type string;
- type ietf:ip-address;
- }
- leaf cidr-mask{
- type string;
- }
- leaf ip-version {
- type string;
- }
- leaf dhcp-enabled {
- type enumeration {
- enum "Y";
- enum "N";
- }
- }
- leaf dhcp-start-address {
- type string;
- }
- leaf dhcp-end-address {
- type string;
- }
- // 1610
- leaf subnet-name {
- type string;
- }
-
- }
- }
-
- grouping vpn-bindings {
- list vpn-bindings {
- key vpn-binding-id;
- leaf vpn-binding-id {
- type string;
- }
- leaf global-route-target {
- type string;
- }
- }
- }
-
- grouping network-policy {
- list network-policy {
- key network-policy-fqdn;
- leaf network-policy-fqdn {
- type string;
- }
- leaf network-policy-id {
- type string;
- }
- }
- }
-
- //1610
- grouping route-table-reference {
- list route-table-reference {
- key "route-table-reference-id";
- leaf route-table-reference-id {
- type string;
- }
- leaf route-table-reference-fqdn {
- type string;
- }
- }
- }
-
- // 1610
- grouping provider-network-information {
- container provider-network-information {
- leaf physical-network-name {
- type string;
- }
- leaf is-provider-network {
- type boolean;
- }
- leaf is-shared-network {
- type boolean;
- }
- leaf is-external-network {
- type boolean;
- }
- }
- }
-
- /***********************************************************/
- /* SERVICE_DATA */
- /***********************************************************/
- container vnfs {
- uses vnf-model-infrastructure;
- }
- grouping vnf-model-infrastructure {
- list vnf-list {
- key vnf-id;
- leaf vnf-id {
- type string;
- mandatory true;
- description "vf-module-id";
- }
- uses service-data;
- uses service-status;
- }
- }
- grouping service-data {
- container service-data {
- uses vnf-configuration-information;
- uses oper-status;
- }
- }
- grouping service-status {
- container service-status {
- leaf response-code {
- type string;
- }
- leaf response-message {
- type string;
- }
- leaf final-indicator {
- type string;
- }
- leaf request-status {
- type enumeration {
- enum "synccomplete";
- enum "asynccomplete";
- enum "notifycomplete";
- }
- }
- leaf vnfsdn-action {
- type enumeration {
- enum "PreloadNetworkRequest";
- enum "DeletePreloadNetworkRequest";
- enum "NetworkActivateRequest";
- enum "DisconnectNetworkRequest";
- enum "PreloadVNFRequest";
- enum "DeletePreloadVNFRequest";
- enum "VNFActivateRequest";
- enum "ChangeVNFActivateRequest";
- enum "DisconnectVNFRequest";
- enum "PreloadVnfInstanceRequest";
- enum "DeletePreloadVnfInstanceRequest";
- enum "VnfInstanceActivateRequest";
- enum "ChangeVnfInstanceActivateRequest";
- enum "DisconnectVnfInstanceRequest";
- enum "PreloadVfModuleRequest";
- enum "DeletePreloadVfModuleRequest";
- enum "VfModuleActivateRequest";
- enum "ChangeVfModuleActivateRequest";
- enum "DisconnectVfModuleRequest";
- }
- }
- leaf vnfsdn-subaction {
- type enumeration {
- enum "SUPP";
- enum "CANCEL";
- }
- }
- leaf rpc-name {
- type enumeration {
- enum "vnf-topology-operation";
- enum "preload-vnf-topology-operation";
- enum "vnf-instance-topology-operation";
- enum "preload-vnf-instance-topology-operation";
- enum "vf-module-topology-operation";
- enum "preload-vf-module-topology-operation";
- }
- }
- leaf rpc-action {
- type enumeration {
- enum "reserve";
- enum "assign";
- enum "activate"; // equal to commit
- enum "delete"; // equal to commit
- enum "changeassign";
- enum "changedelete";
- enum "rollback";
- }
- }
- leaf response-timestamp {
- type string;
- }
- }
- }
- grouping vnf-configuration-information {
- uses sdnc-request-header;
- uses request-information;
- uses service-information;
- uses vnf-request-information;
- uses vnf-topology;
- }
- grouping vnf-topology-response-body {
- leaf svc-request-id {
- type string;
- }
- leaf response-code {
- type string;
- }
- leaf response-message {
- type string;
- }
- leaf ack-final-indicator {
- type string;
- }
- }
-
- grouping vnf-information {
- container vnf-information {
- leaf vnf-service-type {
- type string;
- }
- leaf vnf-id {
- type string;
- description "vf-module-id";
- }
- }
- }
-
- grouping network-information {
- container network-information {
- leaf network-service-type {
- type string;
- }
- leaf network-id {
- type string;
- }
- }
- }
-
-
- // Carried over from l3sdn and potentially not needed
- grouping oper-status {
- container oper-status {
- leaf order-status {
- type enumeration {
- enum "Active";
- enum "PendingAssignment";
- enum "PendingCreate";
- enum "PendingUpdate";
- enum "PendingDelete";
- enum "Deleted";
-
- }
- }
- leaf last-action {
- type enumeration {
- enum "VNFActivateRequest";
- enum "ChangeVNFActivateRequest";
- enum "VnfInstanceActivateRequest";
- enum "ChangeVnfInstanceActivateRequest";
- enum "VfModuleActivateRequest";
- enum "ChangeVfModuleActivateRequest";
- enum "DisconnectVNFRequest";
- enum "DisconnectVnfInstanceRequest";
- enum "DisconnectVfModuleRequest";
- enum "PreloadVNFRequest";
- enum "DeletePreloadVNFRequest";
- enum "PreloadVnfInstanceRequest";
- enum "DeletePreloadVnfInstanceRequest";
- enum "PreloadVfModuleRequest";
- enum "DeletePreloadVfModuleRequest";
- }
- }
- leaf last-svc-request-id {
- type string;
- }
- leaf last-order-status {
- type enumeration {
- enum "Active";
- enum "PendingAssignment";
- enum "PendingCreate";
- enum "PendingUpdate";
- enum "PendingDelete";
- enum "Deleted";
- }
- }
- leaf create-timestamp {
- type string;
- }
- leaf modify-timestamp {
- type string;
- }
- leaf maintenance-indicator {
- type enumeration {
- enum "Y";
- enum "N";
- }
- }
- }
- }
- grouping vnf-topology {
- leaf vnf-id {
- type string;
- description "vf-module-id";
- }
- uses vnf-topology-information;
- }
-
-
- rpc vnf-topology-operation {
- input {
- uses sdnc-request-header;
- uses request-information;
- uses service-information;
- uses vnf-request-information;
- }
- output {
- uses vnf-topology-response-body;
- uses vnf-information;
- uses service-information;
- }
- }
-
- rpc network-topology-operation {
- input {
- uses sdnc-request-header;
- uses request-information;
- uses service-information;
- uses network-request-information;
- }
- output {
- uses vnf-topology-response-body;
- uses network-information;
- uses service-information;
- }
- }
-
- rpc preload-vnf-topology-operation {
- input {
- uses sdnc-request-header;
- uses request-information;
- uses vnf-topology-information;
- }
- output {
- uses vnf-topology-response-body;
- }
- }
-
- rpc preload-network-topology-operation {
- input {
- uses sdnc-request-header;
- uses request-information;
- uses network-topology-information;
- }
- output {
- uses vnf-topology-response-body;
- }
- }
-}
+module VNF-API { + + yang-version 1; + + namespace "org:onap:sdnctl:vnf"; + + prefix vnfapi; + + import ietf-inet-types { prefix "ietf"; revision-date "2010-09-24"; } + + include "vnfsubmodule"; + + organization "ONAP"; + + contact + "Network Controller <onap-sdnc@lists.onap.org>"; + + description + "Defines API interface for VNF Orchestration"; + + revision "2015-07-20" { + description + "Initial draft"; + } + // Last updated on 8-17-2016 + grouping sdnc-request-header { + container sdnc-request-header { + leaf svc-request-id { + type string; + } + leaf svc-action { + type enumeration { + enum "reserve"; + enum "assign"; + enum "activate"; // equal to commit + enum "delete"; // equal to commit + enum "changeassign"; + enum "changedelete"; + enum "rollback"; + } + } + leaf svc-notification-url { + type string; + } + } + } + + grouping request-information { + container request-information { + leaf request-id { + type string; + } + leaf request-action { + type enumeration { + enum "PreloadNetworkRequest"; + enum "DeletePreloadNetworkRequest"; + enum "NetworkActivateRequest"; + enum "DisconnectNetworkRequest"; + enum "PreloadVNFRequest"; + enum "DeletePreloadVNFRequest"; + enum "VNFActivateRequest"; + enum "ChangeVNFActivateRequest"; + enum "DisconnectVNFRequest"; + enum "PreloadVnfInstanceRequest"; + enum "DeletePreloadVnfInstanceRequest"; + enum "VnfInstanceActivateRequest"; + enum "ChangeVnfInstanceActivateRequest"; + enum "DisconnectVnfInstanceRequest"; + enum "PreloadVfModuleRequest"; + enum "DeletePreloadVfModuleRequest"; + enum "VfModuleActivateRequest"; + enum "ChangeVfModuleActivateRequest"; + enum "DisconnectVfModuleRequest"; + } + } + leaf request-sub-action { + type enumeration { + enum "SUPP"; + enum "CANCEL"; + enum "RetainResource"; + } + } + leaf source { + type string; + } + leaf notification-url { + type string; + } + leaf order-number { + type string; + } + leaf order-version { + type string; + } + } + } + + grouping service-information { + container service-information { + leaf service-type { + type string; + description "AnAI subscription-service-type"; + } + leaf service-id { + type string; + } + leaf service-instance-id { + type string; + description "A service instance that a VNF or a l3-network is associated with"; + } + leaf subscriber-name { + type string; + description "AnAI global-customer-id"; + } + } + } + + + grouping vnf-request-information { + container vnf-request-information { + leaf vnf-request-version { + type string; + } + leaf model-customization-uuid { + type string; + description "customized resource, i.e. vf-module, for use within a given service"; + } + leaf use-preload { + type enumeration { + enum "Y"; + enum "N"; + } + description "orchestrate vf-module with full preload data or TOSCA lookup plus EIPAM automation"; + } + leaf vnf-id { + type string; + description "vf-module-id"; + } + leaf vnf-type { + type string; + description "vf-module-type"; + } + leaf vnf-name { + type string; + description "vf-module-name"; + } + leaf generic-vnf-id { + type string; + description "generic vnf-id"; + } + leaf generic-vnf-type { + type string; + description "generic vnf type"; + } + leaf generic-vnf-name { + type string; + description "generic vnf name"; + } + leaf tenant { + type string; + } + leaf aic-clli { + type string; + } + leaf aic-cloud-region { + type string; + description "The AIC cloud region which maps to contrail versions"; + } + list vnf-networks { + key network-role; + uses vnf-network; + description "Network List"; + } + } + } + + grouping network-request-information { + container network-request-information { + leaf network-id { + type string; + } + leaf network-type { + type string; + } + leaf network-name { + type string; + } + leaf tenant { + type string; + } + leaf aic-clli { + type string; + } + leaf aic-cloud-region { + type string; + description "The AIC cloud region which maps to contrail versions"; + } + } + } + + /***********************************************************/ + /* PRELOAD DATA */ + /***********************************************************/ + + container preload-vnfs { + uses preload-model-information; + } + grouping preload-model-information { + list vnf-preload-list { + key "vnf-name vnf-type"; + leaf vnf-name { + type string; + description "vf-module-name"; + } + leaf vnf-type { + type string; + description "vf-module-type"; + } + uses preload-data; + } + } + + // For preload networks it will have network-topology-information + // For preload vnfs, it will have vnf-topology-information + grouping preload-data { + container preload-data { + uses vnf-topology-information; + uses network-topology-information; + uses oper-status; + } + } + + + grouping vnf-topology-information { + container vnf-topology-information { + uses vnf-topology-identifier; + uses vnf-assignments; + uses vnf-parameters; + } + } + + grouping vnf-topology-identifier { + container vnf-topology-identifier { + leaf service-type { + type string; + } + leaf service-id { + type string; + } + leaf vnf-name { + type string; + description "vf-module-name"; + } + leaf vnf-type { + type string; + description "vf-module-type"; + } + leaf generic-vnf-name { + type string; + } + leaf generic-vnf-type { + type string; + } + leaf generic-vnf-id { + type string; + } + } + } + + grouping vnf-assignments { + container vnf-assignments { + leaf vnf-status { + type string; + description "Orchestration Status from AAI - to be set by SDNC"; + } + list availability-zones { + key "availability-zone"; + ordered-by user; + leaf availability-zone { + type string; + description "Openstack availability zone name or UUID"; + } + } + list vnf-networks { + key network-role; + uses vnf-network; + uses sriov-vlan-filter-list; + description "Network List"; + } + uses vm-topology; + } + } + + grouping vm-topology { + list vnf-vms { + key vm-type; + leaf vm-type { + type string; + } + leaf vm-count { + type uint8; + } + list vm-names { + ordered-by user; + key "vm-name"; + leaf vm-name { + type string; + } + list vnfc-names { + ordered-by user; + key "vnfc-name"; + leaf vnfc-name { + type string; + } + list vnfc-networks { + key vnfc-network-role; + uses vnfc-network; + } + } + } + list vm-networks { + key network-role; + uses vm-network; + description "Network List"; + } + } + } + + grouping vnfc-network { + leaf vnfc-network-role { + type string; + } + list vnfc-subnets { + key "vnfc-subnet-role"; + leaf vnfc-subnet-role { + type string; + } + list vnfc-ipassignments { + key "vnfc-address-family"; + leaf vnfc-address-family { + description "Subnet Version tells if this is IpV4 or IpV6"; + type enumeration { + enum "ipv4"; + enum "ipv6"; + } + } + leaf vnfc-subnet-dhcp { + description "Indicator to use DHCP on this network for this VNFC. Unless dhcp=N, we wouldnt have any address, since they would not be sdnc assigned "; + type enumeration { + enum "Y"; + enum "N"; + } + } + leaf vnfc-subnet-ipcount { + description "The number of ip addresses to be assigned per vnfc for this subnet role"; + type uint8; + } + list vnfc-subnet-ips { + key "vnfc-client-key"; + leaf vnfc-client-key { + type string; + } + leaf ip-type { + description "Capture what type of IP this is, if is virtual IP (AKA, floating IP) or Fixed IP. "; + type enumeration { + enum "FIXED"; + enum "VIP"; + } + } + leaf vnfc-address-ipv4 { + description "Either IpV4 IP addresses or IpV6 IP addresses should be present, but not both within one VnfcVersion. "; + type inet:ip-address; + } + leaf vnfc-address-ipv6 { + description "Either IpV4 IP addresses or IpV6 IP addresses should be present, but not both within one VnfcVersion."; + type inet:ipv6-address; + } + } + } + } + } + + grouping vnf-network { + leaf network-role { + type string; + description "A Network Role to which a VNF must connect"; + } + leaf network-role-tag { + type string; + description "The network-role that maps to the HEAT parameter {network-role}_net_id"; + } + leaf network-name { + type string; + description "Unique Neutron UUID of an instance of the network role "; + } + leaf neutron-id { + type string; + description "Unique Neutron UUID of an instance of the network role "; + } + leaf network-id { + type string; + description "Unique Neutron UUID of an instance of the network role "; + } + leaf subnet-id { + type string; + description "ipv4 subnet UUID to be passed into the HEAT template for DHCP assignment"; + } + leaf contrail-network-fqdn { + type string; + description "contrail network policy object"; + } + leaf ipv6-subnet-id { + type string; + description "ipv6 subnet UUID to be passed into the HEAT template for DHCP assignment"; + } + leaf ipv6-subnet-name { + type string; + description "ipv6 subnet-name that corresponds to the ipv6 subnet-id"; + } + leaf subnet-name { + type string; + description "ipv4 subnet-name that corresponds to the ipv4 subnet-id"; + } + leaf ipv4-key-subnet-id { + description "Unique SDN-C generated UUID of the ipv4 subnet.Key into A&AI instance."; + type string; + } + leaf ipv6-key-subnet-id { + description "Unique SDN-C generated UUID of the ipv6 subnet.Key into A&AI instance."; + type string; + } + leaf subnet-role { + type string; + } + } + + grouping sriov-vlan-filter-list { + list sriov-vlan-filter-list { + key "sriov-vlan-filter"; + leaf sriov-vlan-filter { + type string; + } + } + } + + grouping vm-network { + leaf network-role { + type string; + description "network (identified by role) that this VM connects to. Should also be included in the vnf-networks for the containing VNF"; + } + leaf network-role-tag { + type string; + description "The network-role that maps to the HEAT parameter {network-role}_net_id"; + } + leaf use-dhcp { + type enumeration { + enum "Y"; + enum "N"; + } + description "Indicator to use DHCP on this network for this VM"; + } + leaf ip-count { + type uint8; + description "The number of ip addresses to be assigned per vm for this network role"; + } + leaf ip-count-ipv6 { + type uint8; + description "The number of ipv6 addresses to be assigned per vm for this network role"; + } + list network-ips { + ordered-by user; + key ip-address; + leaf ip-address { + type ietf:ip-address; + description "List of assigned ipv4 addresses on a network"; + } + } + list network-ips-v6 { + ordered-by user; + key ip-address-ipv6; + leaf ip-address-ipv6 { + type ietf:ipv6-address; + description "List of assigned ipv6 addresses on a network"; + } + } + list network-macs { + ordered-by user; + key mac-address; + leaf mac-address { + type string; + description "List of network assignments for this VM (one per network)"; + } + } + leaf floating-ip { + type ietf:ip-address; + description "Floating ipv4 for VMs of a given type on this network"; + } + leaf floating-ip-v6 { + type ietf:ipv6-address; + description "Floating ipv6 for VMs of a given type on this network"; + } + list interface-route-prefixes { + ordered-by user; + key interface-route-prefix; + leaf interface-route-prefix { + type ietf:ip-address; + description "OBSOLETE, route prefixes (CIDRs) to be provided to MSO in vnf-topology as a list of static routes"; + } + leaf interface-route-prefix-cidr { + type string; + description "route prefixes (CIDRs) in ip/cidr format to be provided to MSO in vnf-topology as a list of static routes"; + } + } + } + + grouping vnf-parameters { + list vnf-parameters { + key vnf-parameter-name; + leaf vnf-parameter-name { + type string; + description "The name of an arbitrary instance-specific vnf-parameters"; + } + leaf vnf-parameter-value { + type string; + description "The value of an arbitrary instance-specific vnf-parameters "; + } + } + } + + grouping network-topology-information { + container network-topology-information { + uses network-topology-identifier; + uses subnets; + uses vpn-bindings; + uses network-policy; + uses route-table-reference; + uses provider-network-information; + } + } + + grouping network-topology-identifier { + container network-topology-identifier { + leaf service-type { + type string; + } + leaf network-name { + type string; + } + leaf network-role { + type string; + } + leaf network-type { + type string; + } + leaf network-technology{ + type string; + } + } + } + grouping subnets { + list subnets { + key start-address; + leaf start-address{ + type ietf:ip-address; + } + leaf gateway-address{ + type ietf:ip-address; + } + leaf cidr-mask{ + type string; + } + leaf ip-version { + type string; + } + leaf dhcp-enabled { + type enumeration { + enum "Y"; + enum "N"; + } + } + leaf dhcp-start-address { + type string; + } + leaf dhcp-end-address { + type string; + } + leaf subnet-name { + type string; + } + leaf addr-from-start { + description "Default is N"; + type enumeration { + enum "Y"; + enum "N"; + } + } + leaf subnet-role { + type string; + } + uses host-routes; + } + } + + grouping vpn-bindings { + list vpn-bindings { + key vpn-binding-id; + leaf vpn-binding-id { + type string; + } + leaf global-route-target { + type string; + } + } + } + + grouping network-policy { + list network-policy { + key network-policy-fqdn; + leaf network-policy-fqdn { + type string; + } + leaf network-policy-id { + type string; + } + } + } + + grouping route-table-reference { + list route-table-reference { + key "route-table-reference-id"; + leaf route-table-reference-id { + type string; + } + leaf route-table-reference-fqdn { + type string; + } + } + } + + grouping provider-network-information { + container provider-network-information { + leaf physical-network-name { + type string; + } + leaf is-provider-network { + type boolean; + } + leaf is-shared-network { + type boolean; + } + leaf is-external-network { + type boolean; + } + } + } + + grouping host-routes { + list host-routes { + key "route-prefix"; + leaf route-prefix { + type string; + } + leaf next-hop { + description "Could be ip-address or hostname or service-instance"; + type string; + } + } + } + + /***********************************************************/ + /* SERVICE_DATA */ + /***********************************************************/ + container vnfs { + uses vnf-model-infrastructure; + } + grouping vnf-model-infrastructure { + list vnf-list { + key vnf-id; + leaf vnf-id { + type string; + mandatory true; + description "vf-module-id"; + } + uses service-data; + uses service-status; + } + } + grouping service-data { + container service-data { + uses vnf-configuration-information; + uses oper-status; + } + } + grouping service-status { + container service-status { + leaf response-code { + type string; + } + leaf response-message { + type string; + } + leaf final-indicator { + type string; + } + leaf request-status { + type enumeration { + enum "synccomplete"; + enum "asynccomplete"; + enum "notifycomplete"; + } + } + leaf vnfsdn-action { + type enumeration { + enum "PreloadNetworkRequest"; + enum "DeletePreloadNetworkRequest"; + enum "NetworkActivateRequest"; + enum "DisconnectNetworkRequest"; + enum "PreloadVNFRequest"; + enum "DeletePreloadVNFRequest"; + enum "VNFActivateRequest"; + enum "ChangeVNFActivateRequest"; + enum "DisconnectVNFRequest"; + enum "PreloadVnfInstanceRequest"; + enum "DeletePreloadVnfInstanceRequest"; + enum "VnfInstanceActivateRequest"; + enum "ChangeVnfInstanceActivateRequest"; + enum "DisconnectVnfInstanceRequest"; + enum "PreloadVfModuleRequest"; + enum "DeletePreloadVfModuleRequest"; + enum "VfModuleActivateRequest"; + enum "ChangeVfModuleActivateRequest"; + enum "DisconnectVfModuleRequest"; + } + } + leaf vnfsdn-subaction { + type enumeration { + enum "SUPP"; + enum "CANCEL"; + enum "RetainResource"; + } + } + leaf rpc-name { + type enumeration { + enum "vnf-topology-operation"; + enum "preload-vnf-topology-operation"; + enum "vnf-instance-topology-operation"; + enum "preload-vnf-instance-topology-operation"; + enum "vf-module-topology-operation"; + enum "preload-vf-module-topology-operation"; + } + } + leaf rpc-action { + type enumeration { + enum "reserve"; + enum "assign"; + enum "activate"; // equal to commit + enum "delete"; // equal to commit + enum "changeassign"; + enum "changedelete"; + enum "rollback"; + } + } + leaf response-timestamp { + type string; + } + } + } + grouping vnf-configuration-information { + uses sdnc-request-header; + uses request-information; + uses service-information; + uses vnf-request-information; + uses vnf-topology; + } + grouping vnf-topology-response-body { + leaf svc-request-id { + type string; + } + leaf response-code { + type string; + } + leaf response-message { + type string; + } + leaf ack-final-indicator { + type string; + } + } + + grouping vnf-information { + container vnf-information { + leaf vnf-service-type { + type string; + } + leaf vnf-id { + type string; + description "vf-module-id"; + } + } + } + + grouping network-information { + container network-information { + leaf network-service-type { + type string; + } + leaf network-id { + type string; + } + } + } + + + // Carried over from l3sdn and potentially not needed + grouping oper-status { + container oper-status { + leaf order-status { + type enumeration { + enum "Active"; + enum "PendingAssignment"; + enum "PendingCreate"; + enum "PendingUpdate"; + enum "PendingDelete"; + enum "Deleted"; + + } + } + leaf last-action { + type enumeration { + enum "VNFActivateRequest"; + enum "ChangeVNFActivateRequest"; + enum "VnfInstanceActivateRequest"; + enum "ChangeVnfInstanceActivateRequest"; + enum "VfModuleActivateRequest"; + enum "ChangeVfModuleActivateRequest"; + enum "DisconnectVNFRequest"; + enum "DisconnectVnfInstanceRequest"; + enum "DisconnectVfModuleRequest"; + enum "PreloadVNFRequest"; + enum "DeletePreloadVNFRequest"; + enum "PreloadVnfInstanceRequest"; + enum "DeletePreloadVnfInstanceRequest"; + enum "PreloadVfModuleRequest"; + enum "DeletePreloadVfModuleRequest"; + } + } + leaf last-svc-request-id { + type string; + } + leaf last-order-status { + type enumeration { + enum "Active"; + enum "PendingAssignment"; + enum "PendingCreate"; + enum "PendingUpdate"; + enum "PendingDelete"; + enum "Deleted"; + } + } + leaf create-timestamp { + type string; + } + leaf modify-timestamp { + type string; + } + leaf maintenance-indicator { + type enumeration { + enum "Y"; + enum "N"; + } + } + } + } + grouping vnf-topology { + leaf vnf-id { + type string; + description "vf-module-id"; + } + uses vnf-topology-information; + } + + + rpc vnf-topology-operation { + input { + uses sdnc-request-header; + uses request-information; + uses service-information; + uses vnf-request-information; + } + output { + uses vnf-topology-response-body; + uses vnf-information; + uses service-information; + } + } + + rpc network-topology-operation { + input { + uses sdnc-request-header; + uses request-information; + uses service-information; + uses network-request-information; + } + output { + uses vnf-topology-response-body; + uses network-information; + uses service-information; + } + } + + rpc preload-vnf-topology-operation { + input { + uses sdnc-request-header; + uses request-information; + uses vnf-topology-information; + } + output { + uses vnf-topology-response-body; + } + } + + rpc preload-network-topology-operation { + input { + uses sdnc-request-header; + uses request-information; + uses network-topology-information; + } + output { + uses vnf-topology-response-body; + } + } +} |