I added some instrumentation code[0] where I could catch the prom_exporter user being created with a password set to None:
2023-08-28 23:29:39 INFO unit.mysql-innodb-cluster/1.juju-log server.go:316 prometheus:10: Invoking reactive handler: reactive/prometheus_mysql_exporter_handlers.py:12:create_local_prometheus_exporter_user
2023-08-28 23:29:39 INFO unit.mysql-innodb-cluster/1.juju-log server.go:316 prometheus:10: prom_exporter@10.5.3.204 = None
2023-08-28 23:29:39 INFO unit.mysql-innodb-cluster/1.juju-log server.go:316 prometheus:10: prom_exporter@localhost = None
2023-08-28 23:29:39 ERROR unit.mysql-innodb-cluster/1.juju-log server.go:316 prometheus:10: Hook error:
Traceback (most recent call last):
File "/var/lib/juju/agents/unit-mysql-innodb-cluster-1/.venv/lib/python3.10/site-packages/charms/reactive/__init__.py", line 74, in main
bus.dispatch(restricted=restricted_mode)
File "/var/lib/juju/agents/unit-mysql-innodb-cluster-1/.venv/lib/python3.10/site-packages/charms/reactive/bus.py", line 390, in dispatch
_invoke(other_handlers)
File "/var/lib/juju/agents/unit-mysql-innodb-cluster-1/.venv/lib/python3.10/site-packages/charms/reactive/bus.py", line 359, in _invoke
handler.invoke()
File "/var/lib/juju/agents/unit-mysql-innodb-cluster-1/.venv/lib/python3.10/site-packages/charms/reactive/bus.py", line 181, in invoke
self._action(*args)
File "/var/lib/juju/agents/unit-mysql-innodb-cluster-1/charm/reactive/prometheus_mysql_exporter_handlers.py", line 18, in create_local_prometheus_exporter_user
if not instance.create_user(
File "/var/lib/juju/agents/unit-mysql-innodb-cluster-1/.venv/lib/python3.10/site-packages/tenacity/__init__.py", line 339, in wrapped_f
return self(f, *args, **kw)
File "/var/lib/juju/agents/unit-mysql-innodb-cluster-1/.venv/lib/python3.10/site-packages/tenacity/__init__.py", line 430, in __call__
do = self.iter(retry_state=retry_state)
File "/var/lib/juju/agents/unit-mysql-innodb-cluster-1/.venv/lib/python3.10/site-packages/tenacity/__init__.py", line 367, in iter
return fut.result()
File "/usr/lib/python3.10/concurrent/futures/_base.py", line 451, in result
return self.__get_result()
File "/usr/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result
raise self._exception
File "/var/lib/juju/agents/unit-mysql-innodb-cluster-1/.venv/lib/python3.10/site-packages/tenacity/__init__.py", line 433, in __call__
result = fn(*args, **kwargs)
File "/var/lib/juju/agents/unit-mysql-innodb-cluster-1/charm/lib/charm/openstack/mysql_innodb_cluster.py", line 628, in create_user
assert password, msg
AssertionError: Password can't be empty: None (user: prom_exporter, addresses: ['10.5.3.204', 'localhost'])
[0]
+ if user == "prom_exporter":
+ for address in addresses:
+ ch_core.hookenv.log('%s@%s = %s' % (user, address, password),
+ "INFO")
+ msg = "Password can't be empty: %s (user: %s, addresses: %s)" % \
+ (password, user, addresses)
+ assert password, msg
I added some instrumentation code[0] where I could catch the prom_exporter user being created with a password set to None:
2023-08-28 23:29:39 INFO unit.mysql- innodb- cluster/ 1.juju- log server.go:316 prometheus:10: Invoking reactive handler: reactive/ prometheus_ mysql_exporter_ handlers. py:12:create_ local_prometheu s_exporter_ user innodb- cluster/ 1.juju- log server.go:316 prometheus:10: prom_exporter@ 10.5.3. 204 = None innodb- cluster/ 1.juju- log server.go:316 prometheus:10: prom_exporter@ localhost = None innodb- cluster/ 1.juju- log server.go:316 prometheus:10: Hook error: juju/agents/ unit-mysql- innodb- cluster- 1/.venv/ lib/python3. 10/site- packages/ charms/ reactive/ __init_ _.py", line 74, in main dispatch( restricted= restricted_ mode) juju/agents/ unit-mysql- innodb- cluster- 1/.venv/ lib/python3. 10/site- packages/ charms/ reactive/ bus.py" , line 390, in dispatch other_handlers) juju/agents/ unit-mysql- innodb- cluster- 1/.venv/ lib/python3. 10/site- packages/ charms/ reactive/ bus.py" , line 359, in _invoke invoke( ) juju/agents/ unit-mysql- innodb- cluster- 1/.venv/ lib/python3. 10/site- packages/ charms/ reactive/ bus.py" , line 181, in invoke _action( *args) juju/agents/ unit-mysql- innodb- cluster- 1/charm/ reactive/ prometheus_ mysql_exporter_ handlers. py", line 18, in create_ local_prometheu s_exporter_ user create_ user( juju/agents/ unit-mysql- innodb- cluster- 1/.venv/ lib/python3. 10/site- packages/ tenacity/ __init_ _.py", line 339, in wrapped_f juju/agents/ unit-mysql- innodb- cluster- 1/.venv/ lib/python3. 10/site- packages/ tenacity/ __init_ _.py", line 430, in __call__ retry_state= retry_state) juju/agents/ unit-mysql- innodb- cluster- 1/.venv/ lib/python3. 10/site- packages/ tenacity/ __init_ _.py", line 367, in iter python3. 10/concurrent/ futures/ _base.py" , line 451, in result python3. 10/concurrent/ futures/ _base.py" , line 403, in __get_result juju/agents/ unit-mysql- innodb- cluster- 1/.venv/ lib/python3. 10/site- packages/ tenacity/ __init_ _.py", line 433, in __call__ juju/agents/ unit-mysql- innodb- cluster- 1/charm/ lib/charm/ openstack/ mysql_innodb_ cluster. py", line 628, in create_user
2023-08-28 23:29:39 INFO unit.mysql-
2023-08-28 23:29:39 INFO unit.mysql-
2023-08-28 23:29:39 ERROR unit.mysql-
Traceback (most recent call last):
File "/var/lib/
bus.
File "/var/lib/
_invoke(
File "/var/lib/
handler.
File "/var/lib/
self.
File "/var/lib/
if not instance.
File "/var/lib/
return self(f, *args, **kw)
File "/var/lib/
do = self.iter(
File "/var/lib/
return fut.result()
File "/usr/lib/
return self.__get_result()
File "/usr/lib/
raise self._exception
File "/var/lib/
result = fn(*args, **kwargs)
File "/var/lib/
assert password, msg
AssertionError: Password can't be empty: None (user: prom_exporter, addresses: ['10.5.3.204', 'localhost'])
[0] hookenv. log('%s@ %s = %s' % (user, address, password),
+ if user == "prom_exporter":
+ for address in addresses:
+ ch_core.
+ "INFO")
+ msg = "Password can't be empty: %s (user: %s, addresses: %s)" % \
+ (password, user, addresses)
+ assert password, msg