5 releases
0.1.4 | Dec 4, 2022 |
---|---|
0.1.3 | Dec 4, 2022 |
0.1.2 | Dec 4, 2022 |
0.1.1 | Dec 4, 2022 |
0.1.0 | Oct 9, 2022 |
#168 in Email
22 downloads per month
84KB
1K
SLoC
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 [ ]
- Check [2/4]
- 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]
- Zone [3/3]
- 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
.
- For example:
Support This Project
Dependencies
~8–11MB
~197K SLoC