Skip to content

juergh/dwarf

Repository files navigation

Dwarf
=====

In a nutshell, dwarf is OpenStack API on top of local libvirt/KVM. It supports
a subset of the Keystone, Glance and Nova APIs to manage images and instances
on the local machine.


Restrictions
------------

Lots :-) It only supports a subset of the OpenStack API and it currently
doesn't do user authentication. Meaning everybody who can log into the machine
can manipulate all images and instances managed through dwarf.

Everything is serialized and blocking. All calls to dwarf will be served in the
order they're received and only return after they've finished. There's no
scheduling and background processing.


Configuration
-------------

After installation, check that the settings in '/etc/dwarf.conf' match your
environment. You need to restart dwarf if you make any modifications:
$ sudo initctl restart dwarf

Set the OpenStack environment variables (modify the port number accordingly, if
you changed it in the config file):
$ export OS_AUTH_URL=http://localhost:35357/v2.0/
$ export OS_COMPUTE_API_VERSION=1.1
$ export OS_REGION_NAME=dwarf-region
$ export OS_TENANT_NAME=dwarf-tenant
$ export OS_USERNAME=dwarf-user
$ export OS_PASSWORD=dwarf-password


Supported OpenStack CLI commands
--------------------------------

At the moment, the following commands are supported:

keystone token-get
keystone catalog

glance image-create
glance image-delete
glance image-list
glance image-show
glance image-update

nova flavor-create
nova flavor-delete
nova flavor-list
nova flavor-show

nova image-list
nova image-show

nova keypair-add
nova keypair-delete
nova keypair-list
nova keypair-show

nova boot
nova console-log
nova delete
nova list
nova reboot
nova show


Notes
-----

Default compute flavors are automatically added, check them with:
$ nova flavor-list

Before you can boot an instance, you need to add an image and a keypair:
$ nova keypair-add <key name>
$ glance image-create --name 'My Image Name' --file <image filename>

When booting an instance, the instance will receive a DHCP IP address from
libvirt's dnsmasq. It takes a bit until that happens, check the status with:
$ nova show <instance ID or name>


Debugging
---------

Check the log at /var/lib/dwarf/dwarf.log.