5个版本
0.1.4 | 2022年12月4日 |
---|---|
0.1.3 | 2022年12月4日 |
0.1.2 | 2022年12月4日 |
0.1.1 | 2022年12月4日 |
0.1.0 | 2022年10月9日 |
#142 in 电子邮件
84KB
1K SLoC
lunanode
这是一个用于与LunaNode的OpenStack兼容API交互的API。这个crate目前只覆盖了LunaNode API的最基本功能。目前实现43/98(44%)的API调用。如果您想贡献更多功能,请随时提交MR。
- 虚拟机 [8/21]
- 列表 [X]
- 启动 [X]
- 停止 [X]
- 重启 [X]
- 磁盘交换 [ ]
- 救援 [ ]
- 上架 [ ]
- 下架 [ ]
- 删除 [ ]
- 信息 [X]
- 重映像 [ ]
- 调整大小 [ ]
- VNC [ ]
- IP [1/3]
- 浮动IP添加 [ ]
- 浮动IP删除 [ ]
- IP列表 [X]
- IP添加 [X]
- IP删除 [X]
- 安全组添加 [ ]
- 安全组删除 [ ]
- 镜像 [4/7]
- 获取 [ ]
- 列表 [X]
- 详细信息 [X]
- 删除 [X]
- 复制 [X]
- 重命名 [ ]
- 检索 [ ]
- 卷 [1/12]
- 创建 [ ]
- 列表 [X]
- 信息 [ ]
- 附加 [ ]
- 分离 [ ]
- 扩展 [ ]
- 重命名 [ ]
- 删除 [ ]
- 快照 [0/4]
- 创建 [ ]
- 列表 [ ]
- 复制 [ ]
- 删除 [ ]
- 浮动IP [1/3]
- 列表 [X]
- 添加 [ ]
- 删除 [ ]
- 网络 [1/3]
- 列表 [X]
- 添加 [ ]
- 删除 [ ]
- 安全组 [0/7]
- 列表 [ ]
- 创建 [ ]
- 删除 [ ]
- 重命名 [ ]
- 规则列表 [ ]
- 规则插入 [ ]
- 规则删除 [ ]
- 脚本 [0/5]
- 列表 [ ]
- 获取 [ ]
- 创建 [ ]
- 更新 [ ]
- 删除 [ ]
- SSH密钥 [1/3]
- 列表 [X]
- 添加 [ ]
- 移除 [ ]
- 计划 [1/1]
- 列表 [X]
- 区域 [1/1]
- 列表 [X]
- 监控 [3/10]
- 检查 [2/4]
- 列表 [X]
- 类型 [X]
- 添加 [ ]
- 移除 [ ]
- 联系 [1/4]
- 列表 [X]
- 添加 [ ]
- 移除 [ ]
- 警报 [0/3]
- 列表 [ ]
- 添加 [ ]
- 移除 [ ]
- 检查 [2/4]
- 电子邮件 [14/14]
- 使用情况 [X]
- 域名 [5/5]
- 列表 [X]
- 添加 [X]
- 删除 [X]
- DKIM [2/2]
- 设置 [X]
- 取消设置 [X]
- 用户 [4/4]
- 列表 [X]
- 添加 [X]
- 删除 [X]
- 设置密码 [X]
- 别名 [3/3]
- 列表 [X]
- 添加 [X]
- 删除 [X]
- DNS [9/10]
- 区域 [3/3]
- 列表 [X]
- 添加 [X]
- 删除 [X]
- 记录 [3/3]
- 列表 [X]
- 添加 [X]
- 删除 [X]
- 动态 [3/4]
- 列表 [X]
- 添加 [X]
- 更新 [ ]
- 删除 [X]
- 区域 [3/3]
- 账单 [1/1]
- 信用 [X]
安装
cargo安装 lunanode
API密钥
将LUNANODE_API_KEY
、LUNANODE_KEY_ID
和LUNANODE_API_PARTIALKEY
(LUNANODE_API_KEY
的前64个字符)添加到您的环境变量中。如果没有设置这些变量,工具将无法运行。您也可以通过命令行参数手动指定密钥。
用法
请参阅lunanode help
屏幕。
可用子命令
账单
DNS
动态
floating
(用于LunaNode的浮动IP系统)镜像
网络
record
(DNS)ssh密钥
虚拟机
卷
区域
请注意,目前仅支持通过 list/
端点获取数据。请参阅帮助部分获取更多详细信息,例如: lunanode image help
待办事项(寻找贡献者)
- 简化代码以减少样板代码。特别是,当需要从它们中获取相同的信息时,编写每个枚举变体都很烦人。
- 测试!
- 创建更详细的文档。
#[deny(missing_docs)]
已开启,但代码中的某些决策解释得不是很好。 - 覆盖每个API端点。
- 更严格的类型检查。某些属性,即使它们以字符串形式接收,也应该是一些类型的
enum
。将每个非字符串类型转换为某种枚举。 - UUID应该是UUID类型,而不是字符串。我找到的唯一能够做到这一点的库是 Uuid,它似乎在序列化时不包含连字符,这会破坏Lunanode...令人烦恼。
- 子网应该有更严格的类型检查。它们应该始终是IP/子网组合,作为两个字段(std::net::Ipv4Addr, i32(0..32))。
- 自动从名称或其他识别信息创建ID,而不是使用RESP API的ID系统。
- 例如:
email user add tait@tait.tech
应自动获取执行此调用所需的域名ID:email user add DOMAIN_ID tait@tait.tech
。 - 另一个例子:
vm shutdown my_webserver
会自动扩展以查找名为 my_webserver 的虚拟机并将其关闭,将名称扩展为UUID:vm shutdown ffff-ffff-ffff-ffffffffffffffff
。
- 例如:
支持此项目
依赖项
~8–10MB
~211K SLoC