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.6"}
  ]
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/\

      • [ ] GET
      • [ ] PUT
      • [ ] PATCH
      • [ ] DELETE
  • [ ] containers

    • [x] GET all
    • [x] POST create
    • [ ] containers/\

      • [x] GET info
      • [x] PUT replace
      • [x] PATCH update
      • [x] POST rename
      • [ ] POST migrate
      • [x] DELETE
      • [x] exec

        • [x] POST exec (not supporting all features)
      • [x] files

        • [x] GET get
        • [x] POST put
        • [x] DELETE remove
      • [ ] snapshots

        • [x] GET all
        • [x] POST create
        • [ ] snapshots/\

          • [x] GET get
          • [x] POST rename
          • [ ] POST migrate
          • [x] DELETE remove
      • [x] state

        • [x] GET state
        • [x] POST set_state, start, stop, restart, freeze, unfreeze
      • [ ] logs

        • [x] GET all
        • [ ] logs/\

          • [x] GET get
          • [ ] DELETE
      • [ ] metadata

        • [x] GET metadata
        • [ ] PUT
        • [ ] metadata/templates

          • [x] GET all
          • [x] GET(?path) get
          • [ ] POST(?path)
          • [ ] PUT(?path)
          • [ ] DELETE(?path)
  • [ ] events

    • [ ] GET
  • [ ] images

    • [x] GET all
    • [ ] POST
    • [ ] images/\

      • [x] GET info
      • [x] PUT replace
      • [x] PATCH update
      • [x] DELETE remove
      • [ ] export

        • [ ] GET
      • [ ] refresh

        • [ ] POST
      • [ ] secret

        • [ ] POST
    • [x] aliases

      • [x] GET all
      • [x] POST create
      • [x] aliases/\

        • [x] GET info
        • [x] PUT replace
        • [x] PATCH update
        • [x] POST rename
        • [x] DELETE remove
  • [x] networks

    • [x] GET all
    • [x] POST create
    • [x] networks/\

      • [x] GET info
      • [x] PUT replace
      • [x] PATCH update
      • [x] POST rename
      • [x] DELETE remove
  • [ ] operations

    • [x] GET all
    • [ ] operations/\

      • [x] GET info
      • [x] DELETE remove
      • [x] wait

        • [x] GET wait
      • [ ] websocket

        • [ ] GET
  • [x] profiles

    • [x] GET all
    • [x] POST create
    • [x] profiles/\

      • [x] GET info
      • [x] PUT replace
      • [x] PATCH update
      • [x] POST rename
      • [x] DELETE remove
  • [ ] storage-pools

    • [x] GET all
    • [x] POST create
    • [ ] storage-pools/\

      • [x] GET info
      • [x] PUT replace
      • [x] PATCH update
      • [x] DELETE remove
      • [x] volumes

        • [x] GET all
        • [x] POST create
      • [ ] volumes/\/\

        • [ ] GET
        • [ ] PUT
        • [ ] PATCH
        • [ ] DELETE