`nova-dns` package was developed to solve two tasks:
- map instance’s hostnames to ip addresses in DNS
- provide REST API to manage DNS
To solve first task service monitor message bus (RabbitMQ). For every started instance service add DNS record, for terminated – remove. DNS name is choose in form hostname.tenant_name.root_zone. If zone for tenant_name doesn’t exists yet, it is created and populated automatically.
To solve second task service start REST API server on specified ip/port. REST API supports authentication against keystone and utilize keystone’s RBAC.
As a DNS backend PowerDNS is used, but other backends (for example for Bind) can be added later.
Next we are going to add support for PTR zones and add ability to create personal zone for every started instance.