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
This commit is contained in:
Eugene Nikanorov 2013-08-02 23:35:27 +04:00
parent 256f9743a3
commit 4c7c0d4a7a
3 changed files with 62 additions and 13 deletions

View File

@ -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)

View File

@ -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)))

View File

@ -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)