From: Cheung, Pat (kc1472) Date: Wed, 7 Mar 2018 23:29:21 +0000 (+0000) Subject: vnfapi yang model change X-Git-Tag: v1.3.1~9^2 X-Git-Url: https://gerrit.onap.org/r/gitweb?p=sdnc%2Fnorthbound.git;a=commitdiff_plain;h=504fba7d3898e5c30c6d86311286e36e908b372f 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) --- 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 "; - - 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 "; + + 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; + } + } +}