Current section

Files

Jump to
lxd lib endpoints storage.ex
Raw

lib/endpoints/storage.ex

defmodule LXD.Storage do
alias LXD.Client
alias LXD.Utils
def all(opts \\ []) do
as_url = Utils.arg(opts, :as_url, false)
fct = fn {:ok, _headers, body} ->
ls = body["metadata"]
|> Enum.map(fn storage ->
case as_url do
true -> storage
false -> storage |> Path.basename
end
end)
{:ok, ls}
end
"/storage-pools"
|> Client.get
|> Utils.handle_lxd_response(opts ++ [{:fct, fct}])
end
def create(configs, opts \\ []) do
"/storage-pools"
|> Client.post(Poison.encode!(configs))
|> Utils.handle_lxd_response(opts)
end
def info(name, opts \\ []) do
"/storage-pools/" <> name
|> Client.get
|> Utils.handle_lxd_response(opts)
end
def replace(name, configs, opts \\ []) do
"/storage-pools/" <> name
|> Client.put(Poison.encode!(configs))
|> Utils.handle_lxd_response(opts)
end
def update(name, configs, opts \\ []) do
"/storage-pools/" <> name
|> Client.patch(Poison.encode!(configs))
|> Utils.handle_lxd_response(opts)
end
def remove(name, opts \\ []) do
"/storage-pools/" <> name
|> Client.delete
|> Utils.handle_lxd_response(opts)
end
end
defmodule LXD.Storage.Volume do
alias LXD.Client
alias LXD.Utils
def all(storage_name, opts \\ []) do
as_url = Utils.arg(opts, :as_url, false)
fct = fn {:ok, _headers, body} ->
ls = body["metadata"]
|> Enum.map(fn volume ->
case as_url do
true -> volume
false -> volume |> Path.basename
end
end)
{:ok, ls}
end
"/storage-pools/" <> storage_name <> "/volumes"
|> Client.get
|> Utils.handle_lxd_response(opts ++ [{:fct, fct}])
end
def create(storage_name, configs, opts \\ []) do
"/storage-pools/" <> storage_name <> "/volumes"
|> Client.post(Poison.encode!(configs))
|> Utils.handle_lxd_response(opts)
end
end