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