Seamicro 串口控制台

https://blueprints.launchpad.net/ironic/+spec/seamicro-serial-console

此蓝图实现了控制台驱动程序 – “ShellinaboxConsole”,它支持访问 Seamicro Fabric Compute 系统的串口控制台。

问题描述

目前,还没有支持获取配置在 Seamicro Fabric Compute 系统中的物理服务器的串口控制台的功能。

提议的变更

实现了一个控制台驱动程序 – “ShellinaboxConsole” – 它使用 telnet+shellinabox 连接到配置在 Seamicro Fabric Compute 系统中的物理服务器的串口控制台。SeaMicro 系统提供了 telnet 功能来连接到其任何物理服务器的串口控制台。我们 telnet 的端口取决于服务器 ID。“server-id” 这里指的是 SeaMicro 盒子对服务器的称呼,而不是 ironic 节点的 UUID。我们已经将所需的信息(server-id)作为 driver_info 的一部分捕获。以下是详细信息:

  • 使用现有的 ironic/drivers/modules/console_utils 模块来启动/停止 shellinabox。IPMI 驱动程序已经使用 shellinabox 来访问它们的串口控制台。

  • 将 seamicro_terminal_port 属性添加到 CONSOLE_PROPERTIES。这将是 shellinabox 在本地监听的端口。

  • 在 ironic/drivers/modules/seamicro.py 中添加新的类 ShellinaboxConsole,继承自 base.ConsoleInterface

  • 在 ShellinaboxConsole 类中实现以下方法。
    • validate() - 验证节点控制台信息。
      • 参数 task : 来自 TaskManager 的任务。

      • 引发 : InvalidParameterValue

    • start_console() - 为节点启动远程控制台。

    • stop_console() - 停止节点的远程控制台会话。

    • get_console() - 获取控制台的类型和连接信息。

  • 在 PXEAndSeaMicroDriver 中添加 self 变量 self.console。

备选方案

数据模型影响

REST API 影响

RPC API 影响

驱动程序 API 影响

Nova 驱动程序影响

安全影响

其他最终用户影响

可扩展性影响

性能影响

其他部署者影响

以下是 driver_info 字段中已经存在的部分,是必需的
  • seamicro_api_endpoint - seamicro 的主机名或 IP 地址

  • seamicro_username - seamicro 用户名

  • seamicro_password - seamicro 密码

  • seamicro_server_id - seamicro 服务器 ID

此外,需要提供 driver_info 中的一个字段
  • seamicro_terminal_port - 用于连接的节点的 UDP 端口。仅需要用于控制台访问。

开发人员影响

实现

负责人

主要负责人

harshada-kakad

工作项

实现从 base.ManagementInterface 继承的 ShellinaboxConsole 类。实现 validatestart_consolestop_consoleget_console

依赖项

测试

将添加单元测试。

升级和向后兼容性

文档影响

作为此蓝图的一部分,我将记录此功能的使用方法。

参考资料