Introduction
============

ucloud is a modern, IPv6 first virtual machine management system.
It is an alternative to `OpenNebula <https://opennebula.org/>`_,
`OpenStack <https://www.openstack.org/>`_ or
`Cloudstack <https://cloudstack.apache.org/>`_.

ucloud is the first cloud management system that puts IPv6
first. ucloud also has an integral ordering process that we missed in
existing solutions.

The ucloud documentation is separated into various sections for the
different use cases:

* :ref:`The user guide <user-guide>` describes how to use an existing
  ucloud installation
* There are :ref:`setup instructions <setup-install>` which describe on how to setup a new
  ucloud instance
* :ref:`The admin guide <admin-guide>` describe on how to
  administrate ucloud


Architecture
------------
We try to reuse existing components for ucloud. Generally speaking,
ucloud consist of a variety of daemons who handle specific tasks and
connect to a shared database.

All interactions with the clients are done through an API.

ucloud consists of the following components:

* API
* Scheduler
* Host
* File Scanner
* Image Scanner
* Metadata Server
* VM Init Scripts (dubbed as ucloud-init)How does ucloud work?


Tech Stack
----------
The following technologies are utilised:

* Python 3
* Flask
* QEMU as hypervisor
* etcd (key/value store)
* radvd for Router Advertisement


Optional components:

* CEPH for distributed image storage
* uotp for user authentication
* netbox for IPAM
