Initial checkin for vpnservice.
[vpnservice.git] / vpnmanager-api / src / main / yang / vpnservice.yang
1
2 module vpnService {
3     namespace "urn:opendaylight:l3vpn";
4     prefix l3vpn;
5     import ietf-inet-types {prefix inet;}
6     revision "2015-01-11" {
7         description "L3 VPN Service module";
8     }
9
10     typedef port_type {
11         type enumeration {
12             enum untagged { value 1; }
13             enum vlan { value 2; }
14             enum qinq { value 3; }
15         }
16         description "vpn port type, can be untagged, vlan and qinq, default is untagged";
17     }
18
19     grouping vlan_info{
20         leaf ctag {type uint16;}
21         leaf stag {type uint16;}
22         description "optional VLAN tag values";
23     }
24     typedef l3service_result {
25         type enumeration {
26           enum "success" { value 0; description "operation successful";}
27           enum "error" {   value 1; description "Error happened";}
28         }
29         description "Result types";
30     }
31     
32     grouping vpn_key {
33         leaf tenantId { type uint32;}
34         leaf vpn_name { type string;} 
35     }
36
37     grouping vpn_instance_info {
38         leaf routeDistinguisher{ type string; }
39         leaf-list exportrts{ type string;}
40         leaf-list importrts{ type string;}
41     }
42
43     grouping vpn_port_attributes {
44         leaf port_name {type string;}
45         leaf port_type {type port_type;}
46         uses vlan_info; /* optional */
47         leaf mac_address {type string;}
48         leaf ip_address {type string;}
49         leaf prefix_length {type uint8;}
50     }
51     
52     rpc createVpnInstance {
53         description "Create a new L3 VPN";
54         input { 
55             uses vpn_key;
56             uses vpn_instance_info;
57         }
58         output { 
59             leaf result {type l3service_result;} 
60         }
61     }
62     
63     rpc deleteVpnInstance {
64         description "Delete L3 VPN";
65         input { uses vpn_key;}
66         output {
67             leaf result {type l3service_result;} 
68         }
69     }
70     
71     rpc get_vpn{
72         input { uses vpn_key;}
73         output {uses vpn_instance_info;}
74     }
75     
76     rpc add_port_to_vpn{
77         input {
78             uses vpn_key;
79             uses vpn_port_attributes;
80         }
81         output {
82             leaf result {type l3service_result;} 
83         }
84     }
85     rpc remove_port_from_vpn{
86         input {
87             uses vpn_key;
88             uses vpn_port_attributes;
89         }
90         output {
91             leaf result {type l3service_result;} 
92         }
93
94     }
95
96 }