Merge "support pep8 check"
[doctor.git] / tests / lib / inspectors / congress
1 #!/bin/bash
2
3 function _congress_add_rule {
4     name=$1
5     policy=$2
6     rule=$3
7
8     if ! openstack congress policy rule list $policy | grep -q -e "// Name: $name$" ; then
9         openstack congress policy rule create --name $name $policy "$rule"
10     fi
11 }
12
13 function _congress_del_rule {
14     name=$1
15     policy=$2
16
17     if openstack congress policy rule list $policy | grep -q -e "^// Name: $name$" ; then
18         openstack congress policy rule delete $policy $name
19     fi
20 }
21
22 function _congress_add_rules {
23     _congress_add_rule host_down classification \
24         'host_down(host) :-
25             doctor:events(hostname=host, type="compute.host.down", status="down")'
26
27     _congress_add_rule active_instance_in_host classification \
28         'active_instance_in_host(vmid, host) :-
29             nova:servers(id=vmid, host_name=host, status="ACTIVE")'
30
31     _congress_add_rule host_force_down classification \
32         'execute[nova:services.force_down(host, "nova-compute", "True")] :-
33             host_down(host)'
34
35     _congress_add_rule error_vm_states classification \
36         'execute[nova:servers.reset_state(vmid, "error")] :-
37             host_down(host),
38             active_instance_in_host(vmid, host)'
39 }
40
41 function start_inspector_congress {
42     nova_api_min_version="2.11"
43     nova_api_version=$(openstack congress datasource list | \
44                        grep nova | grep -Po "(?<='api_version': ')[^']*")
45     [[ -z $nova_api_version ]] && nova_api_version="2.0"
46     if [[ "$nova_api_version" < "$nova_api_min_version" ]]; then
47         echo "ERROR: Congress Nova datasource API version < $nova_api_min_version ($nova_api_version)"
48         exit 1
49     fi
50     openstack congress driver list | grep -q " doctor "
51     openstack congress datasource list | grep -q " doctor " || {
52         openstack congress datasource create doctor doctor
53     }
54     _congress_add_rules
55
56 }
57
58 function stop_inspector_congress {
59     _congress_del_rule host_force_down classification
60     _congress_del_rule error_vm_states classification
61     _congress_del_rule active_instance_in_host classification
62     _congress_del_rule host_down classification
63
64 }
65
66 function cleanup_inspector_congress {
67     # Noop
68     return
69 }