vswitch: Make unique "name" columns immutable, to simplify transactions.
[sliver-openvswitch.git] / vswitchd / vswitch.ovsschema
1 {"name": "Open_vSwitch",
2  "tables": {
3    "Open_vSwitch": {
4      "columns": {
5        "bridges": {
6          "type": {"key": {"type": "uuid",
7                           "refTable": "Bridge"},
8                   "min": 0, "max": "unlimited"}},
9        "managers": {
10          "type": {"key": "string", "min": 0, "max": "unlimited"}},
11        "ssl": {
12          "type": {"key": {"type": "uuid",
13                           "refTable": "SSL"},
14                   "min": 0, "max": 1}},
15        "external_ids": {
16          "type": {"key": "string", "value": "string",
17                   "min": 0, "max": "unlimited"}},
18        "next_cfg": {
19          "type": "integer"},
20        "cur_cfg": {
21          "type": "integer"},
22        "capabilities": {
23          "type": {"key": "string",
24                   "value": {"type": "uuid",
25                             "refTable": "Capability"},
26                   "min": 0, "max": "unlimited"}},
27        "statistics": {
28          "type": {"key": "string", "value": "integer", "min": 0, "max": "unlimited"},
29          "ephemeral": true}},
30      "maxRows": 1},
31    "Capability": {
32      "columns": {
33        "details": {
34          "type": {"key": "string", "value": "string",
35                   "min": 0, "max": "unlimited"}}}},
36    "Bridge": {
37      "columns": {
38        "name": {
39          "type": "string",
40          "mutable": false},
41        "datapath_type": {
42          "type": "string"},
43        "datapath_id": {
44          "type": {"key": "string", "min": 0, "max": 1},
45          "ephemeral": true},
46        "ports": {
47          "type": {"key": {"type": "uuid",
48                           "refTable": "Port"},
49                   "min": 0, "max": "unlimited"}},
50        "mirrors": {
51          "type": {"key": {"type": "uuid",
52                           "refTable": "Mirror"},
53                   "min": 0, "max": "unlimited"}},
54        "netflow": {
55          "type": {"key": {"type": "uuid",
56                           "refTable": "NetFlow"},
57                   "min": 0, "max": 1}},
58        "sflow": {
59          "type": {"key": {"type": "uuid",
60                           "refTable": "sFlow"},
61                   "min": 0, "max": 1}},
62        "controller": {
63          "type": {"key": {"type": "uuid",
64                           "refTable": "Controller"},
65                   "min": 0, "max": "unlimited"}},
66        "fail_mode": {
67          "type": {"key": {"type": "string",
68                           "enum": ["set", ["standalone", "secure"]]},
69                   "min": 0, "max": 1}},
70        "other_config": {
71          "type": {"key": "string", "value": "string", "min": 0, "max": "unlimited"}},
72        "external_ids": {
73          "type": {"key": "string", "value": "string", "min": 0, "max": "unlimited"}},
74        "flood_vlans": {
75          "type": {"key": {"type": "integer",
76                           "minInteger": 0, 
77                           "maxInteger": 4095},
78                   "min": 0, "max": 4096}}}},
79    "Port": {
80      "columns": {
81        "name": {
82          "type": "string",
83          "mutable": false},
84        "interfaces": {
85          "type": {"key": {"type": "uuid",
86                           "refTable": "Interface"},
87                   "min": 1, "max": "unlimited"}},
88        "trunks": {
89          "type": {"key": {"type": "integer",
90                           "minInteger": 0,
91                           "maxInteger": 4095},
92                   "min": 0, "max": 4096}},
93        "tag": {
94          "type": {"key": {"type": "integer",
95                           "minInteger": 0,
96                           "maxInteger": 4095},
97                   "min": 0, "max": 1}},
98        "qos": {
99          "type": {"key": {"type": "uuid",
100                           "refTable": "QoS"},
101                   "min": 0, "max": 1}},
102        "mac": {
103          "type": {"key": {"type": "string"},
104                   "min": 0, "max": 1}},
105        "bond_updelay": {
106          "type": "integer"},
107        "bond_downdelay": {
108          "type": "integer"},
109        "bond_fake_iface": {
110          "type": "boolean"},
111        "fake_bridge": {
112          "type": "boolean"},
113        "other_config": {
114          "type": {"key": "string", "value": "string", "min": 0, "max": "unlimited"}},
115        "external_ids": {
116          "type": {"key": "string", "value": "string", "min": 0, "max": "unlimited"}}}},
117    "Interface": {
118      "columns": {
119        "name": {
120          "type": "string",
121          "mutable": false},
122        "type": {
123          "type": "string"},
124        "options": {
125          "type": {"key": "string", "value": "string", "min": 0, "max": "unlimited"}},
126        "ingress_policing_rate": {
127          "type": {"key": {"type": "integer",
128                           "minInteger": 0}}},
129        "ingress_policing_burst": {
130          "type": {"key": {"type": "integer",
131                           "minInteger": 0}}},
132        "mac": {
133          "type": {"key": {"type": "string"},
134                   "min": 0, "max": 1}},
135        "external_ids": {
136          "type": {"key": "string", "value": "string", "min": 0, "max": "unlimited"}},
137        "ofport": {
138          "type": {"key": "integer", "min": 0, "max": 1},
139          "ephemeral": true},
140        "statistics": {
141          "type": {"key": "string", "value": "integer", "min": 0, "max": "unlimited"},
142          "ephemeral": true},
143        "status": {
144          "type": {"key": "string", "value": "string", "min": 0, "max": "unlimited"},
145          "ephemeral": true},
146        "external_ids": {
147          "type": {"key": "string", "value": "string",
148                   "min": 0, "max": "unlimited"}}}},
149    "QoS": {
150      "columns": {
151        "type": {
152          "type": "string"},
153        "queues": {
154          "type": {"key": {"type": "integer",
155                           "minInteger": 0,
156                           "maxInteger": 4294967295},
157                   "value": {"type": "uuid",
158                             "refTable": "Queue"},
159                   "min": 0, "max": "unlimited"}},
160        "other_config": {
161          "type": {"key": "string", "value": "string", 
162                   "min": 0, "max": "unlimited"}},
163        "external_ids": {
164          "type": {"key": "string", "value": "string",
165                   "min": 0, "max": "unlimited"}}}},
166    "Queue": {
167      "columns": {
168        "other_config": {
169          "type": {"key": "string", "value": "string", 
170                   "min": 0, "max": "unlimited"}},
171        "external_ids": {
172          "type": {"key": "string", "value": "string",
173                   "min": 0, "max": "unlimited"}}}},
174    "Mirror": {
175      "columns": {
176        "name": {
177          "type": "string"},
178        "select_all": {
179          "type": "boolean"
180        },
181        "select_src_port": {
182          "type": {"key": {"type": "uuid",
183                           "refTable": "Port",
184                           "refType": "weak"},
185                    "min": 0, "max": "unlimited"}},
186        "select_dst_port": {
187          "type": {"key": {"type": "uuid",
188                           "refTable": "Port",
189                           "refType": "weak"},
190                    "min": 0, "max": "unlimited"}},
191        "select_vlan": {
192          "type": {"key": {"type": "integer",
193                           "minInteger": 0,
194                           "maxInteger": 4095},
195                   "min": 0, "max": 4096}},
196        "output_port": {
197          "type": {"key": {"type": "uuid",
198                           "refTable": "Port",
199                           "refType": "weak"},
200                   "min": 0, "max": 1}},
201        "output_vlan": {
202          "type": {"key": {"type": "integer",
203                           "minInteger": 1,
204                           "maxInteger": 4095},
205                   "min": 0, "max": 1}},
206        "external_ids": {
207          "type": {"key": "string", "value": "string",
208                   "min": 0, "max": "unlimited"}}}},
209    "NetFlow": {
210      "columns": {
211        "targets": {
212          "type": {"key": {"type": "string"},
213                   "min": 1, "max": "unlimited"}},
214        "engine_type": {
215          "type": {"key": {"type": "integer",
216                           "minInteger": 0,
217                           "maxInteger": 255},
218                   "min": 0, "max": 1}},
219        "engine_id": {
220          "type": {"key": {"type": "integer",
221                           "minInteger": 0,
222                           "maxInteger": 255},
223                   "min": 0, "max": 1}},
224        "add_id_to_interface": {
225          "type": "boolean"},
226        "active_timeout": {
227          "type": {"key": {"type": "integer",
228                           "minInteger": -1}}},
229        "external_ids": {
230          "type": {"key": "string", "value": "string",
231                   "min": 0, "max": "unlimited"}}}},
232    "sFlow": {
233      "columns": {
234        "targets": {
235          "type": {"key": "string", "min": 1, "max": "unlimited"}},
236        "sampling": {
237          "type": {"key": "integer", "min": 0, "max": 1}},
238        "polling": {
239          "type": {"key": "integer", "min": 0, "max": 1}},
240        "header": {
241          "type": {"key": "integer", "min": 0, "max": 1}},
242        "agent": {
243          "type": {"key": "string", "min": 0, "max": 1}},
244        "external_ids": {
245          "type": {"key": "string", "value": "string",
246                   "min": 0, "max": "unlimited"}}}},
247    "Controller": {
248      "columns": {
249        "target": {
250          "type": "string"},
251        "max_backoff": {
252          "type": {"key": {"type": "integer",
253                           "minInteger": 1000},
254                   "min": 0, "max": 1}},
255        "inactivity_probe": {
256          "type": {"key": "integer", "min": 0, "max": 1}},
257        "discover_accept_regex": {
258          "type": {"key": "string", "min": 0, "max": 1}},
259        "discover_update_resolv_conf": {
260          "type": {"key": "boolean", "min": 0, "max": 1}},
261        "connection_mode": {
262          "type": {"key": {"type": "string",
263                   "enum": ["set", ["in-band", "out-of-band"]]},
264                   "min": 0, "max": 1}},
265        "local_ip": {
266          "type": {"key": {"type": "string"},
267                   "min": 0, "max": 1}},
268        "local_netmask": {
269          "type": {"key": {"type": "string"},
270                   "min": 0, "max": 1}},
271        "local_gateway": {
272          "type": {"key": {"type": "string"},
273                   "min": 0, "max": 1}},
274        "controller_rate_limit": {
275          "type": {"key": {"type": "integer",
276                           "minInteger": 100},
277                   "min": 0, "max": 1}},
278        "controller_burst_limit": {
279          "type": {"key": {"type": "integer", 
280                           "minInteger": 25},
281                   "min": 0, "max": 1}},
282        "external_ids": {
283          "type": {"key": "string", "value": "string",
284                   "min": 0, "max": "unlimited"}}}},
285    "SSL": {
286      "columns": {
287        "private_key": {
288          "type": "string"},
289        "certificate": {
290          "type": "string"},
291        "ca_cert": {
292          "type": "string"},
293        "bootstrap_ca_cert": {
294          "type": "boolean"},
295        "external_ids": {
296          "type": {"key": "string", "value": "string",
297                   "min": 0, "max": "unlimited"}}},
298      "maxRows": 1}}}