]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
LBaaS: add status of pool-monitor association to the pool return dict
authorOleg Bondarev <obondarev@mirantis.com>
Mon, 2 Sep 2013 09:44:51 +0000 (13:44 +0400)
committerOleg Bondarev <obondarev@mirantis.com>
Wed, 4 Sep 2013 08:16:18 +0000 (12:16 +0400)
Closes-Bug: #1219692
Change-Id: Icc7ca4a48c43a8462860cdbc42626079bffadc26

neutron/db/loadbalancer/loadbalancer_db.py
neutron/extensions/loadbalancer.py
neutron/tests/unit/db/loadbalancer/test_db_loadbalancer.py

index d9d41cf5e46935c7719d6243f83df562d8038253..c6e35f5263e42eaeacb1bb64de1bdc4de1995476 100644 (file)
@@ -479,6 +479,11 @@ class LoadBalancerPluginDb(LoadBalancerPluginBase,
         # Get the associated health_monitors
         res['health_monitors'] = [
             monitor['monitor_id'] for monitor in pool['monitors']]
+        res['health_monitors_status'] = [
+            {'monitor_id': monitor['monitor_id'],
+             'status': monitor['status'],
+             'status_description': monitor['status_description']}
+            for monitor in pool['monitors']]
         return self._fields(res, fields)
 
     def update_pool_stats(self, context, pool_id, data=None):
index 67054fb962ae9b9036883302790a0b7ab195f2d2..d2dde8adb7f968359b8276bd51b98076a3800d79 100644 (file)
@@ -175,6 +175,8 @@ RESOURCE_ATTRIBUTE_MAP = {
                             'validate': {'type:uuid_list': None},
                             'convert_to': attr.convert_to_list,
                             'is_visible': True},
+        'health_monitors_status': {'allow_post': False, 'allow_put': False,
+                                   'is_visible': True},
         'admin_state_up': {'allow_post': True, 'allow_put': True,
                            'default': True,
                            'convert_to': attr.convert_to_boolean,
@@ -308,6 +310,7 @@ class Loadbalancer(extensions.ExtensionDescriptor):
     @classmethod
     def get_resources(cls):
         my_plurals = [(key, key[:-1]) for key in RESOURCE_ATTRIBUTE_MAP.keys()]
+        my_plurals.append(('health_monitors_status', 'health_monitor_status'))
         attr.PLURALS.update(dict(my_plurals))
         resources = []
         plugin = manager.NeutronManager.get_service_plugins()[
index 483de34092253c381d64950e44dec8e86db1abfe..0cbadf5ff8700c9c1d76f614029ce3f067aa00f6 100644 (file)
@@ -1109,6 +1109,16 @@ class TestLoadBalancer(LoadBalancerPluginDbTestCase):
                                   res['pool']['health_monitors'])
                     self.assertIn(monitor2['health_monitor']['id'],
                                   res['pool']['health_monitors'])
+                    expected = [
+                        {'monitor_id': monitor1['health_monitor']['id'],
+                         'status': 'PENDING_CREATE',
+                         'status_description': None},
+                        {'monitor_id': monitor2['health_monitor']['id'],
+                         'status': 'PENDING_CREATE',
+                         'status_description': None}]
+                    self.assertEqual(
+                        sorted(expected),
+                        sorted(res['pool']['health_monitors_status']))
 
     def test_delete_healthmonitor_of_pool(self):
         with self.health_monitor(type="TCP") as monitor1:
@@ -1161,6 +1171,13 @@ class TestLoadBalancer(LoadBalancerPluginDbTestCase):
                                      res['pool']['health_monitors'])
                     self.assertIn(monitor2['health_monitor']['id'],
                                   res['pool']['health_monitors'])
+                    expected = [
+                        {'monitor_id': monitor2['health_monitor']['id'],
+                         'status': 'PENDING_CREATE',
+                         'status_description': None}
+                    ]
+                    self.assertEqual(expected,
+                                     res['pool']['health_monitors_status'])
 
     def test_create_loadbalancer(self):
         vip_name = "vip3"
@@ -1221,6 +1238,13 @@ class TestLoadBalancer(LoadBalancerPluginDbTestCase):
                               pool_updated['pool']['members'])
                 self.assertIn(health_monitor['health_monitor']['id'],
                               pool_updated['pool']['health_monitors'])
+                expected = [
+                    {'monitor_id': health_monitor['health_monitor']['id'],
+                     'status': 'PENDING_CREATE',
+                     'status_description': None}
+                ]
+                self.assertEqual(
+                    expected, pool_updated['pool']['health_monitors_status'])
 
                 req = self.new_show_request('vips',
                                             vip_id,