--- /dev/null
+# Copyright 2019 Canonical Ltd.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from charmhelpers.core.hookenv import (
+ action_fail,
+ action_set,
+ status_set,
+)
+from charms.reactive import (
+ set_flag,
+ clear_flag,
+ when_not,
+ when,
+)
+import charms.sshproxy
+
+
+@when_not('proxy-ci.installed')
+def install_proxy_ci():
+ status_set('blocked', "Waiting for SSH credentials.")
+ set_flag('proxy-ci.installed')
+
+
+@when('actions.test', 'proxy-ci.installed')
+def test():
+ err = ''
+ try:
+ cmd = ['hostname']
+ result, err = charms.sshproxy._run(cmd)
+ if len(result) == 0:
+ raise Exception("Proxy failed")
+ except Exception as e:
+ action_fail('command failed: {}'.format(e))
+ else:
+ action_set({'output': result})
+ finally:
+ clear_flag('actions.test')
+
+
+@when('db.joined')
+def provides_db(db):
+ """Simulate providing database credentials."""
+ db.configure(
+ database="mydb",
+ user="myuser",
+ password="mypassword",
+ host="myhost",
+ slave="myslave",
+ )
+
+
+@when('db.available')
+def requires_db(db):
+ """Simulate receiving database credentials."""
+ pass