Fix bug 601
This fixes bug 601, where a charm in a broken state would fail to be
removed.
This builds of of the new DestroyNetworkService method, which will
remove a model containing a network service.
There is no way, currently, to resolve errors on an individual charm
through the Juju API (client), but removing the model will force the
removal of a broken charm.
Change-Id: I47f41991ed444395061b5a20e5a51059950e5200
Signed-off-by: Adam Israel <adam.israel@canonical.com>
diff --git a/tests/charms/layers/broken/reactive/simple.py b/tests/charms/layers/broken/reactive/simple.py
new file mode 100644
index 0000000..1529eee
--- /dev/null
+++ b/tests/charms/layers/broken/reactive/simple.py
@@ -0,0 +1,45 @@
+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():
+ raise Exception("I am broken.")
+ err = ''
+ try:
+ filename = action_get('filename')
+ cmd = ['touch {}'.format(filename)]
+ result, err = charms.sshproxy._run(cmd)
+ except Exception:
+ action_fail('command failed:' + err)
+ else:
+ action_set({'output': result})
+ finally:
+ clear_flag('actions.touch')