From: Stephen Gran Date: Mon, 24 Feb 2014 20:18:49 +0000 (+0000) Subject: stats table needs columns to be bigint X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=74cd0e3e040e64c016a13222bfd729ee70eaa78d;p=openstack-build%2Fneutron-build.git stats table needs columns to be bigint Bandwidth measurements trivially overrun 32bit counters. Change storage type to BigInteger from Integer. Closes-Bug: #1284314 Change-Id: I20db25f374de66b8443ff50bac979bff634d8a14 Signed-off-by: Stephen Gran --- diff --git a/neutron/db/loadbalancer/loadbalancer_db.py b/neutron/db/loadbalancer/loadbalancer_db.py index e18a1b2ed..137551f7f 100644 --- a/neutron/db/loadbalancer/loadbalancer_db.py +++ b/neutron/db/loadbalancer/loadbalancer_db.py @@ -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 index 000000000..79f39dde3 --- /dev/null +++ b/neutron/db/migration/alembic_migrations/versions/77dfe0962bb3_lb_stats_needs_bigint.py @@ -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())