from neutron.api.v2 import resource
from neutron.common import constants
from neutron.extensions import agent
+from neutron.extensions import loadbalancer
from neutron import manager
from neutron.plugins.common import constants as plugin_const
from neutron import policy
return {}
-class NoEligibleLbaasAgent(agent.AgentNotFound):
+class NoEligibleLbaasAgent(loadbalancer.NoEligibleBackend):
message = _("No eligible loadbalancer agent found "
"for pool %(pool_id)s.")
from neutron.db import api as qdbapi
from neutron.db.loadbalancer import loadbalancer_db as ldb
from neutron.db import servicetype_db as st_db
+from neutron.extensions import loadbalancer
from neutron.openstack.common import excutils
from neutron.openstack.common import log as logging
from neutron.plugins.common import constants
#because provider was not known to db plugin at pool creation
p['provider'] = provider_name
driver = self.drivers[provider_name]
- driver.create_pool(context, p)
+ try:
+ driver.create_pool(context, p)
+ except loadbalancer.NoEligibleBackend:
+ # that should catch cases when backend of any kind
+ # is not available (agent, appliance, etc)
+ self.update_status(context, ldb.Pool,
+ p['id'], constants.ERROR,
+ "No eligible backend")
+ raise loadbalancer.NoEligibleBackend(pool_id=p['id'])
return p
def update_pool(self, context, id, pool):
from neutron.db import servicetype_db as st_db
from neutron.extensions import agent
from neutron.extensions import lbaas_agentscheduler
+from neutron.extensions import loadbalancer
from neutron import manager
from neutron.plugins.common import constants as plugin_const
from neutron.tests.unit.db.loadbalancer import test_db_loadbalancer
self.assertEqual(1, len(pools['pools']))
self.assertEqual(pool['pool'], pools['pools'][0])
- def test_schedule_poll_with_disabled_agent(self):
+ def test_schedule_pool_with_disabled_agent(self):
lbaas_hosta = {
'binary': 'neutron-loadbalancer-agent',
'host': LBAAS_HOSTA,
'description': 'test'}}
lbaas_plugin = manager.NeutronManager.get_service_plugins()[
plugin_const.LOADBALANCER]
- self.assertRaises(lbaas_agentscheduler.NoEligibleLbaasAgent,
+ self.assertRaises(loadbalancer.NoEligibleBackend,
lbaas_plugin.create_pool, self.adminContext, pool)
+ pools = lbaas_plugin.get_pools(self.adminContext)
+ self.assertEqual('ERROR', pools[0]['status'])
+ self.assertEqual('No eligible backend',
+ pools[0]['status_description'])
def test_schedule_pool_with_down_agent(self):
lbaas_hosta = {
'description': 'test'}}
lbaas_plugin = manager.NeutronManager.get_service_plugins()[
plugin_const.LOADBALANCER]
- self.assertRaises(lbaas_agentscheduler.NoEligibleLbaasAgent,
+ self.assertRaises(loadbalancer.NoEligibleBackend,
lbaas_plugin.create_pool,
self.adminContext, pool)
+ pools = lbaas_plugin.get_pools(self.adminContext)
+ self.assertEqual('ERROR', pools[0]['status'])
+ self.assertEqual('No eligible backend',
+ pools[0]['status_description'])
def test_pool_unscheduling_on_pool_deletion(self):
self._register_agent_states(lbaas_agents=True)