]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
stats table needs columns to be bigint
authorStephen Gran <stephen.gran@guardian.co.uk>
Mon, 24 Feb 2014 20:18:49 +0000 (20:18 +0000)
committerThomas Goirand <thomas@goirand.fr>
Thu, 13 Mar 2014 07:20:34 +0000 (15:20 +0800)
Bandwidth measurements trivially overrun 32bit counters.  Change storage
type to BigInteger from Integer.

Closes-Bug: #1284314
Change-Id: I20db25f374de66b8443ff50bac979bff634d8a14
Signed-off-by: Stephen Gran <stephen.gran@guardian.co.uk>
neutron/db/loadbalancer/loadbalancer_db.py
neutron/db/migration/alembic_migrations/versions/77dfe0962bb3_lb_stats_needs_bigint.py [new file with mode: 0644]

index e18a1b2ed041eb2edb1434cae5c5f9ee1f005220..137551f7f04cec02967027272df726cdc76d5f0c 100644 (file)
@@ -58,10 +58,10 @@ class PoolStatistics(model_base.BASEV2):
 
     pool_id = sa.Column(sa.String(36), sa.ForeignKey("pools.id"),
                         primary_key=True)
-    bytes_in = sa.Column(sa.Integer, nullable=False)
-    bytes_out = sa.Column(sa.Integer, nullable=False)
-    active_connections = sa.Column(sa.Integer, nullable=False)
-    total_connections = sa.Column(sa.Integer, nullable=False)
+    bytes_in = sa.Column(sa.BigInteger, nullable=False)
+    bytes_out = sa.Column(sa.BigInteger, nullable=False)
+    active_connections = sa.Column(sa.BigInteger, nullable=False)
+    total_connections = sa.Column(sa.BigInteger, nullable=False)
 
     @validates('bytes_in', 'bytes_out',
                'active_connections', 'total_connections')
diff --git a/neutron/db/migration/alembic_migrations/versions/77dfe0962bb3_lb_stats_needs_bigint.py b/neutron/db/migration/alembic_migrations/versions/77dfe0962bb3_lb_stats_needs_bigint.py
new file mode 100644 (file)
index 0000000..79f39dd
--- /dev/null
@@ -0,0 +1,67 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+#
+# Copyright 2014 OpenStack Foundation
+#
+#    Licensed under the Apache License, Version 2.0 (the "License"); you may
+#    not use this file except in compliance with the License. You may obtain
+#    a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#    Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+#
+
+"""lb stats
+
+Revision ID: abc88c33f74f
+Revises: 3d2585038b95
+Create Date: 2014-02-24 20:14:59.577972
+
+"""
+
+# revision identifiers, used by Alembic.
+revision = 'abc88c33f74f'
+down_revision = '3d2585038b95'
+
+# Change to ['*'] if this migration applies to all plugins
+
+migration_for_plugins = [
+    'neutron.services.loadbalancer.plugin.LoadBalancerPlugin'
+]
+
+from alembic import op
+import sqlalchemy as sa
+
+from neutron.db import migration
+
+
+def upgrade(active_plugins=None, options=None):
+    if not migration.should_run(active_plugins, migration_for_plugins):
+        return
+
+    op.alter_column('poolstatisticss', 'bytes_in',
+                    type_=sa.BigInteger(), existing_type=sa.Integer())
+    op.alter_column('poolstatisticss', 'bytes_out',
+                    type_=sa.BigInteger(), existing_type=sa.Integer())
+    op.alter_column('poolstatisticss', 'active_connections',
+                    type_=sa.BigInteger(), existing_type=sa.Integer())
+    op.alter_column('poolstatisticss', 'total_connections',
+                    type_=sa.BigInteger(), existing_type=sa.Integer())
+
+
+def downgrade(active_plugins=None, options=None):
+    if not migration.should_run(active_plugins, migration_for_plugins):
+        return
+
+    op.alter_column('poolstatisticss', 'bytes_in',
+                    type_=sa.Integer(), existing_type=sa.BigInteger())
+    op.alter_column('poolstatisticss', 'bytes_out',
+                    type_=sa.Integer(), existing_type=sa.BigInteger())
+    op.alter_column('poolstatisticss', 'active_connections',
+                    type_=sa.Integer(), existing_type=sa.BigInteger())
+    op.alter_column('poolstatisticss', 'total_connections',
+                    type_=sa.Integer(), existing_type=sa.BigInteger())