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 33/98 (34%) 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]
- Region [1/1]
- 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 [6/14]
- Usage [X]
- Domain [1/5]
- List [X]
- Add [ ]
- Remove [ ]
- DKIM [0/2]
- User [4/4]
- List [X]
- Add [X]
- Remove [X]
- Set Password [X]
- Alias [0/3]
- List [ ]
- Add [ ]
- Remove [ ]
- DNS [6/10]
- Zone [2/3]
- List [X]
- Add [X]
- Remove [ ]
- Record [1/3]
- List [X]
- Add [ ]
- Remove [ ]
- Dyn [3/4]
- List [X]
- Add [X]
- Update [ ]
- Remove [X]
- Billing [1/1]
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.
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)
- [ ] 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.
- [ ] Tests!!! I've written some, but this should be comprehensively tested.
- [ ] Write tests that involve talking with a live server! This will enable breaking changes from LunaNode to be seen before they are messed with.
- [ ] Write a local test server for faster, more easily created edge-case testing.
- [ ] 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
Please consider supporting my business: Bytetools Technologies Inc. which is how I make money.
Or you can support me on librapay.