canonical / paas-app-charmer

2 stars 2 forks source link

hook failed: "config-changed" - cannot create directory: mkdir /flask/state: permission denied #22

Closed M7mdisk closed 1 month ago

M7mdisk commented 3 months ago

Bug Description

Following the tutorial to set up and charm simple-flask, after running the juju deploy ./charm/sample-flask_ubuntu-22.04-amd64.charm sample-flask --resource flask-app-image=localhost:32000/sample-flask:main the workload fails with the message hook failed: "config-changed".

Logs show the error: ops.pebble.PathError: permission-denied - cannot create directory: mkdir /flask/state: permission denied

I think I've followed the tutorial to a tee and didn't deviate from any of the commands.

To Reproduce

  1. Follow the tutorial until you reach the juju deploy ... step mentioned above.
  2. deployment fails

Environment

The environment is the one generated by the command multipass launch --cpus 4 --memory 8G --disk 50G --name charm-dev charm-dev, running charmcraft and rockcraft on the latest/edge track. using microk8s.

Relevant log output

juju debug-log:

unit-sample-flask-0: 14:47:13 ERROR juju.worker.uniter.operation hook "config-changed" (via hook dispatching script: dispatch) failed: exit status 1
unit-sample-flask-0: 14:52:14 DEBUG unit.sample-flask/0.juju-log ops 2.14.0 up and running.
unit-sample-flask-0: 14:52:14 DEBUG unit.sample-flask/0.juju-log Emitting Juju event config_changed.
unit-sample-flask-0: 14:52:14 ERROR unit.sample-flask/0.juju-log Uncaught exception while in charm code:
Traceback (most recent call last):
  File "/var/lib/juju/agents/unit-sample-flask-0/charm/./src/charm.py", line 30, in <module>
    ops.main.main(FlaskCharm)
  File "/var/lib/juju/agents/unit-sample-flask-0/charm/venv/ops/main.py", line 548, in main
    manager.run()
  File "/var/lib/juju/agents/unit-sample-flask-0/charm/venv/ops/main.py", line 527, in run
    self._emit()
  File "/var/lib/juju/agents/unit-sample-flask-0/charm/venv/ops/main.py", line 516, in _emit
    _emit_charm_event(self.charm, self.dispatcher.event_name)
  File "/var/lib/juju/agents/unit-sample-flask-0/charm/venv/ops/main.py", line 147, in _emit_charm_event
    event_to_emit.emit(*args, **kwargs)
  File "/var/lib/juju/agents/unit-sample-flask-0/charm/venv/ops/framework.py", line 348, in emit
    framework._emit(event)
  File "/var/lib/juju/agents/unit-sample-flask-0/charm/venv/ops/framework.py", line 860, in _emit
    self._reemit(event_path)
  File "/var/lib/juju/agents/unit-sample-flask-0/charm/venv/ops/framework.py", line 950, in _reemit
    custom_handler(event)
  File "/var/lib/juju/agents/unit-sample-flask-0/charm/venv/paas_app_charmer/_gunicorn/charm.py", line 135, in _on_config_changed
    self.restart()
  File "/var/lib/juju/agents/unit-sample-flask-0/charm/venv/paas_app_charmer/_gunicorn/charm.py", line 197, in restart
    self._wsgi_app.restart()
  File "/var/lib/juju/agents/unit-sample-flask-0/charm/venv/paas_app_charmer/_gunicorn/wsgi_app.py", line 104, in restart
    self._container.add_layer("charm", self._wsgi_layer(), combine=True)
  File "/var/lib/juju/agents/unit-sample-flask-0/charm/venv/paas_app_charmer/_gunicorn/wsgi_app.py", line 95, in _wsgi_layer
    self._container.push(original_services_file, json.dumps(services), make_dirs=True)
  File "/var/lib/juju/agents/unit-sample-flask-0/charm/venv/ops/model.py", line 2390, in push
    self._pebble.push(
  File "/var/lib/juju/agents/unit-sample-flask-0/charm/venv/ops/pebble.py", line 2362, in push
    self._raise_on_path_error(typing.cast('_FilesResponse', resp), path)
  File "/var/lib/juju/agents/unit-sample-flask-0/charm/venv/ops/pebble.py", line 2305, in _raise_on_path_error
    raise PathError(error['kind'], error['message'])
ops.pebble.PathError: permission-denied - cannot create directory: mkdir /flask/state: permission denied
unit-sample-flask-0: 14:52:15 ERROR juju.worker.uniter.operation hook "config-changed" (via hook dispatching script: dispatch) failed: exit status 1
(repeating a bunch of times)

Additional context

Happy to provide any other logs to help with debugging

javierdelapuente commented 1 month ago

@M7mdisk Do you know the juju version that was failing? There is a permissions problem in juju 3.5.1 (fixed in juju 3.5.2)