#cli-applications #api-bindings #compute #cloud #cli-client #user #lrz

bin+lib lrzcc

Rust 客户端和 CLI 应用程序,用于 Openstack 基础的 LRZ 计算云的 LRZ 特定功能

1 个稳定版本

1.0.0 2024 年 8 月 16 日

#637命令行工具

Download history 159/week @ 2024-08-14

每月 159 次下载

MIT 许可证

225KB
7K SLoC

lrzcc

使用 Rust 编写的 API 绑定和 CLI 应用程序,用于 Openstack 基础的 LRZ 计算云的 LRZ 特定功能,首先是最主要的预算系统,https://cc.lrz.de

安装

使用 cargo 工具安装此工具

cargo install lrzcc

使用方法

作为一般提示,使用 -h/--help 以获取有关工具特定命令的更多信息。

API 访问

与正常的 Openstack CLI 客户端一样,您需要源 Openstack RC 文件以访问 API。您可以在 webui 右上角单击您的用户名,然后选择 "OpenStack RC File v3" 下载它。

通过以下方式源

. di12abc-openrc.sh

di12abc 替换为您自己的用户名,然后输入您的密码。注意:这将在以 OS_ 开头的环境变量中存储您的凭证,用于 OpenStack。

用户工作流程

获取自己的用户

lrzcc user me

注意:角色 1 表示您是普通用户,角色 2 表示您是主用户。

显示云使用情况

lrzcc -f json usage

注意:使用 -f json 告诉工具仅输出 API 的 JSON 响应。

列出风味价格

lrzcc flavor-price list

计算自己的消耗和成本

lrzcc server-consumption
lrzcc server-cost

查看用户和项目预算

lrzcc user-budget list
lrzcc project-budget list

检查预算是否超支

lrzcc user-budget over -dc

显示预算超支树

这种分层视图还显示了成本分解到单个服务器,这是 webui 所使用的。

lrzcc -f json budget-over-tree

注意:使用 -f json 告诉工具仅输出 API 的 JSON 响应。

主用户工作流程

列出自己的项目和用户

lrzcc project list
lrzcc user list -p <project_id/name>

列出自己的项目预算

lrzcc user-budget list -p <project_id/name>

列出项目用户的预算状态

lrzcc user-budget over -p <project_id/name> -dc

显示项目用户预算树

这种分层视图还显示了成本分解到单个用户和服务器,这是 webui 所使用的。

lrzcc -f json budget-over-tree -p <project_id/name>

注意:使用 -f json 告诉工具仅输出 API 的 JSON 响应。

修改预算

lrzcc user-budget modify <user_budget_id> -a <amount>
lrzcc project-budget modify <project_budget_id> -a <amount>

注意:您不能设置低于已产生成本的预算或修改过去一年的预算。

要使用此库,请将以下内容添加到您的 Cargo.toml 文件中,位于 [dependencies]

lrzcc = 1

之后,您创建一个 TokenApi 对象来与 API 交互

use lrzcc::{Token, Api};

// let token = Token::from_str("abcdefg...").unwrap();
let token = Token::new(
                auth_url.as_str(),
                username.as_str(),
                password.as_str(),
                project_name.as_str(),
                user_domain_name.as_str(),
                project_domain_id.as_str(),
            ).unwrap();
let api = Api::new("https://cc.lrz.de:8000/api", token, None, None).unwrap();
println!("{:?}", api.user.me());

依赖项

~6–20MB
~319K SLoC