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.

1.8 KiB

lunanode

This is an API to work with the LunaNode's OpenStack-compatible [citation needed] API.

Installation

cargo install lunanode

API Keys

Add the LUNANODE_API_KEY and LUNANODE_KEY_ID 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)

  • 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!!! 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.
  • 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.

Support This Project

Please consider supporting my business: Bytetools Technologies Inc. which is how I make money. Or you can support me on librapay.