BigSwitch: Fix error for server config check

Raises config error when a port is incorrectly
configured for a server instead of getting a
ValueError when python tries to convert it to
an integer.

Closes-Bug: #1289132
Change-Id: Ifec0bec5640a4a57859f2673c46c610f1d21c36c
This commit is contained in:
Kevin Benton 2014-03-07 10:26:47 -08:00
parent 005fec677c
commit 97c0723cfe
2 changed files with 34 additions and 2 deletions

View File

@ -253,8 +253,9 @@ class ServerPool(object):
servers = [s if len(s.rsplit(':', 1)) == 2
else "%s:%d" % (s, default_port)
for s in servers]
if any((len(spl) != 2)for spl in [sp.rsplit(':', 1)
for sp in servers]):
if any((len(spl) != 2 or not spl[1].isdigit())
for spl in [sp.rsplit(':', 1)
for sp in servers]):
raise cfg.Error(_('Servers must be defined as <ip>:<port>. '
'Configuration was %s') % servers)
self.servers = [

View File

@ -0,0 +1,31 @@
# Copyright 2014 Big Switch Networks, Inc. All rights reserved.
#
# 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.
#
# @author: Kevin Benton, kevin.benton@bigswitch.com
#
from oslo.config import cfg
from neutron.plugins.bigswitch import servermanager
from neutron.tests.unit.bigswitch import test_restproxy_plugin as test_rp
class ServerManagerTests(test_rp.BigSwitchProxyPluginV2TestCase):
def test_no_servers(self):
cfg.CONF.set_override('servers', [], 'RESTPROXY')
self.assertRaises(cfg.Error, servermanager.ServerPool)
def test_malformed_servers(self):
cfg.CONF.set_override('servers', ['a:b:c'], 'RESTPROXY')
self.assertRaises(cfg.Error, servermanager.ServerPool)