module l3vpn-service-model { namespace "TBD:odl:l3vpn-servicemodel"; prefix l3vpn-service-model; description "Layer 3 VPN Service Model Module"; revision "2017-05-22" { description "Initial version."; } rpc create-l3vpn-order { input { leaf order-id { mandatory true; type string; } leaf tsr-number { mandatory true; type string; description "the tsr number associated with the most recent change/update to this interface/service-point."; } leaf action-type { mandatory true; type enumeration { enum start; enum discontinue; enum change; } } leaf service-protocol { type enumeration { enum bgp; } } leaf customer-as { when "../service-protocol = 'bgp'"; type uint16; description "IDs the Customer Autonomous Systenm Number."; } leaf l3vpn-id { type string; description "VPN ID used to uniquely identify a group"; } container l3vpn-CE-address { leaf l3vpn-CE-country-code { type string; } leaf l3vpn-CE-address-city { type string; } leaf l3vpn-CE-address-state { type string; } leaf l3vpn-CE-address-zipcode { type string; } leaf l3vpn-CE-address-email { type string; } } leaf data-rate { when "../action-type = 'start' or ../action-type = 'change'"; type uint32; description "IDs the data rate in kilobytes."; } leaf interface-type { type enumeration { enum son; enum eth; } } leaf existing-circuit-id { type string; length "8"; description "4-character circuit-id of an existing physical connection for a new vpn to be configred on as a subinterface."; } leaf existing-device-id { type string; description "device id from service point z that a customer specifies if they want to choose the PE device their vpn is on."; } } } rpc network-service-response { input { leaf l3vpn-sdn-configuration-code { type uint16; description "The code updated from the Network Model indicating the status of the configuration of the action type via a CODE scheme(100,200, etc.)."; } leaf l3vpn-sdn-configuration-text { type string; description "The text updated from the Network Model indicating the status, in detail, of the configuration of the action type."; } leaf route-distinguisher { type string; } leaf vlan-id { type uint8; } leaf bgp-pass { type string; } } } rpc network-service -action { output { leaf service-point-id { mandatory true; type string; description "Unique identifier of a single service point in a layer 3 vpn."; } leaf action-type { mandatory true; type enumeration { enum start; enum discontinue; enum change; } } leaf service-protocol { type enumeration { enum bgp; } } leaf pe-device-id { type string; description "IDs the provider edge device."; } leaf pe-device-type { type enumeration { enum asr; enum mx; } } leaf pe-interface { type string; description "Identifies the provider edge interface."; } leaf pe-interface-type { type enumeration { enum eth; enum son; } description "Identifies the provider edge interface type."; } leaf data-rate { when "../action-type = 'start' or ../action-type = 'change'"; type uint32; description "IDs the data rate in kilobytes."; } leaf pe-ip-address { type ietf-yang:ipv4-address; description "IDs the provider edge ipv4 interface address."; } leaf ce-device-id { type string; description "IDs the customer edge device."; } leaf ce-ip-address { when "../action-type = 'start'"; type ietf-yang:ipv4-address; description "IDs the customer edge ipv4 interface address."; } leaf vpn-group-name { type string; description "IDs the owner of the VPN."; } leaf custom-mtu { type uint16 { range "68..max"; } description "IDs the custom mtu."; } leaf customer-as { when "../service-protocol = 'bgp'"; type uint16; description "IDs the Customer Autonomous Systenm Number."; } leaf existing-circuit-id { type string; length "8"; description "4-character circuit-id of an existing physical connection for a new vpn to be configred on as a subinterface."; } leaf circuit-id { type string; length "8"; description "4-character circuit-id for the new connect vpn order."; } } }//end of rpc network call container l3vpn-vpn-view { list l3vpn-views { key l3vpn-view-id-; leaf l3vpn-view-id { type string; description "ID as a unique key, this is the VPN ID"; } leaf l3vpn-view-group { type string; description "Group name associated with the ID."; } container l3vpn-view-service-points-interface { key ccsd; leaf ccsd { type string; } leaf tsr-number { type string; description "the tsr number associated with the most recent change/update to this interface/service-point."; } leaf l3vpn-view-service-point-interface-id { type string; description "the unique identifier of each service point and its interface."; } leaf interface { type string; } leaf interface-type { type enumeration { enum son; enum eth; } } container ipaddr { choice ipaddress { case ipaddr-v4 { leaf ipaddress-v4 { type ietf-yang:ipv4-address; } } case ipaddr-v6 { leaf ipaddress-v6 { type ietf-yang:ipv6-address; } } } } leaf data-rate { type uint32; units octets; } leaf mtu-size { type uint16 { range "68..max"; } } leaf vlan-id { type string; } } } } container l3vpn-service { leaf l3vpn-tsr-number { type string; } leaf l3vpn-action-type { mandatory true; type enumeration { enum start; enum discontinue; enum change; enum cancel; } } container vpn-group { leaf vpn-group-name { type string; description "name of the agency who owns this specific vpn-group."; } leaf vpn-group-id { type string; description "ID of the agency who owns this specific vpn-group."; } } leaf l3vpn-sdn-configuration-code { type uint16; description "The code updated from the Network Model indicating the status of the configuration of the action type."; } leaf l3vpn-sdn-configuration-text { type string; description "The text updated from the Network Model indicating the status, in detail, of the configuration of the action type."; } container l3vpn-service-points { list l3vpn-service-point { key "l3vpn-service-id"; leaf l3vpn-service-id { mandatory true; type string; } leaf l3vpn-device-type { type enumeration { enum asr; enum mx; } } leaf l3vpn-vlan-id { type string; } container ipaddr { choice ipaddress { case ipaddr-v4 { leaf ipaddress-v4 { type ietf-yang:ipv4-address; } } case ipaddr-v6 { leaf ipaddress-v6 { type ietf-yang:ipv6-address; } } } } container l3vpn-subnet { leaf l3vpn-subnet-mask { type string; } leaf l3vpn-subnet-address { type string; } } leaf l3vpn-service-protocol { type enumeration { enum bgp; enum line-ingress; enum static; } } leaf l3vpn-device-id { type string; } leaf l3vpn-interface { type string; } leaf l3vpn-interface-type { type enumeration { enum eth; enum son; } } leaf l3vpn-data-rate { type uint32; units octets; } leaf l3vpn-latitude { type decimal64; } leaf l3vpn-longitude { type decimal64; } list l3vpn-pocs { key "l3vpn-poc-type"; leaf l3vpn-poc-type { type enumeration { enum main; enum alternate; enum technical; } } leaf l3vpn-poc-first-name { type string; } leaf l3vpn-poc-last-name { type string; } leaf l3vpn-poc-agency-name { type string; } leaf l3vpn-poc-organization-name { type string; } container l3vpn-poc-address { leaf l3vpn-poc-address-city { type string; } leaf l3vpn-poc-address-state { type string; } leaf l3vpn-poc-address-zipcode { type string; } leaf l3vpn-poc-address-email { type string; } } list l3vpn-poc-phone-number { key "l3vpn-poc-phone-number-type" leaf l3vpn-poc-phone-number-type { type enumeration { enum commercial; enum dsn; enum cell; } } leaf areaCode { type int16; } leaf exchange { type int16; } leaf number { type int32; } } }//end of pocs } //end of service points }//end of service point container }//end of l3vpn-service