Explicitly set neutron service ports for fullstack
Fullstack neutron-server seems do not accept any connection during the running period sometimes. This patch explicitly set listening port range for neutron-server API and ovs agent openflow. And make sure other client side connection port does not seize the server side listening. Change-Id: If2a7977a3ac795db0bc7f726c0b26c5de638ea47
This commit is contained in:
parent
9b897782f8
commit
c0132acb52
|
@ -228,6 +228,18 @@ def get_free_namespace_port(protocol, namespace=None, start=1024, end=None):
|
||||||
return get_unused_port(used_ports, start, end)
|
return get_unused_port(used_ports, start, end)
|
||||||
|
|
||||||
|
|
||||||
|
def set_local_port_range(start, end):
|
||||||
|
utils.execute(
|
||||||
|
['sysctl', '-w', 'net.ipv4.ip_local_port_range=%d %d' % (start, end)],
|
||||||
|
run_as_root=True)
|
||||||
|
utils.execute(['sysctl', '-p'], run_as_root=True)
|
||||||
|
# verify
|
||||||
|
port_range = utils.execute(
|
||||||
|
['sysctl', '-n', 'net.ipv4.ip_local_port_range'], run_as_root=True)
|
||||||
|
assert int(port_range.split()[0]) == start
|
||||||
|
assert int(port_range.split()[1]) == end
|
||||||
|
|
||||||
|
|
||||||
def create_patch_ports(source, destination):
|
def create_patch_ports(source, destination):
|
||||||
"""Hook up two OVS bridges.
|
"""Hook up two OVS bridges.
|
||||||
|
|
||||||
|
|
|
@ -25,12 +25,22 @@ from neutron.tests import base
|
||||||
from neutron.tests.common import config_fixtures
|
from neutron.tests.common import config_fixtures
|
||||||
from neutron.tests.common.exclusive_resources import port
|
from neutron.tests.common.exclusive_resources import port
|
||||||
from neutron.tests.common import helpers as c_helpers
|
from neutron.tests.common import helpers as c_helpers
|
||||||
|
from neutron.tests.common import net_helpers
|
||||||
from neutron.tests.fullstack import base as fullstack_base
|
from neutron.tests.fullstack import base as fullstack_base
|
||||||
|
|
||||||
PHYSICAL_NETWORK_NAME = "physnet1"
|
PHYSICAL_NETWORK_NAME = "physnet1"
|
||||||
MINIMUM_BANDWIDTH_INGRESS_KBPS = 1000
|
MINIMUM_BANDWIDTH_INGRESS_KBPS = 1000
|
||||||
MINIMUM_BANDWIDTH_EGRESS_KBPS = 1000
|
MINIMUM_BANDWIDTH_EGRESS_KBPS = 1000
|
||||||
|
|
||||||
|
NEUTRON_SERVER_PORT_START = 10000
|
||||||
|
NEUTRON_SERVER_PORT_END = 20000
|
||||||
|
|
||||||
|
OVS_OF_PORT_LISTEN_START = 20001
|
||||||
|
OVS_OF_PORT_LISTEN_END = 30000
|
||||||
|
|
||||||
|
CLIENT_CONN_PORT_START = 30001
|
||||||
|
CLIENT_CONN_PORT_END = 65000
|
||||||
|
|
||||||
|
|
||||||
class ConfigFixture(config_fixtures.ConfigFileFixture):
|
class ConfigFixture(config_fixtures.ConfigFileFixture):
|
||||||
"""A fixture that holds an actual Neutron configuration.
|
"""A fixture that holds an actual Neutron configuration.
|
||||||
|
@ -101,10 +111,15 @@ class NeutronConfigFixture(ConfigFixture):
|
||||||
self.config['DEFAULT']['router_scheduler_driver'] = (
|
self.config['DEFAULT']['router_scheduler_driver'] = (
|
||||||
env_desc.router_scheduler)
|
env_desc.router_scheduler)
|
||||||
|
|
||||||
|
net_helpers.set_local_port_range(CLIENT_CONN_PORT_START,
|
||||||
|
CLIENT_CONN_PORT_END)
|
||||||
|
|
||||||
def _setUp(self):
|
def _setUp(self):
|
||||||
self.config['DEFAULT'].update({
|
self.config['DEFAULT'].update({
|
||||||
'bind_port': self.useFixture(
|
'bind_port': self.useFixture(
|
||||||
port.ExclusivePort(constants.PROTO_NAME_TCP)).port
|
port.ExclusivePort(constants.PROTO_NAME_TCP,
|
||||||
|
start=NEUTRON_SERVER_PORT_START,
|
||||||
|
end=NEUTRON_SERVER_PORT_END)).port
|
||||||
})
|
})
|
||||||
super(NeutronConfigFixture, self)._setUp()
|
super(NeutronConfigFixture, self)._setUp()
|
||||||
|
|
||||||
|
@ -213,7 +228,9 @@ class OVSConfigFixture(ConfigFixture):
|
||||||
if self.config['ovs']['of_interface'] == 'native':
|
if self.config['ovs']['of_interface'] == 'native':
|
||||||
self.config['ovs'].update({
|
self.config['ovs'].update({
|
||||||
'of_listen_port': self.useFixture(
|
'of_listen_port': self.useFixture(
|
||||||
port.ExclusivePort(constants.PROTO_NAME_TCP)).port
|
port.ExclusivePort(constants.PROTO_NAME_TCP,
|
||||||
|
start=OVS_OF_PORT_LISTEN_START,
|
||||||
|
end=OVS_OF_PORT_LISTEN_END)).port
|
||||||
})
|
})
|
||||||
super(OVSConfigFixture, self)._setUp()
|
super(OVSConfigFixture, self)._setUp()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue