X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2Fvim-emu.git;a=blobdiff_plain;f=examples%2Fcharms%2Flayers%2Fsimple%2Freactive%2Fsimple.py;fp=examples%2Fcharms%2Flayers%2Fsimple%2Freactive%2Fsimple.py;h=228be3c3ffaf70fb4c2829d71d90204403a937ba;hp=0000000000000000000000000000000000000000;hb=962219995947a8b9c14b4fed0813ca91c9ad0af7;hpb=f8f135c271341479200232641823520a541f33b0 diff --git a/examples/charms/layers/simple/reactive/simple.py b/examples/charms/layers/simple/reactive/simple.py new file mode 100644 index 0000000..228be3c --- /dev/null +++ b/examples/charms/layers/simple/reactive/simple.py @@ -0,0 +1,44 @@ +from charmhelpers.core.hookenv import ( + action_get, + action_fail, + action_set, + status_set, +) +from charms.reactive import ( + clear_flag, + set_flag, + when, + when_not, +) +import charms.sshproxy + + +@when('sshproxy.configured') +@when_not('simple.installed') +def install_simple_proxy_charm(): + """Post-install actions. + + This function will run when two conditions are met: + 1. The 'sshproxy.configured' state is set + 2. The 'simple.installed' state is not set + + This ensures that the workload status is set to active only when the SSH + proxy is properly configured. + """ + set_flag('simple.installed') + status_set('active', 'Ready!') + + +@when('actions.touch') +def touch(): + err = '' + try: + filename = action_get('filename') + cmd = ['touch {}'.format(filename)] + result, err = charms.sshproxy._run(cmd) + except: + action_fail('command failed:' + err) + else: + action_set({'output': result}) + finally: + clear_flag('actions.touch')