def create_pool_health_monitor(self, context, health_monitor, pool_id):
monitor_id = health_monitor['health_monitor']['id']
with context.session.begin(subtransactions=True):
- monitor_qry = context.session.query(HealthMonitor)
- try:
- monitor = monitor_qry.filter_by(id=monitor_id).one()
- monitor.update({'pool_id': pool_id})
- except exc.NoResultFound:
- raise loadbalancer.HealthMonitorNotFound(monitor_id=monitor_id)
try:
qry = context.session.query(Pool)
pool = qry.filter_by(id=pool_id).one()
assoc = PoolMonitorAssociation(pool_id=pool_id,
monitor_id=monitor_id)
- assoc.healthmonitor = monitor
pool.monitors.append(assoc)
-
- monitors = []
- try:
- qry = context.session.query(Pool)
- pool = qry.filter_by(id=pool_id).one()
- for monitor in pool['monitors']:
- monitors.append(monitor['monitor_id'])
- except exc.NoResultFound:
- pass
+ monitors = [monitor['monitor_id'] for monitor in pool['monitors']]
res = {"health_monitor": monitors}
return res
self._delete('members', member1['member']['id'])
self._delete('members', member2['member']['id'])
+ def test_create_pool_health_monitor(self):
+ with contextlib.nested(
+ self.pool(name="pool"),
+ self.health_monitor(),
+ self.health_monitor()
+ ) as (pool, health_mon1, health_mon2):
+ res = self.plugin.create_pool_health_monitor(
+ context.get_admin_context(),
+ health_mon1, pool['pool']['id']
+ )
+ self.assertEqual({'health_monitor':
+ [health_mon1['health_monitor']['id']]},
+ res)
+
+ res = self.plugin.create_pool_health_monitor(
+ context.get_admin_context(),
+ health_mon2, pool['pool']['id']
+ )
+ self.assertEqual({'health_monitor':
+ [health_mon1['health_monitor']['id'],
+ health_mon2['health_monitor']['id']]},
+ res)
+
+ def test_create_pool_healthmon_invalid_pool_id(self):
+ with self.health_monitor() as healthmon:
+ self.assertRaises(loadbalancer.PoolNotFound,
+ self.plugin.create_pool_health_monitor,
+ context.get_admin_context(),
+ healthmon,
+ "123-456-789"
+ )
+
class TestLoadBalancerXML(TestLoadBalancer):
fmt = 'xml'