Files
RootPanel/DOC/DEV/PLUGGABLE.md
2014-03-10 20:00:43 +08:00

1.7 KiB
Raw Blame History

实现插件化

以下部分用『RP3』指代 RP3 的核心部分。

服务

每个服务插件,需要提供以下的功能(hook), 以下以 MySQL 举例:

  • 启用 - 为 MySQL 添加一个用户
  • 暂停 - 删除 MySQL 的用户
  • 删除 - 删除这个用户所有的数据库
  • 默认配置 - 密码默认为禁用
  • 修改配置 - 修改密码
  • 显示状态 - 如显示 MySQL 数据库磁盘占用
  • 监控资源 - 如监控 MySQL 数据库磁盘占用

Hook

插件可以注册 RP3 提供的 Hook 来对 RP3 的数据和逻辑进行修改。

rendering.navbar 表示正在渲染 HTML 输出中的导航条部分。

插件可以注册自己的处理程序,接收一个参数(目前的导航条条目), 返回一个值(处理后的).

数据储存

插件与 RP3 使用同一数据库,插件所使用的集合名需添加 plugin.name 的前缀,如 plugin.ssh.info.

路由

插件可以注册或覆盖 RP3 的路由。

UI

插件可以在用户的面板添加区块来显示信息。

插件在修改配置时需要提供一段 HTML 表单。

资源监控

需要监控的资源有:

  • CPU 时间 - 单位 秒(s)
  • 内存占用 - 单位 百万字节每小时(MiB/h)
  • 磁盘空间 - 单位 MiB
  • 外网流量 - 可以延后实现
  • 磁盘 OI - 可以延后实现

当然并非每个服务都能精确地监控这些资源,这其中有很多困难,总之尽力而为吧,以下以 SSH 服务的资源监控为例:

插件可以向 RP3 注册监控程序,如:

  • 每 30s 运行 CPU 监控程序
  • 每 60s 运行内存监控程序
  • 每 6h 运行磁盘监控程序

监控程序定时向 RP3 返回几种资源的使用情况RP3 进行汇总统计。