vswitch: Make unique "name" columns immutable, to simplify transactions.
[sliver-openvswitch.git] / vswitchd / vswitch.ovsschema
index f0217cd..0c2aaf4 100644 (file)
@@ -6,10 +6,6 @@
          "type": {"key": {"type": "uuid",
                           "refTable": "Bridge"},
                   "min": 0, "max": "unlimited"}},
-       "controller": {
-         "type": {"key": {"type": "uuid",
-                          "refTable": "Controller"},
-                   "min": 0, "max": 1}},
        "managers": {
          "type": {"key": "string", "min": 0, "max": "unlimited"}},
        "ssl": {
        "next_cfg": {
          "type": "integer"},
        "cur_cfg": {
-         "type": "integer"}}},
+         "type": "integer"},
+       "capabilities": {
+         "type": {"key": "string",
+                  "value": {"type": "uuid",
+                            "refTable": "Capability"},
+                  "min": 0, "max": "unlimited"}},
+       "statistics": {
+         "type": {"key": "string", "value": "integer", "min": 0, "max": "unlimited"},
+         "ephemeral": true}},
+     "maxRows": 1},
+   "Capability": {
+     "columns": {
+       "details": {
+         "type": {"key": "string", "value": "string",
+                  "min": 0, "max": "unlimited"}}}},
    "Bridge": {
      "columns": {
        "name": {
-         "type": "string"},
+         "type": "string",
+         "mutable": false},
        "datapath_type": {
          "type": "string"},
        "datapath_id": {
        "controller": {
          "type": {"key": {"type": "uuid",
                           "refTable": "Controller"},
+                  "min": 0, "max": "unlimited"}},
+       "fail_mode": {
+         "type": {"key": {"type": "string",
+                          "enum": ["set", ["standalone", "secure"]]},
                   "min": 0, "max": 1}},
        "other_config": {
          "type": {"key": "string", "value": "string", "min": 0, "max": "unlimited"}},
@@ -64,7 +79,8 @@
    "Port": {
      "columns": {
        "name": {
-         "type": "string"},
+         "type": "string",
+         "mutable": false},
        "interfaces": {
          "type": {"key": {"type": "uuid",
                           "refTable": "Interface"},
                           "minInteger": 0,
                           "maxInteger": 4095},
                   "min": 0, "max": 1}},
+       "qos": {
+         "type": {"key": {"type": "uuid",
+                          "refTable": "QoS"},
+                  "min": 0, "max": 1}},
        "mac": {
          "type": {"key": {"type": "string"},
                   "min": 0, "max": 1}},
    "Interface": {
      "columns": {
        "name": {
-         "type": "string"},
+         "type": "string",
+         "mutable": false},
        "type": {
          "type": "string"},
        "options": {
          "type": {"key": "string", "value": "string", "min": 0, "max": "unlimited"}},
        "ofport": {
          "type": {"key": "integer", "min": 0, "max": 1},
-         "ephemeral": true}}},
+         "ephemeral": true},
+       "statistics": {
+         "type": {"key": "string", "value": "integer", "min": 0, "max": "unlimited"},
+         "ephemeral": true},
+       "status": {
+         "type": {"key": "string", "value": "string", "min": 0, "max": "unlimited"},
+         "ephemeral": true},
+       "external_ids": {
+         "type": {"key": "string", "value": "string",
+                  "min": 0, "max": "unlimited"}}}},
+   "QoS": {
+     "columns": {
+       "type": {
+         "type": "string"},
+       "queues": {
+         "type": {"key": {"type": "integer",
+                          "minInteger": 0,
+                          "maxInteger": 4294967295},
+                  "value": {"type": "uuid",
+                            "refTable": "Queue"},
+                  "min": 0, "max": "unlimited"}},
+       "other_config": {
+         "type": {"key": "string", "value": "string", 
+                  "min": 0, "max": "unlimited"}},
+       "external_ids": {
+         "type": {"key": "string", "value": "string",
+                  "min": 0, "max": "unlimited"}}}},
+   "Queue": {
+     "columns": {
+       "other_config": {
+         "type": {"key": "string", "value": "string", 
+                  "min": 0, "max": "unlimited"}},
+       "external_ids": {
+         "type": {"key": "string", "value": "string",
+                  "min": 0, "max": "unlimited"}}}},
    "Mirror": {
      "columns": {
        "name": {
          "type": "string"},
+       "select_all": {
+         "type": "boolean"
+       },
        "select_src_port": {
          "type": {"key": {"type": "uuid",
-                          "refTable": "Port"},
+                          "refTable": "Port",
+                          "refType": "weak"},
                    "min": 0, "max": "unlimited"}},
        "select_dst_port": {
          "type": {"key": {"type": "uuid",
-                          "refTable": "Port"}, "min": 0, "max": "unlimited"}},
+                          "refTable": "Port",
+                          "refType": "weak"},
+                   "min": 0, "max": "unlimited"}},
        "select_vlan": {
          "type": {"key": {"type": "integer",
                           "minInteger": 0,
                   "min": 0, "max": 4096}},
        "output_port": {
          "type": {"key": {"type": "uuid",
-                          "refTable": "Port"}, "min": 0, "max": 1}},
+                          "refTable": "Port",
+                          "refType": "weak"},
+                  "min": 0, "max": 1}},
        "output_vlan": {
          "type": {"key": {"type": "integer",
                           "minInteger": 1,
                           "maxInteger": 4095},
-                  "min": 0, "max": 1}}}},
+                  "min": 0, "max": 1}},
+       "external_ids": {
+         "type": {"key": "string", "value": "string",
+                  "min": 0, "max": "unlimited"}}}},
    "NetFlow": {
      "columns": {
        "targets": {
          "type": "boolean"},
        "active_timeout": {
          "type": {"key": {"type": "integer",
-                          "minInteger": -1}}}}},
+                          "minInteger": -1}}},
+       "external_ids": {
+         "type": {"key": "string", "value": "string",
+                  "min": 0, "max": "unlimited"}}}},
    "sFlow": {
      "columns": {
        "targets": {
        "header": {
          "type": {"key": "integer", "min": 0, "max": 1}},
        "agent": {
-         "type": {"key": "string", "min": 0, "max": 1}}}},
+         "type": {"key": "string", "min": 0, "max": 1}},
+       "external_ids": {
+         "type": {"key": "string", "value": "string",
+                  "min": 0, "max": "unlimited"}}}},
    "Controller": {
      "columns": {
        "target": {
                   "min": 0, "max": 1}},
        "inactivity_probe": {
          "type": {"key": "integer", "min": 0, "max": 1}},
-       "fail_mode": {
-         "type": {"key": {"type": "string",
-                          "enum": ["set", ["standalone", "secure"]]},
-                  "min": 0, "max": 1}},
        "discover_accept_regex": {
          "type": {"key": "string", "min": 0, "max": 1}},
        "discover_update_resolv_conf": {
        "controller_burst_limit": {
          "type": {"key": {"type": "integer", 
                           "minInteger": 25},
-                  "min": 0, "max": 1}}}},
+                  "min": 0, "max": 1}},
+       "external_ids": {
+         "type": {"key": "string", "value": "string",
+                  "min": 0, "max": "unlimited"}}}},
    "SSL": {
      "columns": {
        "private_key": {
        "ca_cert": {
          "type": "string"},
        "bootstrap_ca_cert": {
-         "type": "boolean"}}}}}
+         "type": "boolean"},
+       "external_ids": {
+         "type": {"key": "string", "value": "string",
+                  "min": 0, "max": "unlimited"}}},
+     "maxRows": 1}}}