The maybe_block_on_mongodb_uri() handler may end up running before the is_mongodb_uri_usable() handler, causing a spurious blocked state.
Instead, I'd just do:
@when('config.default.mongodb_uri') # default is empty string
def block_on_no_uri():
blocked('mongodb_uri must be set')
@when('config.changed.mongodb_uri')
def local_or_remote():
l = mongodb_uri_is_juju_db()
reactive.toggle_flag('prometheus-mongodb-exporter.monitor-juju-db', l)
reactive.toggle_flag('prometheus-mongodb-exporter.monitor-remote-db', not l)
@when('prometheus-mongodb-exporter.monitor-juju-db')
@when_not('leadership.is_leader', 'leadership.set.mongodb_uri')
def wait_on_leader():
waiting('Waiting for leader to provide mongodb credentials')
The maybe_block_ on_mongodb_ uri() handler may end up running before the is_mongodb_ uri_usable( ) handler, causing a spurious blocked state.
Instead, I'd just do:
@when(' config. default. mongodb_ uri') # default is empty string 'mongodb_ uri must be set')
def block_on_no_uri():
blocked(
@when(' config. changed. mongodb_ uri') uri_is_ juju_db( ) toggle_ flag('prometheu s-mongodb- exporter. monitor- juju-db' , l) toggle_ flag('prometheu s-mongodb- exporter. monitor- remote- db', not l)
def local_or_remote():
l = mongodb_
reactive.
reactive.
@when(' prometheus- mongodb- exporter. monitor- juju-db' ) 'leadership. is_leader' , 'leadership. set.mongodb_ uri') 'Waiting for leader to provide mongodb credentials')
@when_not(
def wait_on_leader():
waiting(
@when(' prometheus- mongodb- exporter. monitor- juju-db' ) leadership. is_leader' ) 'leadership. set.mongodb_ uri') juju_db_ user():
@when('
@when_not(
def create_
[ ... existing code ... ]