2026-04-01 17:59:24,086 - INFO - Domain Default found not creating
2026-04-01 17:59:24,217 - INFO - Project ctest-TestRoutersBasic-33298887 not found, creating it
2026-04-01 17:59:24,649 - INFO - Created Project:ctest-TestRoutersBasic-33298887, ID : 47d57234-702d-41b3-84c5-953acab6ffeb
2026-04-01 17:59:26,263 - INFO - ================================================================================
2026-04-01 17:59:26,263 - INFO - STARTING TEST : test_basic_snat_behavior_without_external_connectivity
2026-04-01 17:59:26,263 - INFO - TEST DESCRIPTION : Create an external network, a router
set router-gateway to external network
launch a private network and attach it to router
validate left vm pinging right vm through Snat
2026-04-01 17:59:26,393 - DEBUG - Nothing to compare xmpp stats {'10.0.0.22': {'10.20.0.14': '0'}} with
2026-04-01 17:59:26,393 - INFO - Initial checks done. Running the testcase now
2026-04-01 17:59:26,393 - INFO -
2026-04-01 17:59:27,129 - INFO - Default SG to be edited for allow all on project: ctest-TestRoutersBasic-33298887
2026-04-01 17:59:27,223 - INFO - Adding rules to the default security group in Project ctest-TestRoutersBasic-33298887
2026-04-01 17:59:27,539 - DEBUG - Reading firewall policy {'fq_name': ['default-domain', 'ctest-TestRoutersBasic-33298887', 'default']}
2026-04-01 17:59:27,840 - ERROR - ConnectFailure
Python 3.9.25: /usr/bin/python3
Wed Apr 1 17:59:27 2026
A problem occurred in a Python script. Here is the sequence of
function calls leading up to the error, in the order they occurred.
/contrail-test/tcutils/wrappers.py in wrapper(self=, *args=(), **kwargs={})
78 log.info('Initial checks done. Running the testcase now')
79 log.info('')
80 result = function(self, *args, **kwargs)
81 if self.inputs.upgrade:
82 pid = os.getpid()
result = None
function =
self =
args = ()
kwargs = {}
/contrail-test/scripts/neutron/test_routers_basic.py in test_basic_snat_behavior_without_external_connectivity(self=)
33 self.allow_default_sg_to_allow_all_on_project(self.inputs.project_name)
34 self.allow_all_on_default_fwaas_policy()
35 vn1_fixture = self.create_vn()
36 ext_vn_name = get_random_name('ext_vn')
37 ext_vn_fixture = self.create_vn(vn_name=ext_vn_name,
vn1_fixture undefined
self =
self.create_vn = >
/contrail-test/common/base.py in create_vn(self=, vn_name=None, vn_subnets=None, cleanup=True, **kwargs={})
189
190 def create_vn(self, vn_name=None, vn_subnets=None, cleanup=True, **kwargs):
191 vn_fixture = self.create_only_vn(vn_name=vn_name,
192 vn_subnets=vn_subnets,
193 **kwargs)
vn_fixture undefined
self =
self.create_only_vn = >
vn_name = None
vn_subnets = None
kwargs = {}
/contrail-test/common/base.py in create_only_vn(cls=, vn_name='ctest-vn-52964085', vn_subnets=None, **kwargs={})
184 subnets=vn_subnets,
185 **kwargs)
186 vn_fixture.setUp()
187 return vn_fixture
188 # end create_only_vn
vn_fixture =
vn_fixture.setUp = >
/contrail-test/fixtures/vn_test.py in setUp(self=)
437 def setUp(self):
438 super(VNFixture, self).setUp()
439 self.create()
440
441 def create(self):
self =
self.create = >
/contrail-test/fixtures/vn_test.py in create(self=)
450 self._create_vn_api(self.vn_name, self.project_obj)
451 else:
452 self._create_vn_orch()
453 if not self.obj:
454 self.logger.debug('VN %s not present' % (self.vn_name))
self =
self._create_vn_orch = >
/contrail-test/fixtures/vn_test.py in _create_vn_orch(self=)
293 self.project_id = self.connections.get_project_id()
294 try:
295 self.obj = self.orchestrator.get_vn_obj_if_present(self.vn_name,
296 project_id=self.project_id)
297 if not self.obj:
self =
self.obj = None
self.orchestrator =
self.orchestrator.get_vn_obj_if_present = >
self.vn_name = 'ctest-vn-52964085'
project_id undefined
self.project_id = '47d57234-702d-41b3-84c5-953acab6ffeb'
/contrail-test/fixtures/openstack.py in get_vn_obj_if_present(self=, vn_name='ctest-vn-52964085', option='orch', **kwargs={'project_id': '47d57234-702d-41b3-84c5-953acab6ffeb'})
182
183 def get_vn_obj_if_present(self, vn_name, option='orch', **kwargs):
184 return self.quantum_h.get_vn_obj_if_present(vn_name, **kwargs)
185
186 def get_vn_obj_from_id(self, vn_id):
self =
self.quantum_h =
self.quantum_h.get_vn_obj_if_present = >
vn_name = 'ctest-vn-52964085'
kwargs = {'project_id': '47d57234-702d-41b3-84c5-953acab6ffeb'}
/contrail-test/fixtures/quantum_test.py in get_vn_obj_if_present(self=, vn_name='ctest-vn-52964085', project_id='47d57234-702d-41b3-84c5-953acab6ffeb', router_external=True)
274 query_dict['name'] = vn_name
275 try:
276 net_rsp = self.obj.list_networks(**query_dict)['networks']
277 if net_rsp:
278 return self.obj.show_network(network=net_rsp[0]['id'])
net_rsp undefined
self =
self.obj =
self.obj.list_networks = >
query_dict = {'name': 'ctest-vn-52964085', 'router:external': True, 'tenant_id': '47d57234-702d-41b3-84c5-953acab6ffeb'}
/usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py in list_networks(self=, retrieve_all=True, **_params={'name': 'ctest-vn-52964085', 'router:external': True, 'tenant_id': '47d57234-702d-41b3-84c5-953acab6ffeb'})
815 """Fetches a list of all networks for a project."""
816 # Pass filters in "params" argument to do_request
817 return self.list('networks', self.networks_path, retrieve_all,
818 **_params)
819
self =
self.list = >
self.networks_path = '/networks'
retrieve_all = True
_params = {'name': 'ctest-vn-52964085', 'router:external': True, 'tenant_id': '47d57234-702d-41b3-84c5-953acab6ffeb'}
/usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py in list(self=, collection='networks', path='/networks', retrieve_all=True, **params={'name': 'ctest-vn-52964085', 'router:external': True, 'tenant_id': '47d57234-702d-41b3-84c5-953acab6ffeb'})
367 res = []
368 request_ids = []
369 for r in self._pagination(collection, path, **params):
370 res.extend(r[collection])
371 request_ids.extend(r.request_ids)
r undefined
self =
self._pagination = >
collection = 'networks'
path = '/networks'
params = {'name': 'ctest-vn-52964085', 'router:external': True, 'tenant_id': '47d57234-702d-41b3-84c5-953acab6ffeb'}
/usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py in _pagination(self=, collection='networks', path='/networks', **params={'name': 'ctest-vn-52964085', 'router:external': True, 'tenant_id': '47d57234-702d-41b3-84c5-953acab6ffeb'})
382 next = True
383 while next:
384 res = self.get(path, params=params)
385 yield res
386 next = False
res undefined
self =
self.get = >
path = '/networks'
params = {'name': 'ctest-vn-52964085', 'router:external': True, 'tenant_id': '47d57234-702d-41b3-84c5-953acab6ffeb'}
/usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py in get(self=, action='/networks', body=None, headers=None, params={'name': 'ctest-vn-52964085', 'router:external': True, 'tenant_id': '47d57234-702d-41b3-84c5-953acab6ffeb'})
351
352 def get(self, action, body=None, headers=None, params=None):
353 return self.retry_request("GET", action, body=body,
354 headers=headers, params=params)
355
self =
self.retry_request = >
action = '/networks'
body = None
headers = None
params = {'name': 'ctest-vn-52964085', 'router:external': True, 'tenant_id': '47d57234-702d-41b3-84c5-953acab6ffeb'}
/usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py in retry_request(self=, method='GET', action='/networks', body=None, headers=None, params={'name': 'ctest-vn-52964085', 'router:external': True, 'tenant_id': '47d57234-702d-41b3-84c5-953acab6ffeb'})
328 for i in range(max_attempts):
329 try:
330 return self.do_request(method, action, body=body,
331 headers=headers, params=params)
332 except (exceptions.ConnectionFailed, ksa_exc.ConnectionError):
self =
self.do_request = >
method = 'GET'
action = '/networks'
body = None
headers = None
params = {'name': 'ctest-vn-52964085', 'router:external': True, 'tenant_id': '47d57234-702d-41b3-84c5-953acab6ffeb'}
/usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py in do_request(self=, method='GET', action='/v2.0/networks?tenant_id=47d57234-702d-41b3-84c5...feb&router%3Aexternal=True&name=ctest-vn-52964085', body=None, headers=None, params={'name': b'ctest-vn-52964085', 'router:external': True, 'tenant_id': b'47d57234-702d-41b3-84c5-953acab6ffeb'})
279 body = self.serialize(body)
280
281 resp, replybody = self.httpclient.do_request(action, method, body=body,
282 headers=headers)
283
resp undefined
replybody undefined
self =
self.httpclient =
self.httpclient.do_request = >
action = '/v2.0/networks?tenant_id=47d57234-702d-41b3-84c5...feb&router%3Aexternal=True&name=ctest-vn-52964085'
method = 'GET'
body = None
headers = None
/usr/local/lib/python3.9/site-packages/neutronclient/client.py in do_request(self=, url='/v2.0/networks?tenant_id=47d57234-702d-41b3-84c5...feb&router%3Aexternal=True&name=ctest-vn-52964085', method='GET', **kwargs={'authenticated': True, 'body': None, 'headers': None})
338 kwargs.setdefault('authenticated', True)
339 self._check_uri_length(url)
340 return self.request(url, method, **kwargs)
341
342 @property
self =
self.request = >
url = '/v2.0/networks?tenant_id=47d57234-702d-41b3-84c5...feb&router%3Aexternal=True&name=ctest-vn-52964085'
method = 'GET'
kwargs = {'authenticated': True, 'body': None, 'headers': None}
/usr/local/lib/python3.9/site-packages/neutronclient/client.py in request(self=, *args=('/v2.0/networks?tenant_id=47d57234-702d-41b3-84c5...feb&router%3Aexternal=True&name=ctest-vn-52964085', 'GET'), **kwargs={'authenticated': True, 'data': None, 'headers': {'Accept': 'application/json', 'User-Agent': 'python-neutronclient', 'X-Auth-Token': 'gAAAAABpzVz98_S9zbGw6sddZpxKtcEHe97JEsn1ARSZzo8V...2hYH3IrLgXvxksunj_NTUQKKa5h8q8DaVQ96ldCtq-LLCHp_I'}, 'raise_exc': False})
326
327 kwargs['headers'] = headers
328 resp = super(SessionClient, self).request(*args, **kwargs)
329 return resp, resp.text
330
resp undefined
builtinsuper =
global SessionClient =
self =
).request = >
args = ('/v2.0/networks?tenant_id=47d57234-702d-41b3-84c5...feb&router%3Aexternal=True&name=ctest-vn-52964085', 'GET')
kwargs = {'authenticated': True, 'data': None, 'headers': {'Accept': 'application/json', 'User-Agent': 'python-neutronclient', 'X-Auth-Token': 'gAAAAABpzVz98_S9zbGw6sddZpxKtcEHe97JEsn1ARSZzo8V...2hYH3IrLgXvxksunj_NTUQKKa5h8q8DaVQ96ldCtq-LLCHp_I'}, 'raise_exc': False}
/usr/local/lib/python3.9/site-packages/keystoneauth1/adapter.py in request(self=, url='/v2.0/networks?tenant_id=47d57234-702d-41b3-84c5...feb&router%3Aexternal=True&name=ctest-vn-52964085', method='GET', **kwargs={'authenticated': True, 'data': None, 'endpoint_filter': {'interface': 'public', 'region_name': 'RegionOne', 'service_type': 'network'}, 'headers': {'Accept': 'application/json', 'User-Agent': 'python-neutronclient', 'X-Auth-Token': 'gAAAAABpzVz98_S9zbGw6sddZpxKtcEHe97JEsn1ARSZzo8V...2hYH3IrLgXvxksunj_NTUQKKa5h8q8DaVQ96ldCtq-LLCHp_I'}, 'raise_exc': False, 'rate_semaphore': , 'user_agent': 'python-neutronclient'})
246 kwargs.setdefault('raise_exc', self.raise_exc)
247
248 return self.session.request(url, method, **kwargs)
249
250 def get_token(self, auth=None):
self =
self.session =
self.session.request = >
url = '/v2.0/networks?tenant_id=47d57234-702d-41b3-84c5...feb&router%3Aexternal=True&name=ctest-vn-52964085'
method = 'GET'
kwargs = {'authenticated': True, 'data': None, 'endpoint_filter': {'interface': 'public', 'region_name': 'RegionOne', 'service_type': 'network'}, 'headers': {'Accept': 'application/json', 'User-Agent': 'python-neutronclient', 'X-Auth-Token': 'gAAAAABpzVz98_S9zbGw6sddZpxKtcEHe97JEsn1ARSZzo8V...2hYH3IrLgXvxksunj_NTUQKKa5h8q8DaVQ96ldCtq-LLCHp_I'}, 'raise_exc': False, 'rate_semaphore': , 'user_agent': 'python-neutronclient'}
/usr/local/lib/python3.9/site-packages/keystoneauth1/session.py in request(self=, url='http://10.0.0.22:9696/v2.0/networks?tenant_id=47...feb&router%3Aexternal=True&name=ctest-vn-52964085', method='GET', json=None, original_ip=None, user_agent='python-neutronclient', redirect=30, authenticated=True, endpoint_filter={'interface': 'public', 'region_name': 'RegionOne', 'service_type': 'network'}, auth=None, requests_auth=None, raise_exc=False, allow_reauth=True, log=True, endpoint_override=None, connect_retries=0, logger=, allow=None, client_name=None, client_version=None, microversion=None, microversion_service_type=None, status_code_retries=0, retriable_status_codes=[503], rate_semaphore=, global_request_id=None, connect_retry_delay=None, status_code_retry_delay=None, **kwargs={'allow_redirects': False, 'cert': (None, None), 'data': None, 'headers': {'Accept': 'application/json', 'User-Agent': 'python-neutronclient', 'X-Auth-Token': 'gAAAAABpzVz98_S9zbGw6sddZpxKtcEHe97JEsn1ARSZzo8V...2hYH3IrLgXvxksunj_NTUQKKa5h8q8DaVQ96ldCtq-LLCHp_I'}, 'verify': False})
911 kwargs.update(connection_params)
912
913 resp = send(**kwargs)
914
915 # log callee and caller request-id for each api call
resp undefined
send = functools.partial()
kwargs = {'allow_redirects': False, 'cert': (None, None), 'data': None, 'headers': {'Accept': 'application/json', 'User-Agent': 'python-neutronclient', 'X-Auth-Token': 'gAAAAABpzVz98_S9zbGw6sddZpxKtcEHe97JEsn1ARSZzo8V...2hYH3IrLgXvxksunj_NTUQKKa5h8q8DaVQ96ldCtq-LLCHp_I'}, 'verify': False}
/usr/local/lib/python3.9/site-packages/keystoneauth1/session.py in _send_request(self=, url='http://10.0.0.22:9696/v2.0/networks?tenant_id=47...feb&router%3Aexternal=True&name=ctest-vn-52964085', method='GET', redirect=30, log=True, logger=, split_loggers=None, connect_retries=0, status_code_retries=0, retriable_status_codes=[503], rate_semaphore=, connect_retry_delays=, status_code_retry_delays=, **kwargs={'allow_redirects': False, 'cert': (None, None), 'data': None, 'headers': {'Accept': 'application/json', 'User-Agent': 'python-neutronclient', 'X-Auth-Token': 'gAAAAABpzVz98_S9zbGw6sddZpxKtcEHe97JEsn1ARSZzo8V...2hYH3IrLgXvxksunj_NTUQKKa5h8q8DaVQ96ldCtq-LLCHp_I'}, 'verify': False})
1018 # and firewall blocking.
1019 msg = 'Unable to establish connection to %s: %s' % (url, e)
1020 raise exceptions.ConnectFailure(msg)
1021 except requests.exceptions.RequestException as e:
1022 msg = 'Unexpected exception for %(url)s: %(error)s' % {
global exceptions =
exceptions.ConnectFailure =
msg = "Unable to establish connection to http://10.0.0....new connection: [Errno 111] Connection refused'))"
ConnectFailure: Unable to establish connection to http://10.0.0.22:9696/v2.0/networks?tenant_id=47d57234-702d-41b3-84c5-953acab6ffeb&router%3Aexternal=True&name=ctest-vn-52964085: HTTPConnectionPool(host='10.0.0.22', port=9696): Max retries exceeded with url: /v2.0/networks?tenant_id=47d57234-702d-41b3-84c5-953acab6ffeb&router%3Aexternal=True&name=ctest-vn-52964085 (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused'))
__cause__ = None
__class__ =
__context__ = ConnectionError(MaxRetryError("HTTPConnectionPoo... connection: [Errno 111] Connection refused'))"))
__delattr__ =
__dict__ = {'message': "Unable to establish connection to http://10.0.0....new connection: [Errno 111] Connection refused'))"}
__dir__ =
__doc__ = None
__eq__ =
__format__ =
__ge__ =
__getattribute__ =
__gt__ =
__hash__ =
__init__ =
__init_subclass__ =
__le__ =
__lt__ =
__module__ = 'keystoneauth1.exceptions.connection'
__ne__ =
__new__ =
__reduce__ =
__reduce_ex__ =
__repr__ =
__setattr__ =
__setstate__ =
__sizeof__ =
__str__ =
__subclasshook__ =
__suppress_context__ = False
__traceback__ =
__weakref__ = None
args = ("Unable to establish connection to http://10.0.0....new connection: [Errno 111] Connection refused'))",)
message = "Unable to establish connection to http://10.0.0....new connection: [Errno 111] Connection refused'))"
with_traceback =
The above is a description of an error in a Python program. Here is
the original traceback:
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/urllib3/connection.py", line 159, in _new_conn
conn = connection.create_connection(
File "/usr/local/lib/python3.9/site-packages/urllib3/util/connection.py", line 84, in create_connection
raise err
File "/usr/local/lib/python3.9/site-packages/urllib3/util/connection.py", line 74, in create_connection
sock.connect(sa)
File "/usr/local/lib64/python3.9/site-packages/gevent/_socketcommon.py", line 590, in connect
self._internal_connect(address)
File "/usr/local/lib64/python3.9/site-packages/gevent/_socketcommon.py", line 634, in _internal_connect
raise _SocketError(err, strerror(err))
ConnectionRefusedError: [Errno 111] Connection refused
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 670, in urlopen
httplib_response = self._make_request(
File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 392, in _make_request
conn.request(method, url, **httplib_request_kw)
File "/usr/lib64/python3.9/http/client.py", line 1285, in request
self._send_request(method, url, body, headers, encode_chunked)
File "/usr/lib64/python3.9/http/client.py", line 1331, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "/usr/lib64/python3.9/http/client.py", line 1280, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "/usr/lib64/python3.9/http/client.py", line 1040, in _send_output
self.send(msg)
File "/usr/lib64/python3.9/http/client.py", line 980, in send
self.connect()
File "/usr/local/lib/python3.9/site-packages/urllib3/connection.py", line 187, in connect
conn = self._new_conn()
File "/usr/local/lib/python3.9/site-packages/urllib3/connection.py", line 171, in _new_conn
raise NewConnectionError(
urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: [Errno 111] Connection refused
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/local/lib/python3.9/site-packages/urllib3/connectionpool.py", line 726, in urlopen
retries = retries.increment(
File "/usr/local/lib/python3.9/site-packages/urllib3/util/retry.py", line 446, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='10.0.0.22', port=9696): Max retries exceeded with url: /v2.0/networks?tenant_id=47d57234-702d-41b3-84c5-953acab6ffeb&router%3Aexternal=True&name=ctest-vn-52964085 (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/keystoneauth1/session.py", line 1004, in _send_request
resp = self.session.request(method, url, **kwargs)
File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.9/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.9/site-packages/requests/adapters.py", line 516, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='10.0.0.22', port=9696): Max retries exceeded with url: /v2.0/networks?tenant_id=47d57234-702d-41b3-84c5-953acab6ffeb&router%3Aexternal=True&name=ctest-vn-52964085 (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/contrail-test/tcutils/wrappers.py", line 80, in wrapper
result = function(self, *args, **kwargs)
File "/contrail-test/scripts/neutron/test_routers_basic.py", line 35, in test_basic_snat_behavior_without_external_connectivity
vn1_fixture = self.create_vn()
File "/contrail-test/common/base.py", line 191, in create_vn
vn_fixture = self.create_only_vn(vn_name=vn_name,
File "/contrail-test/common/base.py", line 186, in create_only_vn
vn_fixture.setUp()
File "/contrail-test/fixtures/vn_test.py", line 439, in setUp
self.create()
File "/contrail-test/fixtures/vn_test.py", line 452, in create
self._create_vn_orch()
File "/contrail-test/fixtures/vn_test.py", line 295, in _create_vn_orch
self.obj = self.orchestrator.get_vn_obj_if_present(self.vn_name,
File "/contrail-test/fixtures/openstack.py", line 184, in get_vn_obj_if_present
return self.quantum_h.get_vn_obj_if_present(vn_name, **kwargs)
File "/contrail-test/fixtures/quantum_test.py", line 276, in get_vn_obj_if_present
net_rsp = self.obj.list_networks(**query_dict)['networks']
File "/usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py", line 817, in list_networks
return self.list('networks', self.networks_path, retrieve_all,
File "/usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py", line 369, in list
for r in self._pagination(collection, path, **params):
File "/usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py", line 384, in _pagination
res = self.get(path, params=params)
File "/usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py", line 353, in get
return self.retry_request("GET", action, body=body,
File "/usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py", line 330, in retry_request
return self.do_request(method, action, body=body,
File "/usr/local/lib/python3.9/site-packages/neutronclient/v2_0/client.py", line 281, in do_request
resp, replybody = self.httpclient.do_request(action, method, body=body,
File "/usr/local/lib/python3.9/site-packages/neutronclient/client.py", line 340, in do_request
return self.request(url, method, **kwargs)
File "/usr/local/lib/python3.9/site-packages/neutronclient/client.py", line 328, in request
resp = super(SessionClient, self).request(*args, **kwargs)
File "/usr/local/lib/python3.9/site-packages/keystoneauth1/adapter.py", line 248, in request
return self.session.request(url, method, **kwargs)
File "/usr/local/lib/python3.9/site-packages/keystoneauth1/session.py", line 913, in request
resp = send(**kwargs)
File "/usr/local/lib/python3.9/site-packages/keystoneauth1/session.py", line 1020, in _send_request
raise exceptions.ConnectFailure(msg)
keystoneauth1.exceptions.connection.ConnectFailure: Unable to establish connection to http://10.0.0.22:9696/v2.0/networks?tenant_id=47d57234-702d-41b3-84c5-953acab6ffeb&router%3Aexternal=True&name=ctest-vn-52964085: HTTPConnectionPool(host='10.0.0.22', port=9696): Max retries exceeded with url: /v2.0/networks?tenant_id=47d57234-702d-41b3-84c5-953acab6ffeb&router%3Aexternal=True&name=ctest-vn-52964085 (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused'))
2026-04-01 17:59:27,847 - DEBUG - No XMPP flaps were noticed during the test
2026-04-01 17:59:27,847 - INFO -
2026-04-01 17:59:27,847 - INFO - END TEST : test_basic_snat_behavior_without_external_connectivity : FAILED[0:00:01]
2026-04-01 17:59:27,847 - INFO - --------------------------------------------------------------------------------
2026-04-01 17:59:28,524 - INFO - Deleted project: ctest-TestRoutersBasic-33298887, ID : 47d57234-702d-41b3-84c5-953acab6ffeb