#com #interfacing #charm #system #log-level #information #charms

juju

一个用于与 Juju 系统交互的库。有关示例 charm,请参阅:https://github.com/cholcombe973/gluster-charm

29 个版本 (1 个稳定版)

使用旧的 Rust 2015

1.0.0 2018年8月25日
0.7.0 2017年4月17日
0.6.1 2017年3月27日
0.5.5 2016年11月25日
0.1.3 2015年7月8日

#2 in #charm

每月下载 27 次
用于 2 个 crate(通过 charmhelpers

MITLGPL-2.1

50KB
956

Juju Build Status

Docs

Rust 库用于与 Juju 交互。

此库使得用 Rust 编写 charm 变得非常容易,同时享受 Rust 带来的好处:静态类型、最小依赖和乐趣!

构建

此库需要 sqlite3-dev 来构建,因为依赖于 rusqlite


lib.rs:

一个用于与 Juju 交互的库。有关 Juju 的更多信息,请参阅 Juju

Rust 语言编写的 hello world Juju charm 示例:要使此示例正常工作,您需要一个可工作的 Juju 环境。请参阅 [设置 Juju] (https://jujucharms.com/docs/stable/getting-started)。Juju 运行正常后,请参阅 什么是 Charm 了解 charm 的基本组件。

我们的 src/main.rs 将包含以下内容

示例

#[macro_use]
extern crate juju;
extern crate log;
use log::LogLevel;

fn config_changed()->Result<(), String>{
    juju::log("Hello Juju from Rust!", Some(LogLevel::Debug));
    return Ok(());
}

fn main(){
    let hook_registry: Vec<juju::Hook> = vec![
        hook!("config-changed", config_changed)
    ];
    let result =  juju::process_hooks(hook_registry);

    if result.is_err(){
        juju::log(&format!("Hook failed with error: {:?}", result.err()),
            Some(LogLevel::Error));
    }else{
        juju::log("Hook call was successful!", Some(LogLevel::Debug));
    }
}

现在您可以使用 cargo build 来构建,并在 hooks 目录中安装二进制文件。

在 hooks 目录中创建一个符号链接,使用 ln -s hello-world config-changed。Juju 将尝试运行该符号链接,并且我们的 Juju 库将将其映射到我们的 config_changed 函数。

我们可以通过使用 juju 部署来测试我们的 hello-world charm,并查看调试日志。有关更多信息,请参阅 部署 charm

你应在juju的调试日志中看到如下信息:unit-hello-world-0[6229]: 2015-08-21 16:16:05 INFO unit.hello-world/0.juju-log server.go:254 Hello Juju from Rust!

依赖项

约26MB
约491K SLoC