Skip to content

[3.4.0.0] 'ClientConnection' object has no attribute 'open' or 'close' #1260

@chanchiwai-ray

Description

@chanchiwai-ray

Description

It seems this issue is related to the changes in websocket and maybe fixed in juju 3.6, but not port back to older version of juju? see #1208

Urgency

Casually reporting

Python-libjuju version

3.4.0.0

Juju version

N/A

Reproduce / Test

# Using Python 3.10.14  
python3 -m venv juju
source juju/bin/activate
pip install "juju>=3.0,<3.5"
pip freeze
bcrypt==4.3.0
cachetools==5.5.2
certifi==2025.1.31
cffi==1.17.1
charset-normalizer==3.4.1
cryptography==44.0.2
durationpy==0.9
google-auth==2.38.0
hvac==2.3.0
idna==3.10
juju==3.4.0.0
kubernetes==32.0.1
macaroonbakery==1.3.4
mypy-extensions==1.0.0
oauthlib==3.2.2
packaging==24.2
paramiko==3.5.1
protobuf==6.30.2
pyasn1==0.6.1
pyasn1_modules==0.4.2
pycparser==2.22
pymacaroons==0.13.0
PyNaCl==1.5.0
pyRFC3339==1.1
python-dateutil==2.9.0.post0
pytz==2025.2
PyYAML==6.0.2
requests==2.32.3
requests-oauthlib==2.0.0
rsa==4.9
six==1.17.0
toposort==1.10
typing-inspect==0.9.0
typing_extensions==4.13.0
urllib3==2.3.0
websocket-client==1.8.0
websockets==15.0.1

Then, run

from juju.model import Model
model = Model()
await model.connect_current()

Output

Traceback (most recent call last):
  File "/home/raychan/Work/canonical/repos/charmed-openstack-upgrader/juju/lib/python3.10/site-packages/juju/client/connection.py", line 873, in _connect_with_login
    result = (await self.login())['response']
  File "/home/raychan/Work/canonical/repos/charmed-openstack-upgrader/juju/lib/python3.10/site-packages/juju/client/connection.py", line 970, in login
    return await self.rpc({
  File "/home/raychan/Work/canonical/repos/charmed-openstack-upgrader/juju/lib/python3.10/site-packages/juju/client/connection.py", line 643, in rpc
    if self.monitor.status == Monitor.DISCONNECTED:
  File "/home/raychan/Work/canonical/repos/charmed-openstack-upgrader/juju/lib/python3.10/site-packages/juju/client/connection.py", line 224, in status
    if stopped or not connection._ws.open:
AttributeError: 'ClientConnection' object has no attribute 'open'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/raychan/.pyenv/versions/3.10.14/lib/python3.10/concurrent/futures/_base.py", line 458, in result
    return self.__get_result()
  File "/home/raychan/.pyenv/versions/3.10.14/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result
    raise self._exception
  File "<console>", line 1, in <module>
  File "/home/raychan/Work/canonical/repos/charmed-openstack-upgrader/juju/lib/python3.10/site-packages/juju/model.py", line 719, in connect_current
    return await self.connect()
  File "/home/raychan/Work/canonical/repos/charmed-openstack-upgrader/juju/lib/python3.10/site-packages/juju/model.py", line 667, in connect
    model_uuid = await self._connector.connect_model(model_name, **kwargs)
  File "/home/raychan/Work/canonical/repos/charmed-openstack-upgrader/juju/lib/python3.10/site-packages/juju/client/connector.py", line 205, in connect_model
    await self.connect(**kwargs)
  File "/home/raychan/Work/canonical/repos/charmed-openstack-upgrader/juju/lib/python3.10/site-packages/juju/client/connector.py", line 100, in connect
    self._connection = await Connection.connect(**kwargs)
  File "/home/raychan/Work/canonical/repos/charmed-openstack-upgrader/juju/lib/python3.10/site-packages/juju/client/connection.py", line 355, in connect
    await self._connect_with_redirect([_ep])
  File "/home/raychan/Work/canonical/repos/charmed-openstack-upgrader/juju/lib/python3.10/site-packages/juju/client/connection.py", line 901, in _connect_with_redirect
    login_result = await self._connect_with_login(endpoints)
  File "/home/raychan/Work/canonical/repos/charmed-openstack-upgrader/juju/lib/python3.10/site-packages/juju/client/connection.py", line 897, in _connect_with_login
    await self.close()
  File "/home/raychan/Work/canonical/repos/charmed-openstack-upgrader/juju/lib/python3.10/site-packages/juju/client/connection.py", line 452, in close
    if self._ws and not self._ws.closed:
AttributeError: 'ClientConnection' object has no attribute 'closed'

Metadata

Metadata

Assignees

No one assigned

    Labels

    kind/bugindicates a bug in the project

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions