添加启用/禁用分段的选项

https://blueprints.launchpad.net/masakari/+spec/enable-to-segment

问题描述

有时,操作员希望暂时禁用实例高可用性。例如,当我们计划更新硬件或在运行 masakari-monitors 的计算节点上拉取最新代码时,我们需要停止 masakari-api 和 masakari-engine 服务,以防止其执行任何高可用性恢复工作流程。如果您忘记停止这些服务,最终会导致混乱,并且您需要花费大量时间来恢复损坏的实例。

因此,我们需要一个简单的解决方案,允许 masakari 在不要求操作员停止这些服务的情况下,暂时禁用实例高可用性。

提议的变更

本规范主要是添加一个启用/禁用分段的选项

  • 为分段添加 enabled 选项。创建新分段时,默认情况下将启用它。选项 enabled 具有布尔值:‘True’ 表示分段已启用,将处理该分段的通知;‘False’ 表示分段已禁用,将忽略该分段的通知。

  • 用户可以通过 PUT /segment/<segment_uuid> API 修改 enabled 选项。

备选方案

数据模型影响

是的,将在 failover_segments 表中添加一个新的数据库列 enabled,类型为 Boolean,默认值为 True

REST API 影响

以下更改将在新的 API 微版本中引入。

  • POST /segments

    请求示例

    {
        "segment": {
            "service_type": "COMPUTE",
            "recovery_method": "AUTO",
            "name": "segment",
            "enabled": True
        }
    }
    

    响应示例

    {
        "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}

    请求示例

    {
        "segment": {
            "name": "new_segment",
            "enabled": False
        }
    }
    

    响应示例

    {
        "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

    响应示例

    {
        "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>

    响应示例

    {
        "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
        }
    }
    

安全影响

通知影响

字段 enabled 将被添加到 masakari 通知中的分段中。例如,create.segment.start 通知的数据格式如下所示

{
    "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"
}

其他最终用户影响

python-masakariclient、masakari-dashboard 和 openstacksdk 将更新以支持分段中 enabled 参数的新微版本。

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

工作项

  • 创建一个新的 API 微版本来处理分段中的 enabled 参数。

  • 更新启用分段的文档

  • 更新 python-masakariclient、masakari-dashboard 和 openstacksdk 以管理分段的 enabled 参数。

  • 添加功能测试

依赖项

测试

需要单元测试和功能测试。

添加必要的单元测试和功能测试,这些测试将在 gate 中运行。

文档影响

更新 Masakari API 参考文档。

参考资料

历史

修订版

发布名称

描述

Ussuri

引入

Victoria

重新提出