6.1 KiB
Add option to enable/disable a segment
https://blueprints.launchpad.net/masakari/+spec/enable-to-segment
Problem description
Sometimes, operators want to disable instance-ha temporarily. For example, when we plan to update the hardware or pull the latest code on the compute nodes where the masakari-monitors are running, we are required to stop masakari-api and masakari-engine services so that it won't execute any ha recovery workflow. If you forgot to stop these services, then it would end up in a mess and you will need to spend lot of your time in recovering instances which are messed up.
So, we need a simple solution which will allow masakari to disable instance-ha for a temporarily period without needing operator to stop these services.
Proposed change
This spec is mainly to add an option to enable/disable a segment
- Add
enabled
option to a segment. When creating a new segment, it will be enabled by default. Optionenabled
has a boolean value: 'True' means the segment is enabled, notifications of this segment will be processed; 'False' means the segment is disabled, notifications of this segment will be ignored. - User can modify
enabled
option byPUT /segment/<segment_uuid>
API.
Alternatives
None
Data model impact
Yes, add a new db column enabled
of type Boolean with
default value True
to failover_segments
table.
REST API impact
Following changes will be introduced in a new API micro-version.
POST /segments
request example:
{ "segment": { "service_type": "COMPUTE", "recovery_method": "AUTO", "name": "segment", "enabled": True } }
response example:
{ "segment": { "uuid": "5fd9f925-0379-40db-a7f8-786a0b655b2a", "deleted": false, "created_at": "2017-04-21T08:59:53.991030", "description": null, "recovery_method": "AUTO", "updated_at": null, "service_type": "COMPUTE", "deleted_at": null, "id": 4, "name": "segment", "enabled": True } }
PUT /segments/{segment_id}
request example:
{ "segment": { "name": "new_segment", "enabled": False } }
response example:
{ "segment": { "uuid": "5fd9f925-0379-40db-a7f8-786a0b655b2a", "deleted": false, "created_at": "2017-04-21T08:59:54.000000", "description": null, "recovery_method": "AUTO", "updated_at": "2017-04-21T09:47:03.748028", "service_type": "COMPUTE", "deleted_at": null, "id": 4, "name": "new_segment", "enabled": False } }
GET /segments
response example:
{ "segments": [ { "uuid": "9e800031-6946-4b43-bf09-8b3d1cab792b", "deleted": false, "created_at": "2017-04-20T10:17:17.000000", "description": "Segment1", "recovery_method": "auto", "updated_at": null, "service_type": "Compute", "deleted_at": null, "id": 1, "name": "segment2", "enabled": True } ] }
GET /segments/<segment_uuid>
response example:
{ "segment": { "uuid": "5fd9f925-0379-40db-a7f8-786a0b655b2a", "deleted": false, "created_at": "2017-04-21T08:59:53.991030", "description": null, "recovery_method": "AUTO", "updated_at": null, "service_type": "COMPUTE", "deleted_at": null, "id": 4, "name": "new_segment", "enabled": False } }
Security impact
None
Notifications impact
Field enabled
will be added into segment in masakari
notifications. For example the wire format of the
create.segment.start
notification looks like the
following:
{
"event_type": "segment.create.start",
"message_id": "e44cb15b-dcba-409e-b0e1-9ee103b9a168",
"payload": {
"masakari_object.data": {
"description": null,
"fault": null,
"name": "test",
"recovery_method": "auto",
"service_type": "compute",
"enabled": True
},
"masakari_object.name": "SegmentApiPayload",
"masakari_object.namespace": "masakari",
"masakari_object.version": "1.1"
},
"publisher_id": "masakari-api:fake-mini",
"timestamp": "2018-11-22 09:25:12.393979"
}
Other end user impact
The python-masakariclient, masakari-dashboard and openstacksdk will
be updated to support enabled
parameter of the segment in a
new micro-version.
Performance Impact
None
Other deployer impact
None
Developer impact
None
Implementation
Assignee(s)
Primary assignee:
- suzhengwei <sugar-2008@163.com>
Work Items
- Create a new API microversion to handle
enabled
parameter in segments. - Update docs for enabled to segment
- Update python-masakariclient, masakari-dashboard and openstacksdk to
manage
enabled
parameter of the segment.. - Add functional tests
Dependencies
None
Testing
Unit and functional test is neccessary.
Add required unit and functional tests which will run in gate.
Documentation Impact
Update Masakari API reference documentation.
References
None
History
Release Name | Description |
---|---|
Ussuri | Introduced |
Victoria | Re-proposed |