)
from charms.reactive import (
+ hook,
when,
when_not,
helpers,
cfg = config()
-@when('config.changed')
+@hook('config-changed')
def validate_config():
try:
"""
If the ssh credentials are available, we'll act as a proxy charm.
Otherwise, we execute against the unit we're deployed on to.
"""
- status_set('maintenance', 'configuring ssh connection')
- remove_state('vpe.configured')
if all(k in cfg for k in ['pass', 'vpe-router', 'user']):
routerip = cfg['vpe-router']
user = cfg['user']
out, err = router.ssh(['whoami'], routerip,
user, passwd)
if out.strip() != user:
+ remove_state('vpe.configured')
+ status_set('blocked', 'vpe is not configured')
raise Exception('invalid credentials')
# Set the router's hostname
],
routerip,
user, passwd)
-
+ set_state('vpe.configured')
+ status_set('active', 'ready!')
+ else:
+ remove_state('vpe.configured')
+ status_set('blocked', 'vpe is not configured')
except subprocess.CalledProcessError as e:
+ remove_state('vpe.configured')
+ status_set('blocked', 'validation failed: %s' % e)
log('Command failed: %s (%s)' %
(' '.join(e.cmd), str(e.output)))
raise
- set_state('vpe.configured')
- status_set('active', 'ready!')
-
except Exception as e:
log(repr(e))
remove_state('vpe.configured')