lxd

LXD API wrapper


Keywords
api, elixir, lxc, lxc-containers, lxd, wrapper
License
MIT

Documentation

LXD Elixir

Hex.pm Hex Docs

Documentation

Documentation is available on Hexdocs HERE

Installation

The package can be installed by adding lxd to your list of dependencies in mix.exs:

def deps do
  [
    {:lxd, "~> 0.1.7"}
  ]
end

Usage

TODO

Contributing

This version of the project is very early. I have implemented what I needed for my projects using LXD containers and now working on it when I have some time.

I am new to Elixir and LXD, so your help and advices are more than welcome on this project.

Here a few things I have in mind to work on:

  • Implement missing endpoints (you can find the list of the coverage status for all LXD endpoints down below).
  • Found a way to test everything without doing any damage to the host running the test (maybe by using a LXD/docker container with LXD installed on it)
  • Add better coverage for tests.

How to contribute

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

LXD API coverage

  • /
    • GET
  • /1.0
    • GET
    • PUT
    • PATCH
  • certificates
    • GET
    • POST
    • certificates/<fingerprint>
      • GET
      • PUT
      • PATCH
      • DELETE
  • containers
    • GET all
    • POST create
    • containers/<name>
      • GET info
      • PUT replace
      • PATCH update
      • POST rename
      • POST migrate
      • DELETE
      • exec
        • POST exec (not supporting all features)
      • files
        • GET get
        • POST put
        • DELETE remove
      • snapshots
        • GET all
        • POST create
        • snapshots/<name>
          • GET get
          • POST rename
          • POST migrate
          • DELETE remove
      • state
        • GET state
        • POST set_state, start, stop, restart, freeze, unfreeze
      • logs
        • GET all
        • logs/<logfile>
          • GET get
          • DELETE
      • metadata
        • GET metadata
        • PUT
        • metadata/templates
          • GET all
          • GET(?path) get
          • POST(?path)
          • PUT(?path)
          • DELETE(?path)
  • events
    • GET
  • images
    • GET all
    • POST
    • images/<fingerprint>
      • GET info
      • PUT replace
      • PATCH update
      • DELETE remove
      • export
        • GET
      • refresh
        • POST
      • secret
        • POST
    • aliases
      • GET all
      • POST create
      • aliases/<name>
        • GET info
        • PUT replace
        • PATCH update
        • POST rename
        • DELETE remove
  • networks
    • GET all
    • POST create
    • networks/<name>
      • GET info
      • PUT replace
      • PATCH update
      • POST rename
      • DELETE remove
  • operations
    • GET all
    • operations/<uuid>
      • GET info
      • DELETE remove
      • wait
        • GET wait
      • websocket
        • GET
  • profiles
    • GET all
    • POST create
    • profiles/<name>
      • GET info
      • PUT replace
      • PATCH update
      • POST rename
      • DELETE remove
  • storage-pools
    • GET all
    • POST create
    • storage-pools/<name>
      • GET info
      • PUT replace
      • PATCH update
      • DELETE remove
      • volumes
        • GET all
        • POST create
      • volumes/<type>/<name>
        • GET
        • PUT
        • PATCH
        • DELETE