Introducing RPCs for remote calls to VPP
[groupbasedpolicy.git] / renderers / vpp / src / main / yang / vpp-adapter.yang
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8
9 module vpp-adapter {
10     yang-version 1;
11
12     namespace "urn:opendaylight:groupbasedpolicy:vpp_adapter";
13     prefix "vpp-adapter";
14
15     import vpp-renderer { prefix "vpp-renderer"; }
16     import network-topology { prefix nt; revision-date 2013-10-21; }
17     import opendaylight-l2-types { prefix l2-types; revision-date "2013-08-27"; }
18     import ietf-yang-types { prefix yang-types; revision-date "2013-07-15"; }
19     import ietf-inet-types { prefix "inet-types"; }
20
21     description
22         "This module allows external plugins to use VPP renderer by calling defined RPCs.";
23
24     revision "2016-12-01" {
25         description
26             "Initial revision.";
27     }
28
29     typedef vxlan-vni-type {
30         type uint32 {
31             range "1 .. 16777214";
32         }
33     }
34
35     grouping bridge-domain-attributes {
36         uses vpp-renderer:bridge-domain-base-attributes;
37         leaf unknown-unicast-flood {
38             type boolean;
39             default "False";
40         }
41         choice tunnel-type {
42             case vxlan {
43                 leaf vni {
44                     type vxlan-vni-type;
45                 }
46             }
47             case vlan {
48                 leaf vlan-id {
49                     type l2-types:vlan-id;
50                 }
51             }
52         }
53     }
54
55     grouping bridge-domain-nodes {
56         uses bridge-domain-id;
57             leaf-list bridge-domain-node {
58                 min-elements 1;
59                 type nt:node-id;
60             }
61     }
62
63     grouping bridge-domain-id {
64         leaf bridge-domain-id {
65             mandatory true;
66             type string;
67         }
68     }
69
70     rpc create-virtual-bridge-domain-on-nodes {
71        input {
72             uses bridge-domain-attributes;
73        }
74     }
75
76     rpc expand-virtual-bridge-domain-on-nodes {
77        input {
78             uses bridge-domain-nodes;
79        }
80     }
81
82     rpc delete-virtual-bridge-domain-on-nodes {
83        input {
84             uses bridge-domain-nodes;
85        }
86     }
87
88     rpc create-interface-on-node {
89         input {
90             uses vpp-renderer:interface-attributes;
91         }
92     }
93
94     rpc delete-interface {
95         input {
96             uses vpp-renderer:interface-location;
97         }
98     }
99
100     rpc add-interface-to-bridge-domain {
101         input {
102             uses vpp-renderer:interface-location;
103             uses bridge-domain-id;
104         }
105     }
106
107     rpc del-interface-from-bridge-domain {
108         input {
109             uses vpp-renderer:interface-location;
110         }
111     }
112 }