juju / theblues

Python library for the juju charmstore (v4)
GNU Lesser General Public License v3.0
5 stars 22 forks source link

Charm store / methods reject full entity IDs #44

Closed johnsca closed 7 years ago

johnsca commented 7 years ago

The output from CharmStore.entityId() cannot be used to reference a charm:

>>> from theblues.charmstore import CharmStore
>>> cs = CharmStore('https://api.jujucharms.com/v4')

>>> cs.entityId('wiki-simple')
'cs:bundle/wiki-simple-4'

>>> cs.entityId(cs.entityId('wiki-simple'))
Traceback (most recent call last):
  File "/home/johnsca/juju/python-libjuju/.tox/py35/lib/python3.5/site-packages/theblues/charmstore.py", line 57, in _get
    response.raise_for_status()
  File "/home/johnsca/juju/python-libjuju/.tox/py35/lib/python3.5/site-packages/requests/models.py", line 862, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://api.jujucharms.com/v4/cs:bundle/wiki-simple-4/meta/any

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/johnsca/juju/python-libjuju/.tox/py35/lib/python3.5/site-packages/theblues/charmstore.py", line 325, in entityId
    data = self._get(_add_channel(url, channel))
  File "/home/johnsca/juju/python-libjuju/.tox/py35/lib/python3.5/site-packages/theblues/charmstore.py", line 61, in _get
    raise EntityNotFound(url)
theblues.errors.EntityNotFound: https://api.jujucharms.com/v4/cs:bundle/wiki-simple-4/meta/any

>>> cs.files('wiki-simple', filename='bundle.yaml')
'https://api.jujucharms.com/v4/wiki-simple/archive/bundle.yaml'

>>> cs.files(cs.entityId('wiki-simple'), filename='bundle.yaml')
Traceback (most recent call last):
  File "/home/johnsca/juju/python-libjuju/.tox/py35/lib/python3.5/site-packages/theblues/charmstore.py", line 57, in _get
    response.raise_for_status()
  File "/home/johnsca/juju/python-libjuju/.tox/py35/lib/python3.5/site-packages/requests/models.py", line 862, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://api.jujucharms.com/v4/cs:bundle/wiki-simple-4/meta/manifest

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/johnsca/juju/python-libjuju/.tox/py35/lib/python3.5/site-packages/theblues/charmstore.py", line 273, in files
    manifest = self._get(manifest_url)
  File "/home/johnsca/juju/python-libjuju/.tox/py35/lib/python3.5/site-packages/theblues/charmstore.py", line 61, in _get
    raise EntityNotFound(url)
theblues.errors.EntityNotFound: https://api.jujucharms.com/v4/cs:bundle/wiki-simple-4/meta/manifest