From 5cbdf6b94e70444d146d5e85b2a18131b6325621 Mon Sep 17 00:00:00 2001 From: Eugene Nikanorov Date: Fri, 2 Aug 2013 23:35:27 +0400 Subject: [PATCH] Remove status* fields from HealthMonitor model Status and status_description fields of HealthMonitor model are never changed during lifetime of the object and doesn't represent the status of it's pysical implementation. Instead, status and status_description of PoolMonitorAssociation is used. Another reason for removing those fields is that HealthMonitor acts as template which is instantiated on device. Status field for template makes no sense. fixes bug 1207650 Change-Id: Iea9d7f73c3a2db43c553ed06a64fe5ff42427167 --- neutron/db/loadbalancer/loadbalancer_db.py | 10 +--- ...35c7c198ddea_lbaas_healthmon_del_status.py | 56 +++++++++++++++++++ .../db/loadbalancer/test_db_loadbalancer.py | 9 +-- 3 files changed, 62 insertions(+), 13 deletions(-) create mode 100644 neutron/db/migration/alembic_migrations/versions/35c7c198ddea_lbaas_healthmon_del_status.py diff --git a/neutron/db/loadbalancer/loadbalancer_db.py b/neutron/db/loadbalancer/loadbalancer_db.py index 3c9511310f..4c9fd7195b 100644 --- a/neutron/db/loadbalancer/loadbalancer_db.py +++ b/neutron/db/loadbalancer/loadbalancer_db.py @@ -130,8 +130,7 @@ class Pool(model_base.BASEV2, models_v2.HasId, models_v2.HasTenant, vip = orm.relationship(Vip, backref='pool') -class HealthMonitor(model_base.BASEV2, models_v2.HasId, models_v2.HasTenant, - models_v2.HasStatusDescription): +class HealthMonitor(model_base.BASEV2, models_v2.HasId, models_v2.HasTenant): """Represents a v2 neutron loadbalancer healthmonitor.""" type = sa.Column(sa.Enum("PING", "TCP", "HTTP", "HTTPS", @@ -667,9 +666,7 @@ class LoadBalancerPluginDb(LoadBalancerPluginBase, 'delay': health_monitor['delay'], 'timeout': health_monitor['timeout'], 'max_retries': health_monitor['max_retries'], - 'admin_state_up': health_monitor['admin_state_up'], - 'status': health_monitor['status'], - 'status_description': health_monitor['status_description']} + 'admin_state_up': health_monitor['admin_state_up']} # no point to add the values below to # the result if the 'type' is not HTTP/S if res['type'] in ['HTTP', 'HTTPS']: @@ -692,8 +689,7 @@ class LoadBalancerPluginDb(LoadBalancerPluginBase, http_method=v['http_method'], url_path=v['url_path'], expected_codes=v['expected_codes'], - admin_state_up=v['admin_state_up'], - status=constants.ACTIVE) + admin_state_up=v['admin_state_up']) context.session.add(monitor_db) return self._make_health_monitor_dict(monitor_db) diff --git a/neutron/db/migration/alembic_migrations/versions/35c7c198ddea_lbaas_healthmon_del_status.py b/neutron/db/migration/alembic_migrations/versions/35c7c198ddea_lbaas_healthmon_del_status.py new file mode 100644 index 0000000000..a0f9b83635 --- /dev/null +++ b/neutron/db/migration/alembic_migrations/versions/35c7c198ddea_lbaas_healthmon_del_status.py @@ -0,0 +1,56 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# +# Copyright 2013 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. +# + +"""remove status from HealthMonitor + +Revision ID: 35c7c198ddea +Revises: 11c6e18605c8 +Create Date: 2013-08-02 23:14:54.037976 + +""" + +# revision identifiers, used by Alembic. +revision = '35c7c198ddea' +down_revision = '11c6e18605c8' + +# Change to ['*'] if this migration applies to all plugins + +migration_for_plugins = ['*'] + +from alembic import op +import sqlalchemy as sa + + +from neutron.db import migration + + +def upgrade(active_plugin=None, options=None): + if not migration.should_run(active_plugin, migration_for_plugins): + return + op.drop_column('healthmonitors', 'status') + op.drop_column('healthmonitors', 'status_description') + + +def downgrade(active_plugin=None, options=None): + if not migration.should_run(active_plugin, migration_for_plugins): + return + + op.add_column('healthmonitors', sa.Column('status', + sa.String(16), + nullable=False)) + op.add_column('healthmonitors', sa.Column('status_description', + sa.String(255))) diff --git a/neutron/tests/unit/db/loadbalancer/test_db_loadbalancer.py b/neutron/tests/unit/db/loadbalancer/test_db_loadbalancer.py index 6b94ded66b..9ccab978db 100644 --- a/neutron/tests/unit/db/loadbalancer/test_db_loadbalancer.py +++ b/neutron/tests/unit/db/loadbalancer/test_db_loadbalancer.py @@ -831,8 +831,7 @@ class TestLoadBalancer(LoadBalancerPluginDbTestCase): ('delay', 30), ('timeout', 10), ('max_retries', 3), - ('admin_state_up', True), - ('status', 'ACTIVE')] + ('admin_state_up', True)] with self.health_monitor() as monitor: for k, v in keys: self.assertEqual(monitor['health_monitor'][k], v) @@ -843,8 +842,7 @@ class TestLoadBalancer(LoadBalancerPluginDbTestCase): ('delay', 20), ('timeout', 20), ('max_retries', 2), - ('admin_state_up', False), - ('status', 'PENDING_UPDATE')] + ('admin_state_up', False)] with self.health_monitor() as monitor: data = {'health_monitor': {'delay': 20, 'timeout': 20, @@ -915,8 +913,7 @@ class TestLoadBalancer(LoadBalancerPluginDbTestCase): ('delay', 30), ('timeout', 10), ('max_retries', 3), - ('admin_state_up', True), - ('status', 'ACTIVE')] + ('admin_state_up', True)] req = self.new_show_request('health_monitors', monitor['health_monitor']['id'], fmt=self.fmt)