--- /dev/null
+#!/usr/bin/python3
+
+import amulet
+import openvim
+
+deployment = None
+
+def deploy_openvim_without_relations():
+ global deployment
+ deployment = amulet.Deployment()
+ deployment.add("mysql", series="trusty")
+ deployment.add("openvim-controller", series="xenial")
+ deployment.add("openvim-compute", charm="local:xenial/openvim-compute", series="xenial")
+ deployment.expose("openvim-controller")
+ deployment.setup(timeout=900)
+ deployment.sentry.wait()
+
+def add_relations():
+ deployment.relate("openvim-controller:db", "mysql:db")
+ deployment.relate("openvim-controller:compute", "openvim-compute:compute")
+
+def get_openvim_connection():
+ address = deployment.sentry["openvim-controller"][0].info["public-address"]
+ return openvim.connect(address)
+
+def get_first_unit_status(service):
+ service_status = deployment.sentry.get_status()["openvim-controller"]
+ unit_status = next(iter(service_status.values()))
+ return unit_status
+
+def test_controller_blocks_without_mysql():
+ unit_status = get_first_unit_status("openvim-controller")
+ workload_status = unit_status["workload-status"]
+ assert workload_status["current"] == "blocked"
+ assert workload_status["message"] == "mysql database required"
+
+def test_adding_compute_unit():
+ deployment.add_unit("openvim-compute")
+ deployment.sentry.wait(timeout=900)
+ c = get_openvim_connection()
+ assert len(c.get_hosts()) == 2
+
+if __name__ == "__main__":
+ deploy_openvim_without_relations()
+ test_controller_blocks_without_mysql()
+ add_relations()
+ test_adding_compute_unit()