#!/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()