Current section

Files

Jump to
lxd lib endpoints images.ex
Raw

lib/endpoints/images.ex

defmodule LXD.Image do
alias LXD.Client
alias LXD.Utils
defp url() do
["/images"]
|> Path.join
end
def all(opts \\ []) do
as_url = Utils.arg(opts, :as_url, false)
fct = fn {:ok, _headers, body} ->
ls = body["metadata"]
|> Enum.map(fn image ->
case as_url do
true -> image
false -> image |> Path.basename
end
end)
{:ok, ls}
end
url()
|> Client.get
|> Utils.handle_lxd_response(opts ++ [{:fct, fct}])
end
end
defmodule LXD.Image.Fingerprint do
alias LXD.Client
alias LXD.Utils
defp url(fingerprint) do
["/images", fingerprint]
|> Path.join
end
def info(fingerprint, opts \\ []) do
url(fingerprint)
|> Client.get
|> Utils.handle_lxd_response(opts)
end
def replace(fingerprint, configs, opts \\ []) do
configs
|> Poison.encode
|> case do
{:ok, json} ->
url(fingerprint)
|> Client.put(json)
|> Utils.handle_lxd_response(opts)
{:error, reason} ->
{:error, reason}
end
end
def update(fingerprint, configs, opts \\ []) do
configs
|> Poison.encode
|> case do
{:ok, json} ->
url(fingerprint)
|> Client.patch(json)
|> Utils.handle_lxd_response(opts)
{:error, reason} ->
{:error, reason}
end
end
def remove(fingerprint, opts \\ []) do
url(fingerprint)
|> Client.delete
|> Utils.handle_lxd_response(opts)
end
end
defmodule LXD.Image.Alias do
alias LXD.Client
alias LXD.Utils
defp url(alias_name \\ "") do
["/images/aliases", alias_name]
|> Path.join
end
def all(opts \\ []) do
as_url = Utils.arg(opts, :as_url, false)
fct = fn {:ok, _headers, body} ->
ls = body["metadata"]
|> Enum.map(fn a ->
case as_url do
true -> a
false -> a |> Path.basename
end
end)
{:ok, ls}
end
url()
|> Client.get
|> Utils.handle_lxd_response(opts ++ [{:fct, fct}])
end
def create(alias_name, target, description \\ "", opts \\ []) do
%{
"name" => alias_name,
"target" => target,
"description" => description
}
|> Poison.encode
|> case do
{:ok, json} ->
url()
|> Client.post(json)
|> Utils.handle_lxd_response(opts)
{:error, reason} ->
{:error, reason}
end
end
def info(alias_name, opts \\ []) do
url(alias_name)
|> Client.get
|> Utils.handle_lxd_response(opts)
end
def replace(alias_name, configs, opts \\ []) do
configs
|> Poison.encode
|> case do
{:ok, json} ->
url(alias_name)
|> Client.put(json)
|> Utils.handle_lxd_response(opts)
{:error, reason} ->
{:error, reason}
end
end
def update(alias_name, configs, opts \\ []) do
configs
|> Poison.encode
|> case do
{:ok, json} ->
url(alias_name)
|> Client.patch(json)
|> Utils.handle_lxd_response(opts)
{:error, reason} ->
{:error, reason}
end
end
def rename(alias_name, new_name, opts \\ []) do
%{ "name" => new_name }
|> Poison.encode
|> case do
{:ok, json} ->
url(alias_name)
|> Client.post(json)
|> Utils.handle_lxd_response(opts)
{:error, reason} ->
{:error, reason}
end
end
def remove(alias_name, opts \\ []) do
url(alias_name)
|> Client.delete
|> Utils.handle_lxd_response(opts)
end
end