# Openstack
Openstack Client for Elixir
## Installation
First, add openstack to your dependencies in `mix.exs`:
def deps do
[{:openstack, "~> 0.0.2"}]
end
Then, update your dependencies:
$ mix deps.get
## Usage
result = Openstack.authenticate("http://keystone/v3",
"admin", "password", "admin", "Default")
case result do
{:ok, token} -> Neutron.network_list(token, "RegionOne", limit: 2)
end
## Macro
defmodule Mymodule do
import Openstack, only: :macros
defresource "server", "compute", "/servers", "server"
defresource "server", "compute", "/servers",
{"server", "servers"},
only: [:list, :show],
action: {:post, "/:id/action"}
end
## CLI
To build a executable cli application, run following command after
cloning this repo:
$ mix escript.build
Usage:
$ ./openstack
--os-auth-url http://keystone/v3 \
--os-username admin \
--os-password password \
--os-project-name admin \
--os-domain-name Default \
network list --limit 2
Or using environment variables:
export OS_AUTH_URL=http://keystone/v3
export OS_PROJECT_NAME=admin
export OS_DOMAIN_NAME=Default
export OS_USERNAME=admin
export OS_PASSWORD=password
export OS_REGION=RegionOne
export OS_DOMAIN_NAME=Default # optional
### Interactive shell
$ ./openstack
> network list --limit 1
...
> network show <id>
### more examples
floatingip create --floating-network-id <id>
user update <id> --password <new password>
volume list --all-tenants
server update <id> --name <new name>
network create --name net-1
subnet create --network-id <id> --ip-version 4 --cidr 192.168.200.0/24
firewall-policy create --name plicy
firewall create --firewall-policy-id <id>