latest version is broken: nagios_plugin3 dependency not found

Bug #1980764 reported by Rodrigo Barbieri
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
charm-openstack-service-checks
Fix Released
Critical
Robert Gildein

Bug Description

When deploying the latest version (latest/edge rev 13 commit b43c26e) from charmhub the error below is encountered. Apparently there is a missing python file named nagios_plugin3, which I suspect to be [1].

[1] https://git.launchpad.net/nrpe-charm/plain/files/nagios_plugin3.py

2022-07-05 16:20:58 ERROR unit.openstack-service-checks/1.juju-log server.go:327 Hook error:
Traceback (most recent call last):
  File "/var/lib/juju/agents/unit-openstack-service-checks-1/.venv/lib/python3.8/site-packages/charms/reactive/__init__.py", line 71, in main
    bus.discover()
  File "/var/lib/juju/agents/unit-openstack-service-checks-1/.venv/lib/python3.8/site-packages/charms/reactive/bus.py", line 426, in discover
    _register_handlers_from_file(search_path, filepath)
  File "/var/lib/juju/agents/unit-openstack-service-checks-1/.venv/lib/python3.8/site-packages/charms/reactive/bus.py", line 466, in _register_handlers_from_file
    _load_module(root, filepath)
  File "/var/lib/juju/agents/unit-openstack-service-checks-1/.venv/lib/python3.8/site-packages/charms/reactive/bus.py", line 444, in _load_module
    return importlib.import_module(package + module)
  File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 848, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/var/lib/juju/agents/unit-openstack-service-checks-1/charm/reactive/openstack_service_checks.py", line 33, in <module>
    from lib_openstack_service_checks import (
  File "/var/lib/juju/agents/unit-openstack-service-checks-1/charm/lib/lib_openstack_service_checks.py", line 21, in <module>
    from files.plugins.check_resources import RESOURCES, RESOURCES_BY_EXISTENCE
  File "/var/lib/juju/agents/unit-openstack-service-checks-1/charm/files/plugins/check_resources.py", line 13, in <module>
    from nagios_plugin3 import CriticalError, UnknownError, WarnError, try_check
ModuleNotFoundError: No module named 'nagios_plugin3'

2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 Traceback (most recent call last):
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 File "/var/lib/juju/agents/unit-openstack-service-checks-1/charm/hooks/upgrade-charm", line 22, in <module>
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 main()
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 File "/var/lib/juju/agents/unit-openstack-service-checks-1/.venv/lib/python3.8/site-packages/charms/reactive/__init__.py", line 71, in main
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 bus.discover()
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 File "/var/lib/juju/agents/unit-openstack-service-checks-1/.venv/lib/python3.8/site-packages/charms/reactive/bus.py", line 426, in discover
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 _register_handlers_from_file(search_path, filepath)
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 File "/var/lib/juju/agents/unit-openstack-service-checks-1/.venv/lib/python3.8/site-packages/charms/reactive/bus.py", line 466, in _register_handlers_from_file
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 _load_module(root, filepath)
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 File "/var/lib/juju/agents/unit-openstack-service-checks-1/.venv/lib/python3.8/site-packages/charms/reactive/bus.py", line 444, in _load_module
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 return importlib.import_module(package + module)
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 return _bootstrap._gcd_import(name[level:], package, level)
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 File "<frozen importlib._bootstrap>", line 991, in _find_and_load
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 File "<frozen importlib._bootstrap_external>", line 848, in exec_module
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 File "/var/lib/juju/agents/unit-openstack-service-checks-1/charm/reactive/openstack_service_checks.py", line 33, in <module>
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 from lib_openstack_service_checks import (
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 File "/var/lib/juju/agents/unit-openstack-service-checks-1/charm/lib/lib_openstack_service_checks.py", line 21, in <module>
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 from files.plugins.check_resources import RESOURCES, RESOURCES_BY_EXISTENCE
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 File "/var/lib/juju/agents/unit-openstack-service-checks-1/charm/files/plugins/check_resources.py", line 13, in <module>
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 from nagios_plugin3 import CriticalError, UnknownError, WarnError, try_check
2022-07-05 16:20:58 WARNING unit.openstack-service-checks/1.upgrade-charm logger.go:60 ModuleNotFoundError: No module named 'nagios_plugin3'

Tags: bseng-333 sts

Related branches

tags: added: sts
Changed in charm-openstack-service-checks:
importance: Undecided → Critical
status: New → In Progress
assignee: nobody → Robert Gildein (rgildein)
Revision history for this message
Robert Gildein (rgildein) wrote :
Revision history for this message
Paul Goins (vultaire) wrote :

Immediate workaround would be to install charm-nrpe as a subordinate. There appears to be an undocumented cross-charm dependency; the charm-o-s-c code imports a module which is installed by charm-nrpe.

Revision history for this message
Rodrigo Barbieri (rodrigo-barbieri2010) wrote :

@Paul, the immediate workaround has not worked for me unfortunately. That was the first thing I tried, and I even retried it today attempting to reinstall openstack-service-checks after having nrpe subordinate installed on the node. Despite the nagios_plugin3.py file being present in the VM, the error is still the same and wouldn't work.

root@juju-688852-fx-nagios-13:/var/log/juju# find / -name "nagios_plugin3.py"
/usr/lib/nagios/plugins/nagios_plugin3.py
/usr/local/lib/nagios/plugins/nagios_plugin3.py
/var/lib/juju/agents/unit-nrpe-6/charm/files/nagios_plugin3.py
/var/lib/juju/agents/unit-nrpe-6/charm/files/plugins/nagios_plugin3.py

Revision history for this message
Paul Goins (vultaire) wrote :

Confirmed that the workaround does *not* work; the nrpe subordinate won't install until after certain hooks on the principal charm have fired.

While code which imports nagios_plugin3 has existed in the charm for many years, it was always in the context of the plugin modules in the files directory, which I don't believe would get fired until run via NRPE. In other words, the plugin files depended on code in the NRPE charm, but they were only intended to be used in conjunction with that charm and not by the code in o-s-c.

Commit 9299fe70 introduced an import from the files/plugins directory, introducing the cross-dependency into the charm code proper and causing this breakage.

Long story short is, the breakage needs to be addressed in some way.

Eric Chen (eric-chen)
tags: added: bseng-333
Changed in charm-openstack-service-checks:
status: In Progress → Fix Committed
Changed in charm-openstack-service-checks:
milestone: none → 22.10
Changed in charm-openstack-service-checks:
status: Fix Committed → Fix Released
Changed in charm-openstack-service-checks:
status: Fix Released → Fix Committed
Changed in charm-openstack-service-checks:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.