Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mseri/xapirpc-rs

Minimal RPC client for communication with xapi - more a PoC than anything else
https://github.com/mseri/xapirpc-rs

rust xapi xmlrpc

Last synced: 24 days ago
JSON representation

Minimal RPC client for communication with xapi - more a PoC than anything else

Awesome Lists containing this project

README

        

# xapirpc   [![Build Status]][travis] [![Doc Badge]][docs] [![Latest Version]][crates.io]

[Build Status]: https://api.travis-ci.org/mseri/xapirpc-rs.svg?branch=master
[travis]: https://travis-ci.org/mseri/xapirpc-rs
[Latest Version]: https://img.shields.io/crates/v/xapirpc.svg
[crates.io]: https://crates.io/crates/xapirpc
[Doc Badge]: https://docs.rs/xapirpc/badge.svg
[docs]: https://docs.rs/xapirpc/
Minimal library and CLI client for [xapi](https://github.com/xapi-project/xen-api) rpc calls.

---

The crate provides a small CLI utility to make RPC calls to
[xapi](https://github.com/xapi-project/xen-api), and
exports a library that exposes some common helpers to create xapi clients
(see [the documentation on docs.rs](https://docs.rs/xapirpc/)). The
CLI executable provides an example of use.

The output of the CLI tool is in json, so it can be piped to `jq` or
other json tools for further filtering. For example you can get the
`uuid` and `name_label` of all VMs with:

```bash
xapirpc VM get_all_records | jq '.[]|select(.is_a_template==false)|{uuid, name_label}'
```

There CLI help should clarify all the supported customisations.

```bash
$ xapirpc --help
Minimal xapi xmlrpc CLI client
USAGE:
xapirpc [FLAGS] [OPTIONS] [args]...
FLAGS:
--compact Output the result as non-prettified json
--help Prints help information
-V, --version Prints version information
OPTIONS:
-h, --host XenServer host. Can be passed with the XAPI_HOST env variable.
-p, --pass XenServer host user password. Can be passed with the XAPI_PASSWORD env variable.
-u, --user XenServer host user name. Can be passed with the XAPI_USER env variable.
ARGS:
Case sensitive value for the xapi class
Case sensitive value for the xapi method
... Ordered list of arguments for the call (if any). Do not pass a session.
```

The `host`, `user`, and `pass` value can be manually configured by creating
```
$HOME/.config/xapirpc/config.prefs.json
```
and adding them in a json object. E.g.
```bash
$ cat $HOME/.config/xapirpc/config.prefs.json
{"user":"my_user_name","pass":"my_pass"}
```

To try it, clone this repository and build with `cargo build --release` or install it using `cargo install xapirpc --force`.

# Acknowledgements

Thanks:

- @gaborigloi for porting the library to `quicli`
- @Pistahh for fixing the `jq` example and comments on the code