components/openstack/neutron/patches/11-mysql_cluster_support.patch
author Octave Orgeron <octave.orgeron@oracle.com>
Fri, 29 Jul 2016 14:41:14 -0600
changeset 6530 c9012715dd1d
child 6635 32a659a16875
permissions -rw-r--r--
22725754 Keystone needs to support MySQL Cluster 22725850 Cinder needs to support MySQL Cluster 22725863 Glance needs to support MySQL Cluster 22725887 Heat needs to support MySQL Cluster 22726240 Ironic needs to support MySQL Cluster 22726251 Neutron needs to support MySQL Cluster 22726259 Nova needs to support MySQL Cluster 23033470 oslo.db needs a database option to support MySQL Cluster
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6530
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
     1
This patchset is for bug:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
     2
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
     3
22726251 - Neutron needs to support MySQL Cluster
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
     4
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
     5
This fixes the following aspects of Neutron:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
     6
1. Implementation of an oslo.db configuration parameter to specify the MySQL
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
     7
   storage engine (mysql_storage_engine).
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
     8
2. Replacement of hardcoded SQL statements that set the engine to "InnoDB"
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
     9
   to the above configuration value.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    10
3. Logic to handle SQL differences between MySQL InnoDB and MySQL Cluster (NDB).
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    11
   This includes column lengths, constraints, foreign keys, and indexes.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    12
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    13
This has not been committed upstream, but has been filed in launchpad:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    14
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    15
https://bugs.launchpad.net/neutron/+bug/1564110
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    16
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    17
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    18
--- neutron-2015.1.2/neutron/db/model_base.py.orig	2016-07-29 13:15:07.909806102 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    19
+++ neutron-2015.1.2/neutron/db/model_base.py	2016-07-29 13:27:41.817140969 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    20
@@ -13,15 +13,24 @@
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    21
 # See the License for the specific language governing permissions and
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    22
 # limitations under the License.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    23
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    24
+from oslo_config import cfg
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    25
 from oslo_db.sqlalchemy import models
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    26
 from sqlalchemy.ext import declarative
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    27
 from sqlalchemy import orm
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    28
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    29
+# Attempt to determine the context that this module is being used.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    30
+# If via neutron-db-manage and cli.py, import global variable. If not,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    31
+# use oslo_config.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    32
+try:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    33
+     from neutron.db.migration.cli import mysql_storage_eng_type
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    34
+except ImportError:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    35
+     CONF = cfg.CONF
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    36
+     mysql_storage_eng_type = CONF.database.mysql_storage_engine
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    37
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    38
 class NeutronBase(models.ModelBase):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    39
     """Base class for Neutron Models."""
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    40
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    41
-    __table_args__ = {'mysql_engine': 'InnoDB'}
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    42
+    __table_args__ = {'mysql_engine': mysql_storage_eng_type}
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    43
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    44
     def __iter__(self):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    45
         self._i = iter(orm.object_mapper(self).columns)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    46
--- neutron-2015.1.2/neutron/db/api.py.orig	2016-07-29 13:15:14.380329905 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    47
+++ neutron-2015.1.2/neutron/db/api.py	2016-07-28 14:15:31.186601900 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    48
@@ -19,7 +19,6 @@ from oslo_config import cfg
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    49
 from oslo_db.sqlalchemy import session
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    50
 from sqlalchemy import exc
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    51
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    52
-
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    53
 _FACADE = None
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    54
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    55
 MAX_RETRIES = 10
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    56
@@ -50,10 +49,30 @@ def get_session(autocommit=True, expire_
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    57
 @contextlib.contextmanager
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    58
 def autonested_transaction(sess):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    59
     """This is a convenience method to not bother with 'nested' parameter."""
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    60
+    # Attempt to determine the context that this module is being used.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    61
+    # If via neutron-db-manage and cli.py, import global variable. If not,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    62
+    # use oslo_config.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    63
     try:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    64
-        session_context = sess.begin_nested()
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    65
-    except exc.InvalidRequestError:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    66
-        session_context = sess.begin(subtransactions=True)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    67
-    finally:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    68
-        with session_context as tx:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    69
-            yield tx
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    70
+        from neutron.db.migration.cli import mysql_storage_eng_type
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    71
+    except ImportError:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    72
+        CONF = cfg.CONF
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    73
+        mysql_storage_eng_type = CONF.database.mysql_storage_engine
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    74
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    75
+    # MySQL Cluster NDB does not support nested transactions
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    76
+    # TODO (oorgeron) Look into making this workable.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    77
+    if mysql_storage_eng_type == "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    78
+        try:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    79
+            session_context = sess.begin(subtransactions=True, nested=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    80
+        except exc.InvalidRequestError:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    81
+            session_context = sess.begin(subtransactions=False, nested=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    82
+        finally:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    83
+            with session_context as tx:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    84
+                yield tx
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    85
+    else:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    86
+        try:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    87
+            session_context = sess.begin_nested()
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    88
+        except exc.InvalidRequestError:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    89
+            session_context = sess.begin(subtransactions=True)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    90
+        finally:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    91
+            with session_context as tx:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    92
+                yield tx
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    93
--- neutron-2015.1.2/neutron/db/db_base_plugin_v2.py.orig	2016-07-29 13:15:20.388338380 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    94
+++ neutron-2015.1.2/neutron/db/db_base_plugin_v2.py	2016-07-28 14:15:31.187095505 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    95
@@ -46,6 +46,15 @@ from neutron.plugins.common import const
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    96
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    97
 LOG = logging.getLogger(__name__)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    98
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
    99
+# Attempt to determine the context that this module is being used.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   100
+# If via neutron-db-manage and cli.py, import global variable. If not,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   101
+# use oslo_config.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   102
+try:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   103
+     from neutron.db.migration.cli import mysql_storage_eng_type
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   104
+except ImportError:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   105
+     CONF = cfg.CONF
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   106
+     mysql_storage_eng_type = CONF.database.mysql_storage_engine
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   107
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   108
 # Ports with the following 'device_owner' values will not prevent
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   109
 # network deletion.  If delete_network() finds that all ports on a
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   110
 # network have these owners, it will explicitly delete each port
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   111
@@ -1443,16 +1452,26 @@ class NeutronDbPluginV2(neutron_plugin_b
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   112
                                                    port_id=port['id'],
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   113
                                                    ip_address=ip_address,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   114
                                                    subnet_id=subnet['id'])
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   115
-                try:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   116
-                    # Do the insertion of each IP allocation entry within
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   117
-                    # the context of a nested transaction, so that the entry
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   118
-                    # is rolled back independently of other entries whenever
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   119
-                    # the corresponding port has been deleted.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   120
-                    with context.session.begin_nested():
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   121
-                        context.session.add(allocated)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   122
-                except db_exc.DBReferenceError:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   123
-                    LOG.debug("Port %s was deleted while updating it with an "
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   124
-                              "IPv6 auto-address. Ignoring.", port['id'])
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   125
+                # MySQL Cluster NDB does not support nested transactions
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   126
+                # TODO (oorgeron) Look into making this workable.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   127
+                if mysql_storage_eng_type == "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   128
+                    try:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   129
+                        with context.session.begin(subtransactions=True):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   130
+                            context.session.add(allocated)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   131
+                    except db_exc.DBReferenceError:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   132
+                        LOG.debug("Port %s was deleted while updating it with an "
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   133
+                                  "IPv6 auto-address. Ignoring.", port['id'])
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   134
+                else:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   135
+                    try:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   136
+                        # Do the insertion of each IP allocation entry within
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   137
+                        # the context of a nested transaction, so that the entry
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   138
+                        # is rolled back independently of other entries whenever
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   139
+                        # the corresponding port has been deleted.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   140
+                        with context.session.begin_nested():
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   141
+                            context.session.add(allocated)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   142
+                    except db_exc.DBReferenceError:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   143
+                        LOG.debug("Port %s was deleted while updating it with an "
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   144
+                                  "IPv6 auto-address. Ignoring.", port['id'])
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   145
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   146
     def _update_subnet_dns_nameservers(self, context, id, s):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   147
         old_dns_list = self._get_dns_by_subnet(context, id)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   148
@@ -1797,8 +1816,16 @@ class NeutronDbPluginV2(neutron_plugin_b
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   149
                 # within a transaction, so that it can be rolled back to the
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   150
                 # point before its failure while maintaining the enclosing
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   151
                 # transaction
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   152
-                return self._create_port_with_mac(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   153
-                    context, network_id, port_data, mac, nested=True)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   154
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   155
+                # MySQL Cluster NDB does not support nested transactions
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   156
+                # TODO (oorgeron) Look into making this workable.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   157
+                if mysql_storage_eng_type == "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   158
+                    return self._create_port_with_mac(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   159
+                        context, network_id, port_data, mac, nested=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   160
+                else:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   161
+                    return self._create_port_with_mac(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   162
+                        context, network_id, port_data, mac, nested=True)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   163
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   164
             except n_exc.MacAddressInUse:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   165
                 LOG.debug('Generated mac %(mac_address)s exists on '
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   166
                           'network %(network_id)s',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   167
--- neutron-2015.1.2/neutron/db/migration/cli.py.orig	2016-07-29 13:15:27.041205822 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   168
+++ neutron-2015.1.2/neutron/db/migration/cli.py	2016-07-28 14:15:31.187312338 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   169
@@ -59,6 +59,9 @@ _db_opts = [
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   170
     cfg.StrOpt('engine',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   171
                default='',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   172
                help=_('Database engine')),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   173
+    cfg.StrOpt('mysql_storage_engine',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   174
+               default='',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   175
+               help=_('MySQL Storage Engine')),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   176
 ]
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   177
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   178
 CONF = cfg.ConfigOpts()
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   179
@@ -234,5 +237,11 @@ def main():
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   180
     config = get_alembic_config()
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   181
     config.neutron_config = CONF
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   182
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   183
+    # Make global variable available for modules that will be called
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   184
+    # by neutron-db-manage. This will prevent namespace collisions
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   185
+    # between oslo_config and albemic_config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   186
+    global mysql_storage_eng_type
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   187
+    mysql_storage_eng_type = CONF.database.mysql_storage_engine
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   188
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   189
     #TODO(gongysh) enable logging
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   190
     CONF.command.func(config, CONF.command.name)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   191
--- neutron-2015.1.2/neutron/db/migration/models/frozen.py.orig	2016-07-29 13:15:33.940472370 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   192
+++ neutron-2015.1.2/neutron/db/migration/models/frozen.py	2016-07-29 13:29:33.819709706 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   193
@@ -22,7 +22,8 @@ Based on this comparison database can be
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   194
 Current HEAD commit is 59da928e945ec58836d34fd561d30a8a446e2728
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   195
 """
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   196
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   197
-
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   198
+from alembic import context
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   199
+from oslo_config import cfg
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   200
 import sqlalchemy as sa
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   201
 from sqlalchemy.ext import declarative
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   202
 from sqlalchemy.ext.orderinglist import ordering_list
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   203
@@ -32,6 +33,8 @@ from sqlalchemy import schema
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   204
 from neutron.db import model_base
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   205
 from neutron.openstack.common import uuidutils
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   206
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   207
+config = context.config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   208
+CONF = config.neutron_config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   209
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   210
 # Dictionary of all tables that was renamed:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   211
 # {new_table_name: old_table_name}
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   212
@@ -77,6 +80,10 @@ DHCPV6_STATELESS = 'dhcpv6-stateless'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   213
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   214
 BASEV2 = declarative.declarative_base(cls=model_base.NeutronBaseV2)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   215
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   216
+if CONF.database.mysql_storage_engine == "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   217
+   db_string_length = 128
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   218
+else:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   219
+   db_string_length = 256
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   220
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   221
 #neutron/db/models_v2.py
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   222
 class HasTenant(object):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   223
@@ -218,17 +225,30 @@ class Agent(BASEV2, HasId):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   224
                             name='uniq_agents0agent_type0host'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   225
     )
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   226
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   227
-    agent_type = sa.Column(sa.String(255), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   228
-    binary = sa.Column(sa.String(255), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   229
-    topic = sa.Column(sa.String(255), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   230
-    host = sa.Column(sa.String(255), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   231
-    admin_state_up = sa.Column(sa.Boolean, default=True,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   232
-                               server_default=sa.sql.true(), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   233
-    created_at = sa.Column(sa.DateTime, nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   234
-    started_at = sa.Column(sa.DateTime, nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   235
-    heartbeat_timestamp = sa.Column(sa.DateTime, nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   236
-    description = sa.Column(sa.String(255))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   237
-    configurations = sa.Column(sa.String(4095), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   238
+    if CONF.database.mysql_storage_engine == "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   239
+        agent_type = sa.Column(sa.String(db_string_length), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   240
+        binary = sa.Column(sa.String(db_string_length), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   241
+        topic = sa.Column(sa.String(db_string_length), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   242
+        host = sa.Column(sa.String(db_string_length), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   243
+        admin_state_up = sa.Column(sa.Boolean, default=True,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   244
+                                   server_default=sa.sql.true(), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   245
+        created_at = sa.Column(sa.DateTime, nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   246
+        started_at = sa.Column(sa.DateTime, nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   247
+        heartbeat_timestamp = sa.Column(sa.DateTime, nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   248
+        description = sa.Column(sa.String(db_string_length))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   249
+        configurations = sa.Column(sa.Text(4095), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   250
+    else:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   251
+        agent_type = sa.Column(sa.String(db_string_length), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   252
+        binary = sa.Column(sa.String(db_string_length), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   253
+        topic = sa.Column(sa.String(db_string_length), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   254
+        host = sa.Column(sa.String(db_string_length), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   255
+        admin_state_up = sa.Column(sa.Boolean, default=True,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   256
+                                   server_default=sa.sql.true(), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   257
+        created_at = sa.Column(sa.DateTime, nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   258
+        started_at = sa.Column(sa.DateTime, nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   259
+        heartbeat_timestamp = sa.Column(sa.DateTime, nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   260
+        description = sa.Column(sa.String(db_string_length))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   261
+        configurations = sa.Column(sa.String(4095), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   262
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   263
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   264
 #neutron/db/agentschedulers_db.py
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   265
@@ -431,10 +451,15 @@ class Vip(BASEV2, HasId, HasTenant, HasS
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   266
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   267
 #neutron/db/loadbalancer/loadbalancer_db.py
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   268
 class Member(BASEV2, HasId, HasTenant, HasStatusDescription):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   269
-    __table_args__ = (
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   270
-        sa.schema.UniqueConstraint('pool_id', 'address', 'protocol_port',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   271
-                                   name='uniq_member0pool_id0address0port'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   272
-    )
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   273
+    
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   274
+    # MySQL Cluster NDB does not support this constraint.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   275
+    # TODO (oorgeron) Look into making this workable.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   276
+    if CONF.database.mysql_storage_engine != "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   277
+        __table_args__ = (
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   278
+            sa.schema.UniqueConstraint('pool_id', 'address', 'protocol_port',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   279
+                                       name='uniq_member0pool_id0address0port'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   280
+        )
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   281
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   282
     pool_id = sa.Column(sa.String(36), sa.ForeignKey("pools.id"),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   283
                         nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   284
     address = sa.Column(sa.String(64), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   285
@@ -1229,8 +1254,15 @@ class PortBinding(BASEV2):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   286
     profile = sa.Column(sa.String(BINDING_PROFILE_LEN), nullable=False,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   287
                         default='', server_default='')
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   288
     vif_type = sa.Column(sa.String(64), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   289
-    vif_details = sa.Column(sa.String(4095), nullable=False, default='',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   290
+    if CONF.database.mysql_storage_engine == "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   291
+        vif_details = sa.Column(sa.Text(4095), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   292
+        profile = sa.Column(sa.Text(length=4095),nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   293
+    else:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   294
+        vif_details = sa.Column(sa.String(4095), nullable=False,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   295
+                                server_default='')
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   296
+        profile = sa.Column(sa.String(length=4095),nullable=False,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   297
                             server_default='')
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   298
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   299
     driver = sa.Column(sa.String(64))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   300
     segment = sa.Column(sa.String(36),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   301
                         sa.ForeignKey('ml2_network_segments.id',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   302
@@ -1827,10 +1859,17 @@ class PoolPort(BASEV2):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   303
 class IdentifierMap(BASEV2, HasTenant):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   304
     __tablename__ = 'cisco_csr_identifier_map'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   305
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   306
-    ipsec_site_conn_id = sa.Column(sa.String(64),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   307
-                                   sa.ForeignKey('ipsec_site_connections.id',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   308
-                                                 ondelete="CASCADE"),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   309
-                                   primary_key=True)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   310
+    if CONF.database.mysql_storage_engine == "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   311
+        ipsec_site_conn_id = sa.Column(sa.String(36),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   312
+                                       sa.ForeignKey('ipsec_site_connections.id',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   313
+                                                     ondelete="CASCADE"),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   314
+                                       primary_key=True)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   315
+    else:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   316
+        ipsec_site_conn_id = sa.Column(sa.String(64),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   317
+                                       sa.ForeignKey('ipsec_site_connections.id',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   318
+                                                     ondelete="CASCADE"),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   319
+                                       primary_key=True)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   320
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   321
     csr_tunnel_id = sa.Column(sa.Integer, nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   322
     csr_ike_policy_id = sa.Column(sa.Integer, nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   323
     csr_ipsec_policy_id = sa.Column(sa.Integer, nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   324
--- neutron-2015.1.2/neutron/db/migration/alembic_migrations/agent_init_ops.py.orig	2016-07-29 13:15:57.799898995 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   325
+++ neutron-2015.1.2/neutron/db/migration/alembic_migrations/agent_init_ops.py	2016-07-29 13:30:30.011137004 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   326
@@ -17,26 +17,49 @@
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   327
 # This module only manages the 'agents' table. Binding tables are created
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   328
 # in the modules for relevant resources
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   329
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   330
-
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   331
+from alembic import context
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   332
 from alembic import op
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   333
 import sqlalchemy as sa
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   334
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   335
+config = context.config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   336
+CONF = config.neutron_config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   337
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   338
+if CONF.database.mysql_storage_engine == "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   339
+   db_string_length = 128
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   340
+else:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   341
+   db_string_length = 256
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   342
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   343
 def upgrade():
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   344
     bind = op.get_bind()
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   345
     insp = sa.engine.reflection.Inspector.from_engine(bind)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   346
     if 'agents' not in insp.get_table_names():
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   347
-        op.create_table(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   348
-        'agents',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   349
-        sa.Column('id', sa.String(length=36), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   350
-        sa.Column('agent_type', sa.String(length=255), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   351
-        sa.Column('binary', sa.String(length=255), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   352
-        sa.Column('topic', sa.String(length=255), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   353
-        sa.Column('host', sa.String(length=255), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   354
-        sa.Column('admin_state_up', sa.Boolean(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   355
-        sa.Column('created_at', sa.DateTime(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   356
-        sa.Column('started_at', sa.DateTime(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   357
-        sa.Column('heartbeat_timestamp', sa.DateTime(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   358
-        sa.Column('description', sa.String(length=255), nullable=True),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   359
-        sa.Column('configurations', sa.String(length=4095), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   360
-        sa.PrimaryKeyConstraint('id'))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   361
+        if CONF.database.mysql_storage_engine == "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   362
+            op.create_table(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   363
+                'agents',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   364
+                sa.Column('id', sa.String(length=36), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   365
+                sa.Column('agent_type', sa.String(length=db_string_length), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   366
+                sa.Column('binary', sa.String(length=db_string_length), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   367
+                sa.Column('topic', sa.String(length=db_string_length), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   368
+                sa.Column('host', sa.String(length=db_string_length), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   369
+                sa.Column('admin_state_up', sa.Boolean(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   370
+                sa.Column('created_at', sa.DateTime(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   371
+                sa.Column('started_at', sa.DateTime(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   372
+                sa.Column('heartbeat_timestamp', sa.DateTime(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   373
+                sa.Column('description', sa.String(length=db_string_length), nullable=True),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   374
+                sa.Column('configurations', sa.Text(length=4095), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   375
+                sa.PrimaryKeyConstraint('id'))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   376
+        else:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   377
+            op.create_table(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   378
+                'agents',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   379
+                sa.Column('id', sa.String(length=36), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   380
+                sa.Column('agent_type', sa.String(length=db_string_length), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   381
+                sa.Column('binary', sa.String(length=db_string_length), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   382
+                sa.Column('topic', sa.String(length=db_string_length), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   383
+                sa.Column('host', sa.String(length=db_string_length), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   384
+                sa.Column('admin_state_up', sa.Boolean(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   385
+                sa.Column('created_at', sa.DateTime(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   386
+                sa.Column('started_at', sa.DateTime(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   387
+                sa.Column('heartbeat_timestamp', sa.DateTime(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   388
+                sa.Column('description', sa.String(length=db_string_length), nullable=True),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   389
+                sa.Column('configurations', sa.String(length=4095), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   390
+                sa.PrimaryKeyConstraint('id'))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   391
--- neutron-2015.1.2/neutron/db/migration/alembic_migrations/heal_script.py.orig	2016-07-29 13:16:06.570595984 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   392
+++ neutron-2015.1.2/neutron/db/migration/alembic_migrations/heal_script.py	2016-07-29 13:31:36.373228770 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   393
@@ -19,6 +19,7 @@ import alembic
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   394
 from alembic import autogenerate as autogen
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   395
 from alembic import context
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   396
 from alembic import op
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   397
+from oslo_config import cfg
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   398
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   399
 import sqlalchemy
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   400
 from sqlalchemy import schema as sa_schema
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   401
@@ -29,6 +30,9 @@ from sqlalchemy import types
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   402
 from neutron.db.migration.models import frozen as frozen_models
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   403
 from neutron.i18n import _LI, _LW
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   404
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   405
+config = context.config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   406
+CONF = config.neutron_config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   407
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   408
 LOG = logging.getLogger(__name__)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   409
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   410
 METHODS = {}
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   411
@@ -70,7 +74,10 @@ def heal():
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   412
         'compare_server_default': _compare_server_default,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   413
     }
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   414
     mc = alembic.migration.MigrationContext.configure(op.get_bind(), opts=opts)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   415
-    set_storage_engine(op.get_bind(), "InnoDB")
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   416
+    if CONF.database.mysql_storage_engine == "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   417
+        set_storage_engine(op.get_bind(), 'NDBCLUSTER')
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   418
+    else:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   419
+        set_storage_engine(op.get_bind(), 'InnoDB')
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   420
     diff = autogen.compare_metadata(mc, models_metadata)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   421
     for el in diff:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   422
         execute_alembic_command(el)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   423
@@ -286,4 +293,6 @@ def set_storage_engine(bind, engine):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   424
     if bind.dialect.name == 'mysql':
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   425
         for table in insp.get_table_names():
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   426
             if insp.get_table_options(table)['mysql_engine'] != engine:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   427
-                op.execute("ALTER TABLE %s ENGINE=%s" % (table, engine))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   428
+                op.execute("ALTER TABLE %(db_table)s Engine=%(mysql_storage_engine)s"
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   429
+                           % dict(db_table=table,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   430
+                           mysql_storage_engine=CONF.database.mysql_storage_engine))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   431
--- neutron-2015.1.2/neutron/db/migration/alembic_migrations/versions/157a5d299379_ml2_binding_profile.py.orig	2016-07-29 13:16:13.971296279 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   432
+++ neutron-2015.1.2/neutron/db/migration/alembic_migrations/versions/157a5d299379_ml2_binding_profile.py	2016-07-29 13:32:20.859598698 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   433
@@ -25,14 +25,24 @@ Create Date: 2014-02-13 23:48:25.147279
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   434
 revision = '157a5d299379'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   435
 down_revision = '50d5ba354c23'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   436
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   437
+from alembic import context
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   438
 from alembic import op
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   439
 import sqlalchemy as sa
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   440
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   441
 from neutron.db import migration
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   442
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   443
+config = context.config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   444
+CONF = config.neutron_config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   445
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   446
 def upgrade():
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   447
     if migration.schema_has_table('ml2_port_bindings'):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   448
-        op.add_column('ml2_port_bindings',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   449
-                      sa.Column('profile', sa.String(length=4095),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   450
-                                nullable=False, server_default=''))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   451
+        # MySQL Cluster (NDB) does not support rows longer than 14000.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   452
+        # This configures the profile column as TEXT to keep the row size down.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   453
+        if CONF.database.mysql_storage_engine == "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   454
+            op.add_column('ml2_port_bindings',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   455
+                          sa.Column('profile', sa.Text(length=4095),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   456
+                                    nullable=False))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   457
+        else:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   458
+            op.add_column('ml2_port_bindings',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   459
+                          sa.Column('profile', sa.String(length=4095),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   460
+                                    nullable=False, server_default=''))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   461
--- neutron-2015.1.2/neutron/db/migration/alembic_migrations/versions/50d5ba354c23_ml2_binding_vif_details.py.orig	2016-07-29 13:16:20.121107758 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   462
+++ neutron-2015.1.2/neutron/db/migration/alembic_migrations/versions/50d5ba354c23_ml2_binding_vif_details.py	2016-07-29 13:32:42.870041087 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   463
@@ -25,11 +25,14 @@ Create Date: 2014-02-11 23:21:59.577972
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   464
 revision = '50d5ba354c23'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   465
 down_revision = '27cc183af192'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   466
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   467
+from alembic import context
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   468
 from alembic import op
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   469
 import sqlalchemy as sa
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   470
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   471
 from neutron.db import migration
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   472
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   473
+config = context.config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   474
+CONF = config.neutron_config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   475
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   476
 def upgrade():
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   477
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   478
@@ -38,9 +41,17 @@ def upgrade():
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   479
         # did not create the ml2_port_bindings table.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   480
         return
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   481
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   482
-    op.add_column('ml2_port_bindings',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   483
-                  sa.Column('vif_details', sa.String(length=4095),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   484
-                            nullable=False, server_default=''))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   485
+    # MySQL Cluster (NDB) does not support rows longer than 14000.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   486
+    # This converts vif_details to TEXT to keep the row size down.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   487
+    if CONF.database.mysql_storage_engine == "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   488
+        op.add_column('ml2_port_bindings',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   489
+                      sa.Column('vif_details', sa.Text(length=4095),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   490
+                                nullable=False))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   491
+    else:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   492
+        op.add_column('ml2_port_bindings',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   493
+                      sa.Column('vif_details', sa.String(length=4095),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   494
+                                nullable=False, server_default=''))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   495
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   496
     if op.get_bind().engine.name == 'ibm_db_sa':
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   497
         op.execute(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   498
             "UPDATE ml2_port_bindings SET"
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   499
--- neutron-2015.1.2/neutron/db/migration/alembic_migrations/versions/e197124d4b9_add_unique_constrain.py.orig	2016-07-29 13:16:26.541620109 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   500
+++ neutron-2015.1.2/neutron/db/migration/alembic_migrations/versions/e197124d4b9_add_unique_constrain.py	2016-07-29 13:33:26.620005420 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   501
@@ -25,16 +25,27 @@ Create Date: 2013-11-17 10:09:37.728903
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   502
 revision = 'e197124d4b9'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   503
 down_revision = 'havana'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   504
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   505
+from alembic import context
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   506
 from alembic import op
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   507
+from oslo_config import cfg
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   508
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   509
 from neutron.db import migration
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   510
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   511
+config = context.config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   512
+CONF = config.neutron_config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   513
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   514
 CONSTRAINT_NAME = 'uniq_member0pool_id0address0port'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   515
 TABLE_NAME = 'members'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   516
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   517
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   518
 def upgrade():
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   519
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   520
+    # MySQL Cluster, a.k.a. NDB, does not support this migration step.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   521
+    # This test will skip this migration.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   522
+    # TODO (oorgeron) Look into making this workable.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   523
+    if CONF.database.mysql_storage_engine == "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   524
+        return
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   525
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   526
     if migration.schema_has_table(TABLE_NAME):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   527
         op.create_unique_constraint(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   528
             name=CONSTRAINT_NAME,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   529
--- neutron-2015.1.2/neutron/db/migration/alembic_migrations/versions/86d6d9776e2b_cisco_apic_driver_update_l3.py.orig	2016-07-29 13:16:33.520954213 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   530
+++ neutron-2015.1.2/neutron/db/migration/alembic_migrations/versions/86d6d9776e2b_cisco_apic_driver_update_l3.py	2016-07-29 13:34:14.398075900 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   531
@@ -25,19 +25,31 @@ Create Date: 2014-04-23 09:27:08.177021
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   532
 revision = '86d6d9776e2b'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   533
 down_revision = '236b90af57ab'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   534
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   535
-
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   536
+from alembic import context
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   537
 from alembic import op
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   538
+from oslo_config import cfg
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   539
 import sqlalchemy as sa
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   540
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   541
+config = context.config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   542
+CONF = config.neutron_config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   543
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   544
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   545
 def upgrade():
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   546
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   547
     op.drop_table('cisco_ml2_apic_contracts')
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   548
     op.drop_table('cisco_ml2_apic_epgs')
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   549
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   550
-    op.create_table(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   551
-        'cisco_ml2_apic_contracts',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   552
-        sa.Column('tenant_id', sa.String(length=255)),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   553
-        sa.Column('router_id', sa.String(length=64), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   554
-        sa.ForeignKeyConstraint(['router_id'], ['routers.id']),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   555
-        sa.PrimaryKeyConstraint('router_id'))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   556
+    if CONF.database.mysql_storage_engine == "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   557
+        op.create_table(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   558
+            'cisco_ml2_apic_contracts',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   559
+            sa.Column('tenant_id', sa.String(length=255)),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   560
+            sa.Column('router_id', sa.String(length=36), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   561
+            sa.ForeignKeyConstraint(['router_id'], ['routers.id']),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   562
+            sa.PrimaryKeyConstraint('router_id'))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   563
+    else:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   564
+        op.create_table(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   565
+            'cisco_ml2_apic_contracts',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   566
+            sa.Column('tenant_id', sa.String(length=255)),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   567
+            sa.Column('router_id', sa.String(length=64), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   568
+            sa.ForeignKeyConstraint(['router_id'], ['routers.id']),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   569
+            sa.PrimaryKeyConstraint('router_id'))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   570
--- neutron-2015.1.2/neutron/db/migration/alembic_migrations/versions/24c7ea5160d7_cisco_csr_vpnaas.py.orig	2016-07-29 13:16:40.087477384 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   571
+++ neutron-2015.1.2/neutron/db/migration/alembic_migrations/versions/24c7ea5160d7_cisco_csr_vpnaas.py	2016-07-29 13:34:49.694936881 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   572
@@ -23,25 +23,43 @@
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   573
 revision = '24c7ea5160d7'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   574
 down_revision = '492a106273f8'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   575
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   576
+from alembic import context
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   577
 from alembic import op
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   578
+from oslo_config import cfg
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   579
 import sqlalchemy as sa
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   580
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   581
 from neutron.db import migration
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   582
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   583
+config = context.config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   584
+CONF = config.neutron_config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   585
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   586
 def upgrade():
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   587
     if not migration.schema_has_table('ipsec_site_connections'):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   588
         # The vpnaas service plugin was not configured.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   589
         return
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   590
-    op.create_table(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   591
-        'cisco_csr_identifier_map',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   592
-        sa.Column('tenant_id', sa.String(length=255), nullable=True),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   593
-        sa.Column('ipsec_site_conn_id', sa.String(length=64),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   594
-                  primary_key=True),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   595
-        sa.Column('csr_tunnel_id', sa.Integer(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   596
-        sa.Column('csr_ike_policy_id', sa.Integer(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   597
-        sa.Column('csr_ipsec_policy_id', sa.Integer(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   598
-        sa.ForeignKeyConstraint(['ipsec_site_conn_id'],
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   599
-                                ['ipsec_site_connections.id'],
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   600
-                                ondelete='CASCADE')
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   601
-    )
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   602
+    if CONF.database.mysql_storage_engine == "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   603
+        op.create_table(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   604
+            'cisco_csr_identifier_map',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   605
+            sa.Column('tenant_id', sa.String(length=255), nullable=True),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   606
+            sa.Column('ipsec_site_conn_id', sa.String(length=36),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   607
+                      primary_key=True),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   608
+            sa.Column('csr_tunnel_id', sa.Integer(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   609
+            sa.Column('csr_ike_policy_id', sa.Integer(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   610
+            sa.Column('csr_ipsec_policy_id', sa.Integer(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   611
+            sa.ForeignKeyConstraint(['ipsec_site_conn_id'],
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   612
+                                    ['ipsec_site_connections.id'],
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   613
+                                    ondelete='CASCADE')
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   614
+        )
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   615
+    else:  
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   616
+        op.create_table(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   617
+            'cisco_csr_identifier_map',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   618
+            sa.Column('tenant_id', sa.String(length=255), nullable=True),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   619
+            sa.Column('ipsec_site_conn_id', sa.String(length=64),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   620
+                      primary_key=True),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   621
+            sa.Column('csr_tunnel_id', sa.Integer(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   622
+            sa.Column('csr_ike_policy_id', sa.Integer(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   623
+            sa.Column('csr_ipsec_policy_id', sa.Integer(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   624
+            sa.ForeignKeyConstraint(['ipsec_site_conn_id'],
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   625
+                                    ['ipsec_site_connections.id'],
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   626
+                                    ondelete='CASCADE')
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   627
+        )
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   628
--- neutron-2015.1.2/neutron/db/migration/alembic_migrations/versions/16cdf118d31d_extra_dhcp_options_ipv6_support.py.orig	2016-07-29 13:16:46.865282929 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   629
+++ neutron-2015.1.2/neutron/db/migration/alembic_migrations/versions/16cdf118d31d_extra_dhcp_options_ipv6_support.py	2016-07-29 13:35:19.078239546 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   630
@@ -25,11 +25,16 @@ Create Date: 2014-10-23 17:04:19.796731
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   631
 revision = '16cdf118d31d'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   632
 down_revision = '14be42f3d0a5'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   633
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   634
+from alembic import context
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   635
 from alembic import op
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   636
+from oslo_config import cfg
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   637
 import sqlalchemy as sa
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   638
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   639
 from neutron.db import migration
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   640
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   641
+config = context.config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   642
+CONF = config.neutron_config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   643
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   644
 CONSTRAINT_NAME_OLD = 'uidx_portid_optname'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   645
 CONSTRAINT_NAME_NEW = 'uniq_extradhcpopts0portid0optname0ipversion'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   646
 TABLE_NAME = 'extradhcpopts'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   647
@@ -47,8 +52,11 @@ def upgrade():
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   648
                   server_default='4', nullable=False))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   649
         op.execute("UPDATE extradhcpopts SET ip_version = 4")
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   650
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   651
-    op.create_unique_constraint(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   652
-        name=CONSTRAINT_NAME_NEW,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   653
-        source='extradhcpopts',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   654
-        local_cols=['port_id', 'opt_name', 'ip_version']
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   655
-    )
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   656
+    # MySQL Cluster NDB does not support this constraint.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   657
+    # TODO (oorgeron) Look into making this workable.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   658
+    if CONF.database.mysql_storage_engine != "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   659
+        op.create_unique_constraint(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   660
+            name=CONSTRAINT_NAME_NEW,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   661
+            source='extradhcpopts',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   662
+            local_cols=['port_id', 'opt_name', 'ip_version']
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   663
+        )
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   664
--- neutron-2015.1.2/neutron/db/migration/alembic_migrations/versions/327ee5fde2c7_set_innodb_engine.py.orig	2016-07-29 13:16:54.825004264 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   665
+++ neutron-2015.1.2/neutron/db/migration/alembic_migrations/versions/327ee5fde2c7_set_innodb_engine.py	2016-07-29 13:35:50.605636987 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   666
@@ -26,7 +26,12 @@ revision = '327ee5fde2c7'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   667
 down_revision = '4eba2f05c2f4'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   668
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   669
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   670
+from alembic import context
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   671
 from alembic import op
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   672
+from oslo_config import cfg
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   673
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   674
+config = context.config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   675
+CONF = config.neutron_config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   676
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   677
 # This list contain tables that could be deployed before change that converts
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   678
 # all tables to InnoDB appeared
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   679
@@ -37,4 +42,6 @@ TABLES = ['router_extra_attributes', 'dv
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   680
 def upgrade():
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   681
     if op.get_bind().dialect.name == 'mysql':
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   682
         for table in TABLES:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   683
-            op.execute("ALTER TABLE %s ENGINE=InnoDB" % table)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   684
+            op.execute("ALTER TABLE %(db_table)s ENGINE=%(mysql_storage_engine)s"
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   685
+                       % dict(db_table=table,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   686
+                       mysql_storage_engine=CONF.database.mysql_storage_engine))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   687
--- neutron-2015.1.2/neutron/db/migration/alembic_migrations/versions/20c469a5f920_add_index_for_port.py.orig	2016-07-29 13:17:00.753891761 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   688
+++ neutron-2015.1.2/neutron/db/migration/alembic_migrations/versions/20c469a5f920_add_index_for_port.py	2016-07-29 13:36:19.221516843 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   689
@@ -25,11 +25,16 @@ Create Date: 2015-04-01 04:12:49.898443
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   690
 revision = '20c469a5f920'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   691
 down_revision = '28a09af858a8'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   692
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   693
+from alembic import context
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   694
 from alembic import op
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   695
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   696
+config = context.config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   697
+CONF = config.neutron_config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   698
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   699
 def upgrade():
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   700
-    op.create_index(op.f('ix_ports_network_id_device_owner'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   701
-                    'ports', ['network_id', 'device_owner'], unique=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   702
-    op.create_index(op.f('ix_ports_network_id_mac_address'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   703
-                    'ports', ['network_id', 'mac_address'], unique=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   704
+    # MySQL Cluster (NDB) does not support these indexes via alembic
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   705
+    if CONF.database.mysql_storage_engine != "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   706
+        op.create_index(op.f('ix_ports_network_id_device_owner'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   707
+                        'ports', ['network_id', 'device_owner'], unique=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   708
+        op.create_index(op.f('ix_ports_network_id_mac_address'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   709
+                        'ports', ['network_id', 'mac_address'], unique=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   710
--- neutron-2015.1.2/neutron/db/migration/alembic_migrations/versions/2a1ee2fb59e0_add_mac_address_unique_constraint.py.orig	2016-07-29 13:17:07.106004816 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   711
+++ neutron-2015.1.2/neutron/db/migration/alembic_migrations/versions/2a1ee2fb59e0_add_mac_address_unique_constraint.py	2016-07-29 13:36:52.862356573 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   712
@@ -25,15 +25,26 @@ Create Date: 2015-01-10 11:44:27.550349
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   713
 revision = '2a1ee2fb59e0'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   714
 down_revision = '41662e32bce2'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   715
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   716
+from alembic import context
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   717
 from alembic import op
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   718
+from oslo_config import cfg
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   719
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   720
+config = context.config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   721
+CONF = config.neutron_config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   722
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   723
 TABLE_NAME = 'ports'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   724
 CONSTRAINT_NAME = 'uniq_ports0network_id0mac_address'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   725
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   726
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   727
 def upgrade():
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   728
-    op.create_unique_constraint(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   729
-        name=CONSTRAINT_NAME,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   730
-        source=TABLE_NAME,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   731
-        local_cols=['network_id', 'mac_address']
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   732
-    )
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   733
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   734
+    # MySQL Cluster NDB does not support this constraint.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   735
+    # TODO (oorgeron) Look into making this workable.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   736
+    if CONF.database.mysql_storage_engine == "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   737
+        return
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   738
+    else:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   739
+        op.create_unique_constraint(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   740
+            name=CONSTRAINT_NAME,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   741
+            source=TABLE_NAME,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   742
+            local_cols=['network_id', 'mac_address']
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   743
+        )
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   744
--- neutron-2015.1.2/neutron/db/migration/alembic_migrations/versions/2026156eab2f_l2_dvr_models.py.orig	2016-07-29 13:17:16.553516359 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   745
+++ neutron-2015.1.2/neutron/db/migration/alembic_migrations/versions/2026156eab2f_l2_dvr_models.py	2016-07-29 13:37:31.406649583 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   746
@@ -26,37 +26,73 @@ revision = '2026156eab2f'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   747
 down_revision = '3927f7f7c456'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   748
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   749
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   750
+from alembic import context
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   751
 from alembic import op
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   752
 import sqlalchemy as sa
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   753
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   754
+config = context.config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   755
+CONF = config.neutron_config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   756
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   757
 def upgrade():
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   758
-    op.create_table(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   759
-        'dvr_host_macs',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   760
-        sa.Column('host', sa.String(length=255), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   761
-        sa.Column('mac_address', sa.String(length=32),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   762
-                  nullable=False, unique=True),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   763
-        sa.PrimaryKeyConstraint('host')
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   764
-    )
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   765
-    op.create_table(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   766
-        'ml2_dvr_port_bindings',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   767
-        sa.Column('port_id', sa.String(length=36), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   768
-        sa.Column('host', sa.String(length=255), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   769
-        sa.Column('router_id', sa.String(length=36), nullable=True),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   770
-        sa.Column('vif_type', sa.String(length=64), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   771
-        sa.Column('vif_details', sa.String(length=4095),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   772
-                  nullable=False, server_default=''),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   773
-        sa.Column('vnic_type', sa.String(length=64),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   774
-                  nullable=False, server_default='normal'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   775
-        sa.Column('profile', sa.String(length=4095),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   776
-                  nullable=False, server_default=''),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   777
-        sa.Column('cap_port_filter', sa.Boolean(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   778
-        sa.Column('driver', sa.String(length=64), nullable=True),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   779
-        sa.Column('segment', sa.String(length=36), nullable=True),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   780
-        sa.Column(u'status', sa.String(16), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   781
-        sa.ForeignKeyConstraint(['port_id'], ['ports.id'],
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   782
-                                ondelete='CASCADE'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   783
-        sa.ForeignKeyConstraint(['segment'], ['ml2_network_segments.id'],
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   784
-                                ondelete='SET NULL'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   785
-        sa.PrimaryKeyConstraint('port_id', 'host')
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   786
-    )
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   787
+    # MySQL Cluster (NDB) does not support rows longer than 14000.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   788
+    # This reduces the size of columns or converts them to TEXT to keep the row size down.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   789
+    if CONF.database.mysql_storage_engine == "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   790
+        op.create_table(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   791
+            'dvr_host_macs',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   792
+            sa.Column('host', sa.String(length=128), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   793
+            sa.Column('mac_address', sa.String(length=32),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   794
+                      nullable=False, unique=True),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   795
+            sa.PrimaryKeyConstraint('host')
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   796
+        )
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   797
+        op.create_table(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   798
+            'ml2_dvr_port_bindings',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   799
+            sa.Column('port_id', sa.String(length=36), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   800
+            sa.Column('host', sa.String(length=128), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   801
+            sa.Column('router_id', sa.String(length=36), nullable=True),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   802
+            sa.Column('vif_type', sa.String(length=64), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   803
+            sa.Column('vif_details', sa.Text(length=4095),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   804
+                      nullable=False, server_default=''),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   805
+            sa.Column('vnic_type', sa.String(length=64),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   806
+                      nullable=False, server_default='normal'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   807
+            sa.Column('profile', sa.Text(length=4095),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   808
+                      nullable=False, server_default=''),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   809
+            sa.Column('cap_port_filter', sa.Boolean(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   810
+            sa.Column('driver', sa.String(length=64), nullable=True),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   811
+            sa.Column('segment', sa.String(length=36), nullable=True),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   812
+            sa.Column(u'status', sa.String(16), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   813
+            sa.ForeignKeyConstraint(['port_id'], ['ports.id'],
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   814
+                                    ondelete='CASCADE'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   815
+            sa.ForeignKeyConstraint(['segment'], ['ml2_network_segments.id'],
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   816
+                                    ondelete='SET NULL'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   817
+            sa.PrimaryKeyConstraint('port_id', 'host')
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   818
+        )
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   819
+    else:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   820
+        op.create_table(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   821
+            'dvr_host_macs',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   822
+            sa.Column('host', sa.String(length=255), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   823
+            sa.Column('mac_address', sa.String(length=32),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   824
+                      nullable=False, unique=True),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   825
+            sa.PrimaryKeyConstraint('host')
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   826
+        )
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   827
+        op.create_table(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   828
+            'ml2_dvr_port_bindings',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   829
+            sa.Column('port_id', sa.String(length=36), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   830
+            sa.Column('host', sa.String(length=255), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   831
+            sa.Column('router_id', sa.String(length=36), nullable=True),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   832
+            sa.Column('vif_type', sa.String(length=64), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   833
+            sa.Column('vif_details', sa.String(length=4095),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   834
+                      nullable=False, server_default=''),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   835
+            sa.Column('vnic_type', sa.String(length=64),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   836
+                      nullable=False, server_default='normal'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   837
+            sa.Column('profile', sa.String(length=4095),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   838
+                      nullable=False, server_default=''),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   839
+            sa.Column('cap_port_filter', sa.Boolean(), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   840
+            sa.Column('driver', sa.String(length=64), nullable=True),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   841
+            sa.Column('segment', sa.String(length=36), nullable=True),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   842
+            sa.Column(u'status', sa.String(16), nullable=False),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   843
+            sa.ForeignKeyConstraint(['port_id'], ['ports.id'],
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   844
+                                    ondelete='CASCADE'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   845
+            sa.ForeignKeyConstraint(['segment'], ['ml2_network_segments.id'],
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   846
+                                    ondelete='SET NULL'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   847
+            sa.PrimaryKeyConstraint('port_id', 'host')
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   848
+        )
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   849
--- neutron-2015.1.2/neutron/db/extradhcpopt_db.py.orig	2016-07-29 13:17:23.118174498 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   850
+++ neutron-2015.1.2/neutron/db/extradhcpopt_db.py	2016-07-29 13:38:57.088142872 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   851
@@ -13,6 +13,7 @@
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   852
 #    License for the specific language governing permissions and limitations
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   853
 #    under the License.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   854
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   855
+from oslo_config import cfg
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   856
 from oslo_log import log as logging
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   857
 import sqlalchemy as sa
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   858
 from sqlalchemy import orm
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   859
@@ -23,36 +24,67 @@ from neutron.db import model_base
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   860
 from neutron.db import models_v2
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   861
 from neutron.extensions import extra_dhcp_opt as edo_ext
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   862
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   863
+# Attempt to determine the context that this module is being used.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   864
+# If via neutron-db-manage and cli.py, import global variable. If not,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   865
+# use oslo_config.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   866
+try:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   867
+     from neutron.db.migration.cli import mysql_storage_eng_type
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   868
+except ImportError:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   869
+     CONF = cfg.CONF
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   870
+     mysql_storage_eng_type = CONF.database.mysql_storage_engine
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   871
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   872
 LOG = logging.getLogger(__name__)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   873
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   874
-
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   875
-class ExtraDhcpOpt(model_base.BASEV2, models_v2.HasId):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   876
-    """Represent a generic concept of extra options associated to a port.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   877
-
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   878
-    Each port may have none to many dhcp opts associated to it that can
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   879
-    define specifically different or extra options to DHCP clients.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   880
-    These will be written to the <network_id>/opts files, and each option's
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   881
-    tag will be referenced in the <network_id>/host file.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   882
-    """
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   883
-    port_id = sa.Column(sa.String(36),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   884
-                        sa.ForeignKey('ports.id', ondelete="CASCADE"),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   885
-                        nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   886
-    opt_name = sa.Column(sa.String(64), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   887
-    opt_value = sa.Column(sa.String(255), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   888
-    ip_version = sa.Column(sa.Integer, server_default='4', nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   889
-    __table_args__ = (sa.UniqueConstraint(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   890
-        'port_id',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   891
-        'opt_name',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   892
-        'ip_version',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   893
-        name='uniq_extradhcpopts0portid0optname0ipversion'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   894
-                      model_base.BASEV2.__table_args__,)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   895
-
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   896
-    # Add a relationship to the Port model in order to instruct SQLAlchemy to
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   897
-    # eagerly load extra_dhcp_opts bindings
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   898
-    ports = orm.relationship(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   899
-        models_v2.Port,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   900
-        backref=orm.backref("dhcp_opts", lazy='joined', cascade='delete'))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   901
+# MySQL Cluster NDB does not support this constraint.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   902
+# TODO (oorgeron) Look into making this workable.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   903
+if mysql_storage_eng_type == "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   904
+    class ExtraDhcpOpt(model_base.BASEV2, models_v2.HasId):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   905
+        """Represent a generic concept of extra options associated to a port.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   906
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   907
+        Each port may have none to many dhcp opts associated to it that can
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   908
+        define specifically different or extra options to DHCP clients.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   909
+        These will be written to the <network_id>/opts files, and each option's
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   910
+        tag will be referenced in the <network_id>/host file.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   911
+        """
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   912
+        port_id = sa.Column(sa.String(36),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   913
+                            sa.ForeignKey('ports.id', ondelete="CASCADE"),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   914
+                            nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   915
+        opt_name = sa.Column(sa.String(64), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   916
+        opt_value = sa.Column(sa.String(255), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   917
+        ip_version = sa.Column(sa.Integer, server_default='4', nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   918
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   919
+        # Add a relationship to the Port model in order to instruct SQLAlchemy to
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   920
+        # eagerly load extra_dhcp_opts bindings
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   921
+        ports = orm.relationship(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   922
+            models_v2.Port,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   923
+            backref=orm.backref("dhcp_opts", lazy='joined', cascade='delete'))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   924
+else:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   925
+    class ExtraDhcpOpt(model_base.BASEV2, models_v2.HasId):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   926
+        """Represent a generic concept of extra options associated to a port.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   927
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   928
+        Each port may have none to many dhcp opts associated to it that can
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   929
+        define specifically different or extra options to DHCP clients.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   930
+        These will be written to the <network_id>/opts files, and each option's
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   931
+        tag will be referenced in the <network_id>/host file.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   932
+        """
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   933
+        port_id = sa.Column(sa.String(36),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   934
+                            sa.ForeignKey('ports.id', ondelete="CASCADE"),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   935
+                            nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   936
+        opt_name = sa.Column(sa.String(64), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   937
+        opt_value = sa.Column(sa.String(255), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   938
+        ip_version = sa.Column(sa.Integer, server_default='4', nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   939
+        __table_args__ = (sa.UniqueConstraint(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   940
+            'port_id',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   941
+            'opt_name',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   942
+            'ip_version',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   943
+            name='uniq_extradhcpopts0portid0optname0ipversion'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   944
+                          model_base.BASEV2.__table_args__,)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   945
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   946
+        # Add a relationship to the Port model in order to instruct SQLAlchemy to
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   947
+        # eagerly load extra_dhcp_opts bindings
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   948
+        ports = orm.relationship(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   949
+            models_v2.Port,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   950
+            backref=orm.backref("dhcp_opts", lazy='joined', cascade='delete'))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   951
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   952
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   953
 class ExtraDhcpOptMixin(object):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   954
--- neutron-2015.1.2/neutron/db/models_v2.py.orig	2016-07-29 13:17:29.114096786 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   955
+++ neutron-2015.1.2/neutron/db/models_v2.py	2016-07-29 13:40:10.416011760 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   956
@@ -13,6 +13,7 @@
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   957
 #    License for the specific language governing permissions and limitations
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   958
 #    under the License.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   959
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   960
+from oslo_config import cfg
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   961
 import sqlalchemy as sa
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   962
 from sqlalchemy import orm
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   963
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   964
@@ -21,6 +22,14 @@ from neutron.common import constants
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   965
 from neutron.db import model_base
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   966
 from neutron.openstack.common import uuidutils
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   967
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   968
+# Attempt to determine the context that this module is being used.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   969
+# If via neutron-db-manage and cli.py, import global variable. If not,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   970
+# use oslo_config.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   971
+try:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   972
+     from neutron.db.migration.cli import mysql_storage_eng_type
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   973
+except ImportError:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   974
+     CONF = cfg.CONF
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   975
+     mysql_storage_eng_type = CONF.database.mysql_storage_engine
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   976
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   977
 class HasTenant(object):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   978
     """Tenant mixin, add to subclasses that have a tenant."""
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   979
@@ -126,47 +135,89 @@ class SubnetRoute(model_base.BASEV2, Rou
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   980
                           primary_key=True)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   981
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   982
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   983
-class Port(model_base.BASEV2, HasId, HasTenant):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   984
-    """Represents a port on a Neutron v2 network."""
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   985
+# MySQL Cluster NDB does not support this constraint.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   986
+# TODO (oorgeron) Look into making this workable.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   987
+if mysql_storage_eng_type == "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   988
+    class Port(model_base.BASEV2, HasId, HasTenant):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   989
+        """Represents a port on a Neutron v2 network."""
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   990
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   991
+        name = sa.Column(sa.String(attr.NAME_MAX_LEN))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   992
+        network_id = sa.Column(sa.String(36), sa.ForeignKey("networks.id"),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   993
+                               nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   994
+        fixed_ips = orm.relationship(IPAllocation, backref='ports', lazy='joined')
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   995
+        mac_address = sa.Column(sa.String(32), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   996
+        admin_state_up = sa.Column(sa.Boolean(), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   997
+        status = sa.Column(sa.String(16), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   998
+        device_id = sa.Column(sa.String(attr.DEVICE_ID_MAX_LEN), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
   999
+        device_owner = sa.Column(sa.String(attr.DEVICE_OWNER_MAX_LEN),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1000
+                                 nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1001
+        __table_args__ = (
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1002
+            sa.Index(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1003
+                'ix_ports_network_id_mac_address', 'network_id', 'mac_address'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1004
+            sa.Index(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1005
+                'ix_ports_network_id_device_owner', 'network_id', 'device_owner'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1006
+            model_base.BASEV2.__table_args__
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1007
+        )
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1008
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1009
+        def __init__(self, id=None, tenant_id=None, name=None, network_id=None,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1010
+                     mac_address=None, admin_state_up=None, status=None,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1011
+                     device_id=None, device_owner=None, fixed_ips=None):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1012
+            self.id = id
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1013
+            self.tenant_id = tenant_id
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1014
+            self.name = name
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1015
+            self.network_id = network_id
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1016
+            self.mac_address = mac_address
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1017
+            self.admin_state_up = admin_state_up
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1018
+            self.device_owner = device_owner
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1019
+            self.device_id = device_id
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1020
+            # Since this is a relationship only set it if one is passed in.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1021
+            if fixed_ips:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1022
+                self.fixed_ips = fixed_ips
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1023
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1024
+            # NOTE(arosen): status must be set last as an event is triggered on!
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1025
+            self.status = status            
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1026
+else:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1027
+    class Port(model_base.BASEV2, HasId, HasTenant):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1028
+        """Represents a port on a Neutron v2 network."""
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1029
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1030
+        name = sa.Column(sa.String(attr.NAME_MAX_LEN))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1031
+        network_id = sa.Column(sa.String(36), sa.ForeignKey("networks.id"),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1032
+                               nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1033
+        fixed_ips = orm.relationship(IPAllocation, backref='ports', lazy='joined')
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1034
+        mac_address = sa.Column(sa.String(32), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1035
+        admin_state_up = sa.Column(sa.Boolean(), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1036
+        status = sa.Column(sa.String(16), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1037
+        device_id = sa.Column(sa.String(attr.DEVICE_ID_MAX_LEN), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1038
+        device_owner = sa.Column(sa.String(attr.DEVICE_OWNER_MAX_LEN),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1039
+                                 nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1040
+        __table_args__ = (
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1041
+            sa.Index(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1042
+                'ix_ports_network_id_mac_address', 'network_id', 'mac_address'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1043
+            sa.Index(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1044
+                'ix_ports_network_id_device_owner', 'network_id', 'device_owner'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1045
+            sa.UniqueConstraint(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1046
+                network_id, mac_address,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1047
+                name='uniq_ports0network_id0mac_address'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1048
+            model_base.BASEV2.__table_args__
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1049
+        )
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1050
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1051
+        def __init__(self, id=None, tenant_id=None, name=None, network_id=None,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1052
+                     mac_address=None, admin_state_up=None, status=None,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1053
+                     device_id=None, device_owner=None, fixed_ips=None):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1054
+            self.id = id
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1055
+            self.tenant_id = tenant_id
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1056
+            self.name = name
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1057
+            self.network_id = network_id
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1058
+            self.mac_address = mac_address
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1059
+            self.admin_state_up = admin_state_up
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1060
+            self.device_owner = device_owner
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1061
+            self.device_id = device_id
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1062
+            # Since this is a relationship only set it if one is passed in.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1063
+            if fixed_ips:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1064
+                self.fixed_ips = fixed_ips
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1065
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1066
-    name = sa.Column(sa.String(attr.NAME_MAX_LEN))
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1067
-    network_id = sa.Column(sa.String(36), sa.ForeignKey("networks.id"),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1068
-                           nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1069
-    fixed_ips = orm.relationship(IPAllocation, backref='ports', lazy='joined')
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1070
-    mac_address = sa.Column(sa.String(32), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1071
-    admin_state_up = sa.Column(sa.Boolean(), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1072
-    status = sa.Column(sa.String(16), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1073
-    device_id = sa.Column(sa.String(attr.DEVICE_ID_MAX_LEN), nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1074
-    device_owner = sa.Column(sa.String(attr.DEVICE_OWNER_MAX_LEN),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1075
-                             nullable=False)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1076
-    __table_args__ = (
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1077
-        sa.Index(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1078
-            'ix_ports_network_id_mac_address', 'network_id', 'mac_address'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1079
-        sa.Index(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1080
-            'ix_ports_network_id_device_owner', 'network_id', 'device_owner'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1081
-        sa.UniqueConstraint(
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1082
-            network_id, mac_address,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1083
-            name='uniq_ports0network_id0mac_address'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1084
-        model_base.BASEV2.__table_args__
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1085
-    )
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1086
-
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1087
-    def __init__(self, id=None, tenant_id=None, name=None, network_id=None,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1088
-                 mac_address=None, admin_state_up=None, status=None,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1089
-                 device_id=None, device_owner=None, fixed_ips=None):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1090
-        self.id = id
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1091
-        self.tenant_id = tenant_id
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1092
-        self.name = name
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1093
-        self.network_id = network_id
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1094
-        self.mac_address = mac_address
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1095
-        self.admin_state_up = admin_state_up
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1096
-        self.device_owner = device_owner
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1097
-        self.device_id = device_id
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1098
-        # Since this is a relationship only set it if one is passed in.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1099
-        if fixed_ips:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1100
-            self.fixed_ips = fixed_ips
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1101
-
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1102
-        # NOTE(arosen): status must be set last as an event is triggered on!
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1103
-        self.status = status
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1104
+            # NOTE(arosen): status must be set last as an event is triggered on!
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1105
+            self.status = status
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1106
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1107
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1108
 class DNSNameServer(model_base.BASEV2):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1109
--- neutron-2015.1.2/neutron/tests/functional/db/test_migrations.py.orig	2016-07-29 13:17:35.264552054 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1110
+++ neutron-2015.1.2/neutron/tests/functional/db/test_migrations.py	2016-07-29 13:41:12.657034516 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1111
@@ -19,6 +19,7 @@ import pprint
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1112
 import alembic
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1113
 import alembic.autogenerate
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1114
 import alembic.migration
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1115
+from alembic import context
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1116
 from alembic import script as alembic_script
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1117
 import mock
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1118
 from oslo_config import cfg
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1119
@@ -35,6 +36,9 @@ LOG = logging.getLogger(__name__)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1120
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1121
 cfg.CONF.import_opt('core_plugin', 'neutron.common.config')
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1122
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1123
+config = context.config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1124
+CONF = config.neutron_config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1125
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1126
 CORE_PLUGIN = 'neutron.plugins.ml2.plugin.Ml2Plugin'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1127
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1128
 # These tables are still in the neutron database, but their models have moved
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1129
@@ -195,7 +199,7 @@ class _TestModelsMigrations(test_migrati
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1130
         self.assertTrue(len(tables) > 0,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1131
                         "No tables found. Wrong schema?")
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1132
         noninnodb = [table for table in tables if
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1133
-                     insp.get_table_options(table)['mysql_engine'] != 'InnoDB'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1134
+                     insp.get_table_options(table)['mysql_engine'] != CONF.database.mysql_storage_engine
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1135
                      and table != 'alembic_version']
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1136
         self.assertEqual(0, len(noninnodb), "%s non InnoDB tables created" %
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1137
                                             noninnodb)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1138
--- neutron-2015.1.2/neutron/plugins/ml2/drivers/cisco/apic/apic_model.py.orig	2016-07-29 13:17:41.409730731 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1139
+++ neutron-2015.1.2/neutron/plugins/ml2/drivers/cisco/apic/apic_model.py	2016-07-29 13:41:57.002278572 -0600
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1140
@@ -13,6 +13,7 @@
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1141
 #    License for the specific language governing permissions and limitations
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1142
 #    under the License.
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1143
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1144
+from alembic import context
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1145
 import sqlalchemy as sa
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1146
 from sqlalchemy import orm
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1147
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1148
@@ -22,6 +23,13 @@ from neutron.db import model_base
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1149
 from neutron.db import models_v2
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1150
 from neutron.plugins.ml2 import models as models_ml2
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1151
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1152
+config = context.config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1153
+CONF = config.neutron_config
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1154
+
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1155
+if CONF.database.mysql_storage_engine == "NDBCLUSTER":
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1156
+    router_string_length = 64
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1157
+else:
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1158
+    router_string_length = 36
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1159
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1160
 class RouterContract(model_base.BASEV2, models_v2.HasTenant):
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1161
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1162
@@ -34,8 +42,8 @@ class RouterContract(model_base.BASEV2,
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1163
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1164
     __tablename__ = 'cisco_ml2_apic_contracts'
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1165
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1166
-    router_id = sa.Column(sa.String(64), sa.ForeignKey('routers.id',
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1167
-                                                       ondelete='CASCADE'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1168
+    router_id = sa.Column(sa.String(router_string_length), 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1169
+                          sa.ForeignKey('routers.id', ondelete='CASCADE'),
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1170
                           primary_key=True)
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1171
 
c9012715dd1d 22725754 Keystone needs to support MySQL Cluster
Octave Orgeron <octave.orgeron@oracle.com>
parents:
diff changeset
  1172