X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=vpe-router%2Freactive%2Fvpe_router.py;h=e2be32767c6dc50d3f513c70cdef43111f00e352;hb=411539d75681830856be9af6ae87453f639c4712;hp=de1e02473388077d4647c5f8a1c58f8db9cd0b66;hpb=4ab6087333c8402aef95ece83922de5b23f1f197;p=osm%2Fdevops.git diff --git a/vpe-router/reactive/vpe_router.py b/vpe-router/reactive/vpe_router.py index de1e0247..e2be3276 100644 --- a/vpe-router/reactive/vpe_router.py +++ b/vpe-router/reactive/vpe_router.py @@ -8,6 +8,7 @@ from charmhelpers.core.hookenv import ( ) from charms.reactive import ( + hook, when, when_not, helpers, @@ -21,15 +22,13 @@ import subprocess 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'] @@ -40,6 +39,8 @@ def validate_config(): 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 @@ -57,15 +58,18 @@ def validate_config(): ], 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')