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)
committerJustin Pettit <jpettit@nicira.com>
Tue, 26 Oct 2010 06:44:22 +0000 (23:44 -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 c8a4963..0c2aaf4 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": {