diff --git a/doc/source/examples/basic-config-sample-juno.conf b/doc/source/examples/basic-config-sample-juno.conf
deleted file mode 100644
index 8482b799b..000000000
--- a/doc/source/examples/basic-config-sample-juno.conf
+++ /dev/null
@@ -1,98 +0,0 @@
-[DEFAULT]
-########################
-## General Configuration
-########################
-# Show more verbose log output (sets INFO log level output)
-verbose = True
-
-# Show debugging output in logs (sets DEBUG log level output)
-debug = True
-
-# Top-level directory for maintaining designate's state
-state_path = /var/lib/designate
-
-# Log directory #Make sure and create this directory, or set it to some other directory that exists
-logdir = /var/log/designate
-
-# Driver used for issuing notifications
-notification_driver = messaging
-
-# Use "sudo designate-rootwrap /etc/designate/rootwrap.conf" to use the real
-# root filter facility.
-# Change to "sudo" to skip the filtering and just run the command directly
-# root_helper = sudo
-
-########################
-## Service Configuration
-########################
-#-----------------------
-# Central Service
-#-----------------------
-[service:central]
-# Driver used for backend communication (e.g. fake, rpc, bind9, powerdns)
-backend_driver = powerdns
-
-# Maximum domain name length
-max_domain_name_len = 255
-
-# Maximum record name length
-max_record_name_len = 255
-
-#-----------------------
-# API Service
-#-----------------------
-[service:api]
-# Address to bind the API server
-api_host = 0.0.0.0
-
-# Port the bind the API server to
-api_port = 9001
-
-# Authentication strategy to use - can be either "noauth" or "keystone"
-auth_strategy = keystone
-
-# Enabled API Version 1 extensions
-enabled_extensions_v1 = diagnostics, quotas, reports, sync
-
-#-----------------------
-# Keystone Middleware
-#-----------------------
-[keystone_authtoken]
-auth_host = 127.0.0.1
-auth_port = 35357
-auth_protocol = http
-admin_tenant_name = service
-admin_user = designate
-admin_password = designate
-
-########################
-## Storage Configuration
-########################
-#-----------------------
-# SQLAlchemy Storage
-#-----------------------
-[storage:sqlalchemy]
-# Database connection string - to configure options for a given implementation
-# like sqlalchemy or other see below
-connection = mysql://designate:designate@localhost/designate
-#connection_debug = 100
-#connection_trace = True
-#sqlite_synchronous = True
-idle_timeout = 3600
-max_retries = 10
-retry_interval = 10
-
-########################
-## Backend Configuration
-########################
-#-----------------------
-# PowerDNS Backend
-#-----------------------
-[backend:powerdns]
-connection = mysql://powerdns:powerdns@localhost/powerdns
-#connection_debug = 100
-#connection_trace = True
-#sqlite_synchronous = True
-idle_timeout = 3600
-max_retries = 10
-retry_interval = 10
diff --git a/doc/source/examples/basic-config-sample-kilo.conf b/doc/source/examples/basic-config-sample-kilo.conf
deleted file mode 100644
index 5719fb6d6..000000000
--- a/doc/source/examples/basic-config-sample-kilo.conf
+++ /dev/null
@@ -1,142 +0,0 @@
-[DEFAULT]
-########################
-## General Configuration
-########################
-# Show more verbose log output (sets INFO log level output)
-verbose = True
-
-# Show debugging output in logs (sets DEBUG log level output)
-debug = True
-
-# Top-level directory for maintaining designate's state.
-state_path = $pybasedir/state
-
-# Log directory
-logdir = $pybasedir/log
-
-# Driver used for issuing notifications
-notification_driver = messaging
-
-# Use "sudo designate-rootwrap /etc/designate/rootwrap.conf" to use the real
-# root filter facility.
-# Change to "sudo" to skip the filtering and just run the command directly
-# root_helper = sudo
-
-# RabbitMQ Config
-rabbit_userid = designate
-rabbit_password = designate
-#rabbit_virtual_host = /
-#rabbit_use_ssl = False
-#rabbit_hosts = 127.0.0.1:5672
-
-########################
-## Service Configuration
-########################
-#-----------------------
-# Central Service
-#-----------------------
-[service:central]
-# Maximum domain name length
-#max_domain_name_len = 255
-
-# Maximum record name length
-#max_record_name_len = 255
-
-#-----------------------
-# API Service
-#-----------------------
-[service:api]
-# Address to bind the API server
-api_host = 0.0.0.0
-
-# Port to bind the API server
-api_port = 9001
-
-# Authentication strategy to use - can be either "noauth" or "keystone"
-auth_strategy = noauth
-
-# Enable API Version 1
-enable_api_v1 = True
-
-# Enabled API Version 1 extensions
-enabled_extensions_v1 = diagnostics, quotas, reports, sync, touch
-
-# Enable API Version 2
-enable_api_v2 = True
-
-# Enabled API Version 2 extensions
-enabled_extensions_v2 = quotas, reports
-
-#-----------------------
-# mDNS Service
-#-----------------------
-[service:mdns]
-#workers = None
-#host = 0.0.0.0
-#port = 5354
-#tcp_backlog = 100
-
-#-----------------------
-# Pool Manager Service
-#-----------------------
-[service:pool_manager]
-pool_id = 794ccc2c-d751-44fe-b57f-8894c9f5c842
-#workers = None
-#threshold_percentage = 100
-#poll_timeout = 30
-#poll_retry_interval = 2
-#poll_max_retries = 3
-#poll_delay = 1
-#periodic_recovery_interval = 120
-#periodic_sync_interval = 300
-#periodic_sync_seconds = None
-#cache_driver = sqlalchemy
-
-#####################
-## Pool Configuration
-#####################
-[pool:794ccc2c-d751-44fe-b57f-8894c9f5c842]
-nameservers = f02a0c72-c701-4ec2-85d7-197b30992ce8
-targets = f02a0c72-c701-4ec2-85d7-197b30992ce9
-
-[pool_nameserver:f02a0c72-c701-4ec2-85d7-197b30992ce8]
-host = 127.0.0.1
-port = 53
-
-[pool_target:f02a0c72-c701-4ec2-85d7-197b30992ce9]
-masters = 127.0.0.1:5354
-type = bind9
-options = port: 53, host: 127.0.0.1
-
-###################################
-## Pool Manager Cache Configuration
-###################################
-#-----------------------
-# SQLAlchemy Pool Manager Cache
-#-----------------------
-[pool_manager_cache:sqlalchemy]
-connection = mysql://root:password@127.0.0.1/designate_pool_manager
-#connection_debug = 100
-#connection_trace = False
-#sqlite_synchronous = True
-#idle_timeout = 3600
-#max_retries = 10
-#retry_interval = 10
-
-########################
-## Storage Configuration
-########################
-#-----------------------
-# SQLAlchemy Storage
-#-----------------------
-[storage:sqlalchemy]
-# Database connection string - to configure options for a given implementation
-# like sqlalchemy or other see below
-connection = mysql://root:password@127.0.0.1/designate
-#connection_debug = 100
-#connection_trace = True
-#sqlite_synchronous = True
-#idle_timeout = 3600
-#max_retries = 10
-#retry_interval = 10
-
diff --git a/doc/source/examples/basic-config-sample.conf b/doc/source/examples/basic-config-sample.conf
index 623acff65..94e90ceaf 100644
--- a/doc/source/examples/basic-config-sample.conf
+++ b/doc/source/examples/basic-config-sample.conf
@@ -2,18 +2,12 @@
########################
## General Configuration
########################
-# Show more verbose log output (sets INFO log level output)
-verbose = True
-
# Show debugging output in logs (sets DEBUG log level output)
debug = True
# Top-level directory for maintaining designate's state.
state_path = $pybasedir/state
-# Log directory
-logdir = $pybasedir/log
-
# Driver used for issuing notifications
notification_driver = messaging
@@ -80,35 +74,48 @@ enabled_extensions_v2 = quotas, reports
#tcp_backlog = 100
#-----------------------
-# Pool Manager Service
+# Worker Service
#-----------------------
-[service:pool_manager]
-pool_id = 794ccc2c-d751-44fe-b57f-8894c9f5c842
+[service:worker]
+# Whether to send events to worker instead of Pool Manager
+enabled = True
#workers = None
+#threads = 1000
#threshold_percentage = 100
#poll_timeout = 30
-#poll_retry_interval = 2
-#poll_max_retries = 3
-#poll_delay = 1
-#periodic_recovery_interval = 120
-#periodic_sync_interval = 300
-#periodic_sync_seconds = None
-#cache_driver = sqlalchemy
+#poll_retry_interval = 15
+#poll_max_retries = 10
+#poll_delay = 5
+notify = True
-###################################
-## Pool Manager Cache Configuration
-###################################
#-----------------------
-# SQLAlchemy Pool Manager Cache
+# Producer Service
#-----------------------
-[pool_manager_cache:sqlalchemy]
-connection = mysql+pymysql://root:password@127.0.0.1/designate_pool_manager?charset=utf8
-#connection_debug = 100
-#connection_trace = False
-#sqlite_synchronous = True
-#idle_timeout = 3600
-#max_retries = 10
-#retry_interval = 10
+[service:producer]
+#workers = None
+#threads = 1000
+#enabled_tasks = None
+#export_synchronous = True
+
+#------------------------
+# Deleted domains purging
+#------------------------
+[producer_task:domain_purge]
+#interval = 3600 # 1h
+#batch_size = 100
+#time_threshold = 604800 # 7 days
+
+#------------------------
+# Delayed zones NOTIFY
+#------------------------
+[producer_task:delayed_notify]
+#interval = 5
+
+#------------------------
+# Worker Periodic Recovery
+#------------------------
+[producer_task:worker_periodic_recovery]
+#interval = 120
########################
## Storage Configuration
diff --git a/doc/source/index.rst b/doc/source/index.rst
index 980b92732..d53a2ade7 100644
--- a/doc/source/index.rst
+++ b/doc/source/index.rst
@@ -46,7 +46,6 @@ Install Guides
Install Guides are on the main `OpenStack Install Guide Site `_
-
Upgrade Guides
--------------
@@ -80,7 +79,7 @@ Developer Documentation
:maxdepth: 1
sourcedoc
- install/ubuntu-dev
+ ubuntu-dev
devstack
tempest
related
diff --git a/doc/source/install/ubuntu-dev.rst b/doc/source/ubuntu-dev.rst
similarity index 64%
rename from doc/source/install/ubuntu-dev.rst
rename to doc/source/ubuntu-dev.rst
index 9c3a5581f..1f84605fa 100644
--- a/doc/source/install/ubuntu-dev.rst
+++ b/doc/source/ubuntu-dev.rst
@@ -31,7 +31,7 @@ This guide will walk you through setting up a typical development environment fo
using BIND9 as the DNS backend and MySQL as the storage backend. For a more complete discussion on
installation & configuration options, please see :ref:`architecture`.
-For this guide you will need access to an Ubuntu Server (14.04).
+For this guide you will need access to an Ubuntu Server (16.04).
.. _Development Environment:
@@ -48,11 +48,11 @@ Installing Designate
::
- $ sudo apt-get update
- $ sudo apt-get install python-pip python-virtualenv libssl-dev libffi-dev git
- $ sudo apt-get build-dep python-lxml
+ $ sudo apt update
+ $ sudo apt install -y python-pip python-virtualenv libssl-dev libffi-dev git
+ $ sudo apt build-dep -y python-lxml
-2. Clone the Designate repo from GitHub
+2. Clone the Designate repo
::
@@ -84,13 +84,9 @@ Installing Designate
5. Install Designate and its dependencies
-.. note::
- If you run into the error: Installed distribution pbr 1.1.1 conflicts with requirement pbr>=0.6,!=0.7,<1.0, try doing pip install pbr==0.11.0
-
::
- $ pip install -r requirements.txt -r test-requirements.txt
- $ python setup.py develop
+ $ pip install -e .
6. Change directories to the etc/designate folder.
@@ -110,21 +106,13 @@ Installing Designate
$ cp -a rootwrap.conf.sample rootwrap.conf
-8. Make the directory for Designate’s log files
-
-::
-
- $ mkdir -p ../../log
-
-
-9. Make the directory for Designate’s state files
+8. Make the directory for Designate’s state files
::
$ mkdir -p ../../state
-
Configuring Designate
======================
@@ -140,7 +128,7 @@ Create the designate.conf file
Copy or mirror the configuration from this sample file here:
-.. literalinclude:: ../examples/basic-config-sample.conf
+.. literalinclude:: ./examples/basic-config-sample.conf
:language: ini
@@ -151,7 +139,7 @@ Install the RabbitMQ package
::
- $ sudo apt-get install rabbitmq-server
+ $ sudo apt install -y rabbitmq-server
Create a user:
@@ -176,7 +164,7 @@ Install the MySQL server package
::
- $ sudo apt-get install mysql-server-5.5
+ $ sudo apt install -y mysql-server
If you do not have MySQL previously installed, you will be prompted to change the root password.
@@ -199,7 +187,6 @@ Create the Designate tables
Enter password:
mysql> CREATE DATABASE `designate` CHARACTER SET utf8 COLLATE utf8_general_ci;
- mysql> CREATE DATABASE `designate_pool_manager` CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> exit;
@@ -207,7 +194,7 @@ Install additional packages
::
- $ sudo apt-get install libmysqlclient-dev
+ $ sudo apt install -y libmysqlclient-dev
$ pip install pymysql
@@ -221,7 +208,7 @@ Install the DNS server, BIND9
::
- $ sudo apt-get install bind9
+ $ sudo apt install -y bind9
Update the BIND9 Configuration
@@ -248,16 +235,16 @@ Disable AppArmor for BIND9
::
$ sudo touch /etc/apparmor.d/disable/usr.sbin.named
- $ sudo service apparmor reload
+ $ sudo systemctl reload apparmor
Restart BIND9:
::
- $ sudo service bind9 restart
+ $ sudo systemctl restart bind9
-Create and Import pools.yml File
-================================
+Create and Import pools.yaml File
+=================================
.. index::
double: install; pools
@@ -270,21 +257,14 @@ Create the pools.yaml file
Copy or mirror the configuration from this sample file here:
-.. literalinclude:: ../examples/basic-pools-sample.yaml
+.. literalinclude:: ./examples/basic-pools-sample.yaml
:language: yaml
-Import the pools.yaml file into Designate
-
-::
-
- $ designate-manage pool update --file pools.yaml
-
-Initialize & Start the Central Service
-======================================
+Initialize the Database
+=======================
.. index::
- double: install; central
-
+ double: install; database
Sync the Designate database.
@@ -292,6 +272,13 @@ Sync the Designate database.
$ designate-manage database sync
+Start the Central Service
+=========================
+
+.. index::
+ double: install; central
+
+
Start the central service.
::
@@ -301,93 +288,41 @@ Start the central service.
You'll now be seeing the log from the central service.
-Initialize & Start the API Service
-==================================
+
+Initialize Pools Information
+============================
+
+Import the pools.yaml file into Designate. It is important that
+``designate-central`` is started before invoking this command
+
+::
+
+ $ designate-manage pool update --file pools.yaml
+
+
+Start the other Services
+========================
.. index::
- double: install; api
+ double: install; services
-Open up a new ssh window and log in to your server (or however you’re communicating with your server).
+Open up some new ssh windows and log in to your server (or open some new screen/tmux sessions).
::
$ cd openstack/designate
-
-If Designate was installed into a virtualenv, make sure your virtualenv is sourced
-
-::
-
$ source .venv/bin/activate
-Start the API Service
+Start the other services
::
$ designate-api
-
-You’ll now be seeing the log from the API service.
-
-
-Initialize & Start the Pool Manager Service
-===========================================
-
-.. index::
- double: install; pool-manager
-
-Open up a new ssh window and log in to your server (or however you’re communicating with your server).
-
-::
-
- $ cd openstack/designate
-
-If Designate was installed into a virtualenv, make sure your virtualenv is sourced
-
-::
-
- $ source .venv/bin/activate
-
-Sync the Pool Manager's cache:
-
-::
-
- $ designate-manage pool-manager-cache sync
-
-Start the pool manager service:
-
-::
-
- $ designate-pool-manager
-
-
-You'll now be seeing the log from the Pool Manager service.
-
-
-Initialize & Start the MiniDNS Service
-======================================
-
-.. index::
- double: install; minidns
-
-Open up a new ssh window and log in to your server (or however you’re communicating with your server).
-
-::
-
- $ cd openstack/designate
-
-If Designate was installed into a virtualenv, make sure your virtualenv is sourced
-
-::
-
- $ source .venv/bin/activate
-
-Start the minidns service:
-
-::
-
$ designate-mdns
+ $ designate-worker
+ $ designate-producer
-
-You'll now be seeing the log from the MiniDNS service.
+You’ll now be seeing the logs from the other services.
Exercising the API
==================
@@ -395,19 +330,38 @@ Exercising the API
.. note:: If you have a firewall enabled, make sure to open port 53, as well as Designate's default port (9001).
Using a web browser, curl statement, or a REST client, calls can be made to the
-Designate API using the following format where "api_version" is either v1 or v2
-and "command" is any of the commands listed under the corresponding version at :ref:`rest`
+Designate API. You can find the various API calls on the api-ref_ document.
+
+For example:
::
- http://IP.Address:9001/api_version/command
+ $ curl 127.0.0.1:9001/v2/zones -H 'Content-Type: application/json' --data '
+ {
+ "name": "example.com.",
+ "email": "example@example.com"
+ }'
+
+ {"status": "PENDING",.....
+ $ curl 127.0.0.1:9001/v2/zones
+ {"zones": [{"status": "ACTIVE",.....
+
+The ``ACTIVE`` status shows that the zone propagated. So you should be able to perform a DNS query and
+see it:
+
+::
+
+ $ dig @127.0.0.1 example.com SOA +short
+ ns1-1.example.org. example.example.com. 1487884120 3531 600 86400 3600
You can find the IP Address of your server by running
::
- curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
+ ip addr show eth0 | grep "inet\b" | awk '{print $2}' | cut -d/ -f1
-A couple of notes on the API:
+If you have Keystone set up, you can use it by configuring the ``[keystone_authtoken]`` section and changing
+the ``auth_strategy = keystone`` in the ``service:api`` section. This will make it easier to use clients
+like the ``openstack`` CLI that expect Keystone.
-- Before Domains are created, you must create a server (/v1/servers).
+.. _api-ref: https://developer.openstack.org/api-ref/dns/