When i do model.create_offer multiple times, i get exception:
kubernetes.client.exceptions.ApiException: (0)
Reason: [Errno 2] No such file or directory
Code example:
@pytest.mark.group(1)
@pytest.mark.abort_on_fail
async def test_cos(ops_test: OpsTest):
await ops_test.model.deploy(
"cos-lite",
trust=True,
)
await ops_test.model.create_offer("grafana:grafana-dashboard", "grafana-dashboards") // this executes successfully
await ops_test.model.create_offer("loki:logging", "loki-logging") // and this causes error
await ops_test.model.create_offer("prometheus:receive-remote-write", "prometheus-receive-remote-write")
Full traceback:
Traceback (most recent call last):
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/kubernetes/stream/ws_client.py", line 559, in portforward_call
websocket = create_websocket(configuration, url, headers)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/kubernetes/stream/ws_client.py", line 489, in create_websocket
websocket.connect(url, **connect_opt)
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/websocket/_core.py", line 256, in connect
self.sock, addrs = connect(
^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/websocket/_http.py", line 147, in connect
sock = _ssl_socket(sock, options.sslopt, hostname)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/websocket/_http.py", line 307, in _ssl_socket
sock = _wrap_sni_socket(sock, sslopt, hostname, check_hostname)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/websocket/_http.py", line 247, in _wrap_sni_socket
context.load_verify_locations(cafile=cafile, capath=capath)
FileNotFoundError: [Errno 2] No such file or directory
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/_pytest/runner.py", line 340, in from_call
result: Optional[TResult] = func()
^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/_pytest/runner.py", line 240, in <lambda>
lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/pluggy/_hooks.py", line 501, in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/pluggy/_manager.py", line 119, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/pluggy/_callers.py", line 138, in _multicall
raise exception.with_traceback(exception.__traceback__)
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/pluggy/_callers.py", line 121, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/_pytest/threadexception.py", line 87, in pytest_runtest_call
yield from thread_exception_runtest_hook()
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/_pytest/threadexception.py", line 63, in thread_exception_runtest_hook
yield
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/pluggy/_callers.py", line 121, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/_pytest/unraisableexception.py", line 90, in pytest_runtest_call
yield from unraisable_exception_runtest_hook()
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/_pytest/unraisableexception.py", line 65, in unraisable_exception_runtest_hook
yield
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/pluggy/_callers.py", line 121, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/_pytest/logging.py", line 849, in pytest_runtest_call
yield from self._runtest_for(item, "call")
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/_pytest/logging.py", line 832, in _runtest_for
yield
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/pluggy/_callers.py", line 121, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/_pytest/capture.py", line 883, in pytest_runtest_call
return (yield)
^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/pluggy/_callers.py", line 121, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/_pytest/skipping.py", line 256, in pytest_runtest_call
return (yield)
^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/pluggy/_callers.py", line 102, in _multicall
res = hook_impl.function(*args)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/_pytest/runner.py", line 182, in pytest_runtest_call
raise e
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/_pytest/runner.py", line 172, in pytest_runtest_call
item.runtest()
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/_pytest/python.py", line 1772, in runtest
self.ihook.pytest_pyfunc_call(pyfuncitem=self)
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/pluggy/_hooks.py", line 501, in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/pluggy/_manager.py", line 119, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/pluggy/_callers.py", line 181, in _multicall
return outcome.get_result()
^^^^^^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/pluggy/_result.py", line 99, in get_result
raise exc.with_traceback(exc.__traceback__)
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/pluggy/_callers.py", line 102, in _multicall
res = hook_impl.function(*args)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/_pytest/python.py", line 195, in pytest_pyfunc_call
result = testfunction(**testargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/pytest_asyncio/plugin.py", line 532, in inner
_loop.run_until_complete(task)
File "/usr/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/tests/integration/test_cos.py", line 19, in test_cos
await ops_test.model.create_offer("loki:logging", "loki-logging")
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/juju/model.py", line 2511, in create_offer
async with ConnectedController(self.connection()) as controller:
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/juju/controller.py", line 990, in __aenter__
await self._connect_direct(**kwargs)
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/juju/controller.py", line 169, in _connect_direct
await self._connector.connect(**kwargs)
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/juju/client/connector.py", line 100, in connect
self._connection = await Connection.connect(**kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/juju/client/connection.py", line 344, in connect
self.proxy.connect()
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/juju/client/proxy/kubernetes/proxy.py", line 54, in connect
self.port_forwarder = portforward(
^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/kubernetes/stream/stream.py", line 35, in _websocket_request
return api_method(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/kubernetes/client/api/core_v1_api.py", line 1142, in connect_get_namespaced_pod_portforward
return self.connect_get_namespaced_pod_portforward_with_http_info(name, namespace, **kwargs) # noqa: E501
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/kubernetes/client/api/core_v1_api.py", line 1229, in connect_get_namespaced_pod_portforward_with_http_info
return self.api_client.call_api(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/kubernetes/client/api_client.py", line 348, in call_api
return self.__call_api(resource_path, method,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/kubernetes/client/api_client.py", line 180, in __call_api
response_data = self.request(
^^^^^^^^^^^^^
File "/home/zvirovyi/postgresql-k8s-operator/.tox/integration/lib/python3.11/site-packages/kubernetes/stream/ws_client.py", line 562, in portforward_call
raise ApiException(status=0, reason=str(e))
kubernetes.client.exceptions.ApiException: (0)
Reason: [Errno 2] No such file or directory
When i do
model.create_offer
multiple times, i get exception:Code example:
Full traceback: