3 function _congress_add_rule {
8 if ! openstack congress policy rule list $policy | grep -q -e "// Name: $name$" ; then
9 openstack congress policy rule create --name $name $policy "$rule"
13 function _congress_del_rule {
17 if openstack congress policy rule list $policy | grep -q -e "^// Name: $name$" ; then
18 openstack congress policy rule delete $policy $name
22 function _congress_add_rules {
23 _congress_add_rule host_down classification \
25 doctor:events(hostname=host, type="compute.host.down", status="down")'
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")'
31 _congress_add_rule host_force_down classification \
32 'execute[nova:services.force_down(host, "nova-compute", "True")] :-
35 _congress_add_rule error_vm_states classification \
36 'execute[nova:servers.reset_state(vmid, "error")] :-
38 active_instance_in_host(vmid, host)'
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)"
50 openstack congress driver list | grep -q " doctor "
51 openstack congress datasource list | grep -q " doctor " || {
52 openstack congress datasource create doctor doctor
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
66 function cleanup_inspector_congress {