Open dreibh opened 5 years ago
I noticed probably the same failure in another part of my charm, this time with "action-fail" returning status 1. That is, probably the issue is not the handling of parameters but some problem with the state of the Juju instance?
The container for controlling the VDU seems to use juju version 2.3.7, i.e. action-get is /var/lib/juju/tools/2.3.7-xenial-amd64/action-get . Could the Juju version in the container be the problem? I am using an OSM Release SIX setup.
When checking the contents of the Juju container for the VDU, I noticed the following:
So, I tried to update the Python packages: apt install -y pkg-config libcurl4-openssl-dev libcairo2-dev libssl-dev libgirepository1.0-dev pip list --outdated --format=freeze | grep -v '^-e' | cut -d = -f 1 | xargs -n1 pip install -U
This leaves 4 packages are installed by apt-get, which pip cannot upgrade:
Package Version Latest Type
blinker 1.3 1.4 sdist pycurl 7.43.0 7.43.0.3 sdist pygobject 3.20.0 3.34.0 sdist pyserial 3.0.1 3.4 wheel
So, may be the Python installation inside the container needs a look whether there is some incompatibility between "apt-get"-installed and "pip"-installed packages?
However, this does not solve my issue with "action-get". After upgrading the packages, I tried to run my configuration commands again => same problem.
Would you be willing to share the charm layer you've written with me? It'll be easier to debug if I can look at your code as a whole. If so, you can email it to me at adam.israel@canonical.com. I'm currently at the OSM F2F/Hackfest #8 but I'll take a look as soon as I can.
Trying to get the value of a parameter with action_get() fails with an exception, since the call to the program action-get fails with exit code 1. However, there is no information about what went wrong with the call: subprocess.CalledProcessError: Command '['action-get', 'cassandra-server-ip', '--format=json']' returned non-zero exit status 1
Is there any possibility to get some information about what is going wrong with "action-get"?
My Charm:
action.yaml: ... configure-hss: description: Configures the HSS params: cassandra-server-ip: description: Cassandra Server IP data-type: string default: 172.16.6.129 required:
The code: ... @when('actions.configure-cassandra') ... def configure_cassandra(): cassandraServerIP = action_get('cassandra-server-ip') ...
VNF: ...
====== Juju Charm ===============================================
...
Juju log: 2019-11-18 10:26:06 DEBUG update-status Traceback (most recent call last): 2019-11-18 10:26:06 DEBUG update-status File "/var/lib/juju/agents/unit-simulamet-oai-epc-b-hss-aa-0/charm/hooks/update-status", line 22, in
2019-11-18 10:26:06 DEBUG update-status main()
2019-11-18 10:26:06 DEBUG update-status File "/usr/local/lib/python3.5/dist-packages/charms/reactive/init.py", line 74, in main
2019-11-18 10:26:06 DEBUG update-status bus.dispatch(restricted=restricted_mode)
2019-11-18 10:26:06 DEBUG update-status File "/usr/local/lib/python3.5/dist-packages/charms/reactive/bus.py", line 390, in dispatch
2019-11-18 10:26:06 DEBUG update-status _invoke(other_handlers)
2019-11-18 10:26:06 DEBUG update-status File "/usr/local/lib/python3.5/dist-packages/charms/reactive/bus.py", line 359, in _invoke
2019-11-18 10:26:06 DEBUG update-status handler.invoke()
2019-11-18 10:26:06 DEBUG update-status File "/usr/local/lib/python3.5/dist-packages/charms/reactive/bus.py", line 181, in invoke
2019-11-18 10:26:06 DEBUG update-status self._action(args)
2019-11-18 10:26:06 DEBUG update-status File "/var/lib/juju/agents/unit-simulamet-oai-epc-b-hss-aa-0/charm/reactive/hsscharm.py", line 197, in configure_cassandra
2019-11-18 10:26:06 DEBUG update-status cassandraServerIP = action_get('cassandra-server-ip')
2019-11-18 10:26:06 DEBUG update-status File "/usr/local/lib/python3.5/dist-packages/charmhelpers/core/hookenv.py", line 82, in wrapper
2019-11-18 10:26:06 DEBUG update-status res = func(args, kwargs)
2019-11-18 10:26:06 DEBUG update-status File "/usr/local/lib/python3.5/dist-packages/charmhelpers/core/hookenv.py", line 974, in action_get
2019-11-18 10:26:06 DEBUG update-status action_data = json.loads(subprocess.check_output(cmd).decode('UTF-8'))
2019-11-18 10:26:06 DEBUG update-status File "/usr/lib/python3.5/subprocess.py", line 626, in check_output
2019-11-18 10:26:06 DEBUG update-status kwargs).stdout
2019-11-18 10:26:06 DEBUG update-status File "/usr/lib/python3.5/subprocess.py", line 708, in run
2019-11-18 10:26:06 DEBUG update-status output=stdout, stderr=stderr)
2019-11-18 10:26:06 DEBUG update-status subprocess.CalledProcessError: Command '['action-get', 'cassandra-server-ip', '--format=json']' returned non-zero exit status 1
2019-11-18 10:26:06 ERROR juju.worker.uniter.operation runhook.go:113 hook "update-status" failed: exit status 1
The issue appears in 100% of the cases, i.e. I can reliably reproduce it. Also, trying to manually invoke the funtion (i.e.: juju run-action simulamet-oai-epc-b-hss-aa/0 configure-cassandra cassandra-server-ip=1.2.3.4) leads to the same issue.
Note, that my VNF applies the Juju charm as part of the VDU configuration. I am not sure whether this is important for the issue.