Initial openvim v0.4.6 upload
[osm/openvim.git] / charm / openvim / layer-openvim / tests / 20-deployment
1 #!/usr/bin/python3
2
3 import amulet
4 import openvim
5
6 deployment = None
7
8 def deploy_openvim_without_relations():
9     global deployment
10     deployment = amulet.Deployment()
11     deployment.add("mysql", series="trusty")
12     deployment.add("openvim-controller", series="xenial")
13     deployment.add("openvim-compute", charm="local:xenial/openvim-compute", series="xenial")
14     deployment.expose("openvim-controller")
15     deployment.setup(timeout=900)
16     deployment.sentry.wait()
17
18 def add_relations():
19     deployment.relate("openvim-controller:db", "mysql:db")
20     deployment.relate("openvim-controller:compute", "openvim-compute:compute")
21
22 def get_openvim_connection():
23     address = deployment.sentry["openvim-controller"][0].info["public-address"]
24     return openvim.connect(address)
25
26 def get_first_unit_status(service):
27     service_status = deployment.sentry.get_status()["openvim-controller"]
28     unit_status = next(iter(service_status.values()))
29     return unit_status
30
31 def test_controller_blocks_without_mysql():
32     unit_status = get_first_unit_status("openvim-controller")
33     workload_status = unit_status["workload-status"]
34     assert workload_status["current"] == "blocked"
35     assert workload_status["message"] == "mysql database required"
36
37 def test_adding_compute_unit():
38     deployment.add_unit("openvim-compute")
39     deployment.sentry.wait(timeout=900)
40     c = get_openvim_connection()
41     assert len(c.get_hosts()) == 2
42
43 if __name__ == "__main__":
44     deploy_openvim_without_relations()
45     test_controller_blocks_without_mysql()
46     add_relations()
47     test_adding_compute_unit()