Merge "Check subnetpool extension support"
This commit is contained in:
commit
964a8ea19c
@ -26,8 +26,16 @@ class BindingFailure(KuryrException):
|
|||||||
class DuplicatedResourceException(KuryrException):
|
class DuplicatedResourceException(KuryrException):
|
||||||
"""Exception represents there're multiple resources for the ID.
|
"""Exception represents there're multiple resources for the ID.
|
||||||
|
|
||||||
This exception is thrown when you query the Neutron resouce associated with
|
For example, this exception is thrown when you query the Neutron resource
|
||||||
the ID and you get multiple resources.
|
associated with the ID and you get multiple resources.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
class MandatoryApiMissing(KuryrException):
|
||||||
|
"""Exception represents that mandatory api is not found.
|
||||||
|
|
||||||
|
For example, this exception is thrown when expected neutron
|
||||||
|
extension(subnetpools) APIs are not found.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,6 +28,8 @@ from kuryr.common import exceptions
|
|||||||
from kuryr import schemata
|
from kuryr import schemata
|
||||||
from kuryr import utils
|
from kuryr import utils
|
||||||
|
|
||||||
|
MANDATORY_NEUTRON_EXTENSION = "subnet_allocation"
|
||||||
|
|
||||||
cfg.CONF.import_group('neutron_client', 'kuryr.common.config')
|
cfg.CONF.import_group('neutron_client', 'kuryr.common.config')
|
||||||
cfg.CONF.import_group('keystone_client', 'kuryr.common.config')
|
cfg.CONF.import_group('keystone_client', 'kuryr.common.config')
|
||||||
|
|
||||||
@ -49,6 +51,19 @@ else:
|
|||||||
app.neutron = utils.get_neutron_client_simple(
|
app.neutron = utils.get_neutron_client_simple(
|
||||||
url=neutron_uri, token=auth_token)
|
url=neutron_uri, token=auth_token)
|
||||||
|
|
||||||
|
|
||||||
|
def check_for_neutron_ext_support():
|
||||||
|
"""Validates for mandatory extension support availability in neutron.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
app.neutron.show_extension(MANDATORY_NEUTRON_EXTENSION)
|
||||||
|
except n_exceptions.NeutronClientException as e:
|
||||||
|
if e.status_code == n_exceptions.NotFound.status_code:
|
||||||
|
raise exceptions.MandatoryApiMissing(
|
||||||
|
"Neutron extension with alias '{0}' not found"
|
||||||
|
.format(MANDATORY_NEUTRON_EXTENSION))
|
||||||
|
|
||||||
|
|
||||||
# TODO(tfukushima): Retrieve the following subnet names from the config file.
|
# TODO(tfukushima): Retrieve the following subnet names from the config file.
|
||||||
SUBNET_POOLS_V4 = [
|
SUBNET_POOLS_V4 = [
|
||||||
p.strip() for p in os.environ.get('SUBNET_POOLS_V4', 'kuryr').split(',')]
|
p.strip() for p in os.environ.get('SUBNET_POOLS_V4', 'kuryr').split(',')]
|
||||||
|
@ -12,11 +12,15 @@
|
|||||||
|
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
from neutronclient.common import exceptions as n_exceptions
|
||||||
|
|
||||||
from kuryr.common import config
|
from kuryr.common import config
|
||||||
|
from kuryr.common import exceptions
|
||||||
|
from kuryr import controllers
|
||||||
from kuryr.tests import base
|
from kuryr.tests import base
|
||||||
|
|
||||||
|
|
||||||
class ConfigurationTest(base.TestCase):
|
class ConfigurationTest(base.TestKuryrBase):
|
||||||
|
|
||||||
def test_defaults(self):
|
def test_defaults(self):
|
||||||
basepath = os.path.abspath(os.path.join(os.path.dirname(__file__),
|
basepath = os.path.abspath(os.path.join(os.path.dirname(__file__),
|
||||||
@ -33,3 +37,15 @@ class ConfigurationTest(base.TestCase):
|
|||||||
|
|
||||||
self.assertEqual('http://127.0.0.1:35357',
|
self.assertEqual('http://127.0.0.1:35357',
|
||||||
config.CONF.keystone_client.auth_uri)
|
config.CONF.keystone_client.auth_uri)
|
||||||
|
|
||||||
|
def test_check_for_neutron_ext_support_with_ex(self):
|
||||||
|
ext_alias = "subnet_allocation"
|
||||||
|
self.mox.StubOutWithMock(controllers.app.neutron, "show_extension")
|
||||||
|
err = n_exceptions.NotFound.status_code
|
||||||
|
ext_not_found_ex = n_exceptions.NeutronClientException(status_code=err,
|
||||||
|
message="")
|
||||||
|
neutron = controllers.app.neutron
|
||||||
|
neutron.show_extension(ext_alias).AndRaise(ext_not_found_ex)
|
||||||
|
self.mox.ReplayAll()
|
||||||
|
ex = exceptions.MandatoryApiMissing
|
||||||
|
self.assertRaises(ex, controllers.check_for_neutron_ext_support)
|
||||||
|
@ -12,6 +12,8 @@
|
|||||||
# License for the specific language governing permissions and limitations
|
# License for the specific language governing permissions and limitations
|
||||||
# under the License.
|
# under the License.
|
||||||
|
|
||||||
|
from kuryr import controllers
|
||||||
from kuryr import server
|
from kuryr import server
|
||||||
|
|
||||||
|
controllers.check_for_neutron_ext_support()
|
||||||
server.start()
|
server.start()
|
||||||
|
Loading…
Reference in New Issue
Block a user