vswitch: Make unique "name" columns immutable, to simplify transactions.
authorBen Pfaff <blp@nicira.com>
Fri, 22 Oct 2010 17:19:13 +0000 (10:19 -0700)
committerBen Pfaff <blp@nicira.com>
Fri, 22 Oct 2010 21:48:08 +0000 (14:48 -0700)
OVSDB has transactions but not locking, so a transaction that must
maintain an invariant must check that the starting state is what it
expects.  For example, to add a bridge a client must verify that the new
bridge's name does not conflict with any existing bridge's name, given
that the set of bridges might have changed.  One way to do that is for
the client to verify that that the set of bridges is the same and that none
of the bridges has been renamed to the new bridge's name.  By making
bridge names immutable, the latter part of the check can be omitted.

Mirror names are not required to be unique so this commit does not make
them immutable.

CC: Jeremy Stribling <strib@nicira.com>
vswitchd/vswitch.ovsschema

index d872fdc516ac0d2c0a20971a4e2dea9ba7ec0c63..0be1b176be7c2874664884494c9a62f522afda5b 100644 (file)
@@ -36,7 +36,8 @@
    "Bridge": {
      "columns": {
        "name": {
-         "type": "string"},
+         "type": "string",
+         "mutable": false},
        "datapath_type": {
          "type": "string"},
        "datapath_id": {
@@ -78,7 +79,8 @@
    "Port": {
      "columns": {
        "name": {
-         "type": "string"},
+         "type": "string",
+         "mutable": false},
        "interfaces": {
          "type": {"key": {"type": "uuid",
                           "refTable": "Interface"},
    "Interface": {
      "columns": {
        "name": {
-         "type": "string"},
+         "type": "string",
+         "mutable": false},
        "type": {
          "type": "string"},
        "options": {