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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
OpenStack NOVA API for marking host down.
Related Blueprints:
https://blueprints.launchpad.net/nova/+spec/mark-host-down
https://blueprints.launchpad.net/python-novaclient/+spec/support-force-down-service
What the API is for
This API will give external fault monitoring system a possibility of telling
OpenStack Nova fast that compute host is down. This will immediately enable
calling of evacuation of any VM on host and further enabling faster HA
actions.
What this API does
In OpenStack the nova-compute service state can represent the compute host
state and this new API is used to force this service down. It is assumed
that the one calling this API has made sure the host is also fenced or
powered down. This is important, so there is no chance same VM instance will
appear twice in case evacuated to new compute host. When host is recovered
by any means, the external system is responsible of calling the API again to
disable forced_down flag and let the host nova-compute service report again
host being up. If network fenced host come up again it should not boot VMs
it had if figuring out they are evacuated to other compute host. The
decision of deleting or booting VMs there used to be on host should be
enhanced later to be more reliable by Nova blueprint:
https://blueprints.launchpad.net/nova/+spec/robustify-evacuate
REST API for forcing down:
Parameter explanations:
tenant_id: Identifier of the tenant.
binary: Compute service binary name.
host: Compute host name.
forced_down: Compute service forced down flag.
token: Token received after successful authentication.
service_host_ip: Serving controller node ip.
request:
PUT /v2.1/{tenant_id}/os-services/force-down
{
"binary": "nova-compute",
"host": "compute1",
"forced_down": true
}
response:
200 OK
{
"service": {
"host": "compute1",
"binary": "nova-compute",
"forced_down": true
}
}
Example:
curl -g -i -X PUT http://{service_host_ip}:8774/v2.1/{tenant_id}/os-services
/force-down -H "Content-Type: application/json" -H "Accept: application/json
" -H "X-OpenStack-Nova-API-Version: 2.11" -H "X-Auth-Token: {token}" -d '{"b
inary": "nova-compute", "host": "compute1", "forced_down": true}'
CLI for forcing down:
nova service-force-down <hostname> nova-compute
Example:
nova service-force-down compute1 nova-compute
REST API for disabling forced down:
Parameter explanations:
tenant_id: Identifier of the tenant.
binary: Compute service binary name.
host: Compute host name.
forced_down: Compute service forced down flag.
token: Token received after successful authentication.
service_host_ip: Serving controller node ip.
request:
PUT /v2.1/{tenant_id}/os-services/force-down
{
"binary": "nova-compute",
"host": "compute1",
"forced_down": false
}
response:
200 OK
{
"service": {
"host": "compute1",
"binary": "nova-compute",
"forced_down": false
}
}
Example:
curl -g -i -X PUT http://{service_host_ip}:8774/v2.1/{tenant_id}/os-services
/force-down -H "Content-Type: application/json" -H "Accept: application/json
" -H "X-OpenStack-Nova-API-Version: 2.11" -H "X-Auth-Token: {token}" -d '{"b
inary": "nova-compute", "host": "compute1", "forced_down": false}'
CLI for disabling forced down:
nova service-force-down --unset <hostname> nova-compute
Example:
nova service-force-down --unset compute1 nova-compute
|