You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
176 lines
4.2 KiB
176 lines
4.2 KiB
# `lunanode`
|
|
|
|
This is an API to work with the LunaNode's OpenStack-compatible [citation needed] API.
|
|
This crate currently covers only the most basic functionality from the Lunanode API. Currently 43/98 (44%) API calls.
|
|
If you'd like to contribute additional functionality, please feel free to make an MR.
|
|
|
|
* VM [8/21]
|
|
* List [X]
|
|
* Start [X]
|
|
* Stop [X]
|
|
* Reboot [X]
|
|
* Diskswap [ ]
|
|
* Rescue [ ]
|
|
* Shelve [ ]
|
|
* Unshelve [ ]
|
|
* Delete [ ]
|
|
* Info [X]
|
|
* Reimage [ ]
|
|
* Resize [ ]
|
|
* VNC [ ]
|
|
* IP [1/3]
|
|
* Floaitng IP Add [ ]
|
|
* Floating IP Delete [ ]
|
|
* IP List [X]
|
|
* IP Add [X]
|
|
* IP Delete [X]
|
|
* Security group Add [ ]
|
|
* Security group Delete [ ]
|
|
* Image [4/7]
|
|
* Fetch [ ]
|
|
* List [X]
|
|
* Details [X]
|
|
* Delete [X]
|
|
* Replicate [X]
|
|
* Rename [ ]
|
|
* Retrieve [ ]
|
|
* Volume [1/12]
|
|
* Create [ ]
|
|
* List [X]
|
|
* Info [ ]
|
|
* Attach [ ]
|
|
* Detach [ ]
|
|
* Extend [ ]
|
|
* Rename [ ]
|
|
* Delete [ ]
|
|
* Snapshot [0/4]
|
|
* Create [ ]
|
|
* List [ ]
|
|
* Replicate [ ]
|
|
* Delete [ ]
|
|
* Floating IP [1/3]
|
|
* List [X]
|
|
* Add [ ]
|
|
* Delete [ ]
|
|
* Network [1/3]
|
|
* List [X]
|
|
* Add [ ]
|
|
* Delete [ ]
|
|
* Security Group [0/7]
|
|
* List [ ]
|
|
* Create [ ]
|
|
* Delete [ ]
|
|
* Rename [ ]
|
|
* Rule List [ ]
|
|
* Rule Insert [ ]
|
|
* Rule Delete [ ]
|
|
* Script [0/5]
|
|
* List [ ]
|
|
* Get [ ]
|
|
* Create [ ]
|
|
* Update [ ]
|
|
* Delete [ ]
|
|
* SSH Key [1/3]
|
|
* List [X]
|
|
* Add [ ]
|
|
* Remove [ ]
|
|
* Plan [1/1]
|
|
* List [X]
|
|
* Region [1/1]
|
|
* List [X]
|
|
* Monitor [3/10]
|
|
* Check [2/4]
|
|
* List [X]
|
|
* Types [X]
|
|
* Add [ ]
|
|
* Remove [ ]
|
|
* Contact [1/4]
|
|
* List [X]
|
|
* Add [ ]
|
|
* Remove [ ]
|
|
* Alert [0/3]
|
|
* List [ ]
|
|
* Add [ ]
|
|
* Remove [ ]
|
|
* Email [14/14]
|
|
* Usage [X]
|
|
* Domain [5/5]
|
|
* List [X]
|
|
* Add [X]
|
|
* Remove [X]
|
|
* DKIM [2/2]
|
|
* Set [X]
|
|
* Unset [X]
|
|
* User [4/4]
|
|
* List [X]
|
|
* Add [X]
|
|
* Remove [X]
|
|
* Set Password [X]
|
|
* Alias [3/3]
|
|
* List [X]
|
|
* Add [X]
|
|
* Remove [X]
|
|
* DNS [9/10]
|
|
* Zone [3/3]
|
|
* List [X]
|
|
* Add [X]
|
|
* Remove [X]
|
|
* Record [3/3]
|
|
* List [X]
|
|
* Add [X]
|
|
* Remove [X]
|
|
* Dyn [3/4]
|
|
* List [X]
|
|
* Add [X]
|
|
* Update [ ]
|
|
* Remove [X]
|
|
* Billing [1/1]
|
|
* Credit [X]
|
|
|
|
## Installation
|
|
|
|
`cargo install lunanode`
|
|
|
|
## API Keys
|
|
|
|
Add the `LUNANODE_API_KEY`, `LUNANODE_KEY_ID` and `LUNANODE_API_PARTIALKEY` (the first 64 chars of `LUNANODE_API_KEY`) to your environment variables.
|
|
Without these variables set, the tool will not run. You can also specify the keys manually through command-line arguments.
|
|
|
|
## Usage
|
|
|
|
See `lunanode help` screen.
|
|
|
|
Available subcommands:
|
|
|
|
* `billing`
|
|
* `dns`
|
|
* `dyn`
|
|
* `floating` (for LunaNode's floating IP system)
|
|
* `image`
|
|
* `network`
|
|
* `record` (DNS)
|
|
* `ssh-key`
|
|
* `vm`
|
|
* `volume`
|
|
* `zone`
|
|
|
|
Note that right now, only getting data through the `list/` endpoints is supported.
|
|
See section help for more details, i.e.: `lunanode image help`
|
|
|
|
## TODO (looking for contributors)
|
|
|
|
* [ ] Simplify code so there is less boilerplate. In particular, writing out every enum variant is pretty annoying when I need the same info out of them either way.
|
|
* [ ] Tests!
|
|
* [ ] Create more detailed documentation. `#[deny(missing_docs)]` is on, but some of the decisions in the code aren't explained very well.
|
|
* [ ] Cover EVERY API endpoint.
|
|
* [ ] Stricter typing. Certain attributes, even though they are recieved as Strings, should really be some kind of `enum`. Make every non-String type some kind of enum.
|
|
* [ ] UUIDs should be UUID types and not string. The only library I could find to do this, Uuid, seems to serialize them without the dashes, which screws up Lunanode... annoyingly.
|
|
* [ ] Subnets should be more strictly types. They should always be an IP/subnet combo as two fields (std::net::Ipv4Addr, i32(0..32)).
|
|
* [ ] Automatically create IDs from names, or other identifiying info instead of using the RESP API's id system.
|
|
* For example: `email user add tait@tait.tech` should automatically fetch the domain ID required to make this call normally: `email user add DOMAIN_ID tait@tait.tech`.
|
|
* Another example: `vm shutdown my_webserver` would automatically exapnd to find the VM with the name my_webserver and have it shutdown expanding the name into the UUID: `vm shutdown ffff-ffff-ffff-ffffffffffffffff`.
|
|
|
|
## Support This Project
|
|
|
|
* [Support me on librapay](https://liberapay.com/tait/).
|