diff --git a/.gitignore b/.gitignore
index 5ec2485..83baf33 100644
--- a/.gitignore
+++ b/.gitignore
@@ -52,6 +52,7 @@ output/*/index.html
# Sphinx
doc/build
+doc/source/_static
# pbr generates these
AUTHORS
diff --git a/.zuul.yaml b/.zuul.yaml
index 54a74af..e6c1437 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -2,7 +2,7 @@
queue: telemetry
templates:
- openstack-python3-jobs
- # TODO(tkajinm): Enable these once ready
- #- publish-openstack-docs-pti
+ - publish-openstack-docs-pti
+ # TODO(tkajinm): Enable this once ready
#- release-notes-jobs-python3
- check-requirements
diff --git a/doc/requirements.txt b/doc/requirements.txt
index 60ba470..5440d55 100644
--- a/doc/requirements.txt
+++ b/doc/requirements.txt
@@ -2,3 +2,4 @@ sphinx>=2.0.0,!=2.1.0 # BSD
openstackdocstheme>=2.2.1 # Apache-2.0
# releasenotes
reno>=3.1.0 # Apache-2.0
+sphinxcontrib-pecanwsme>=0.10.0 # BSD
diff --git a/doc/source/cli/index.rst b/doc/source/cli/index.rst
deleted file mode 100644
index 48ee222..0000000
--- a/doc/source/cli/index.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-================================
-Command line interface reference
-================================
-
-CLI reference of aetos.
diff --git a/doc/source/conf.py b/doc/source/conf.py
index 9e13f66..5c0865c 100644
--- a/doc/source/conf.py
+++ b/doc/source/conf.py
@@ -14,6 +14,9 @@
import os
import sys
+BASE_DIR = os.path.dirname(os.path.abspath(__file__))
+ROOT = os.path.abspath(os.path.join(BASE_DIR, "..", ".."))
+
sys.path.insert(0, os.path.abspath('../..'))
# -- General configuration ----------------------------------------------------
@@ -22,9 +25,27 @@ sys.path.insert(0, os.path.abspath('../..'))
extensions = [
'sphinx.ext.autodoc',
'openstackdocstheme',
+ 'oslo_config.sphinxconfiggen',
+ 'oslo_config.sphinxext',
+ 'oslo_policy.sphinxpolicygen',
+ 'oslo_policy.sphinxext',
+ 'wsmeext.sphinxext',
+ 'sphinxcontrib.pecanwsme.rest',
+ 'sphinxcontrib.httpdomain',
+
# 'sphinx.ext.intersphinx',
]
+config_generator_config_file = os.path.join(
+ ROOT, 'etc/aetos/aetos-config-generator.conf')
+sample_config_basename = '_static/aetos'
+
+policy_generator_config_file = os.path.join(
+ ROOT, 'etc/aetos/aetos-policy-generator.conf'
+)
+sample_policy_basename = '_static/aetos'
+
+
# autodoc generation is a bit aggressive and a nuisance when doing heavy
# text edit cycles.
# execute "export SPHINX_DEBUG=1" in your terminal to disable
diff --git a/doc/source/configuration/aetos-config-file.rst b/doc/source/configuration/aetos-config-file.rst
new file mode 100644
index 0000000..4123c1d
--- /dev/null
+++ b/doc/source/configuration/aetos-config-file.rst
@@ -0,0 +1,22 @@
+Aetos Sample Configuration File
+===============================
+
+Configure Aetos by editing /etc/aetos/aetos.conf.
+
+No config file is provided with the source code, it will be created during
+the installation. In case where no configuration file was installed, one
+can be easily created by running::
+
+ oslo-config-generator \
+ --config-file=/etc/aetos/aetos-config-generator.conf \
+ --output-file=/etc/aetos/aetos.conf
+
+
+.. only:: html
+
+ The following is a sample Aetos configuration for adaptation and use.
+ It is auto-generated from Aetos when this documentation is built, and
+ can also be viewed in `file form <../_static/aetos.conf.sample>`_.
+
+ .. literalinclude:: ../_static/aetos.conf.sample
+
diff --git a/doc/source/configuration/aetos-config-options.rst b/doc/source/configuration/aetos-config-options.rst
new file mode 100644
index 0000000..880784e
--- /dev/null
+++ b/doc/source/configuration/aetos-config-options.rst
@@ -0,0 +1,7 @@
+Aetos Configuration Options
+===========================
+
+.. show-options::
+ :split-namespaces:
+
+ aetos
diff --git a/doc/source/configuration/index.rst b/doc/source/configuration/index.rst
index 9763852..df17306 100644
--- a/doc/source/configuration/index.rst
+++ b/doc/source/configuration/index.rst
@@ -2,4 +2,8 @@
Configuration
=============
-Configuration of aetos.
+.. toctree::
+ aetos-config-file.rst
+ aetos-config-options.rst
+ policy.rst
+ sample-policy-yaml.rst
diff --git a/doc/source/configuration/policy.rst b/doc/source/configuration/policy.rst
new file mode 100644
index 0000000..1d19662
--- /dev/null
+++ b/doc/source/configuration/policy.rst
@@ -0,0 +1,9 @@
+======================================
+Aetos Sample Policy Configuration File
+======================================
+
+The following is an overview of all available policies in Aetos.
+For a sample configuration file, refer to :doc:`sample-policy-yaml`.
+
+.. show-policy::
+ :config-file: ../../etc/aetos/aetos-policy-generator.conf
diff --git a/doc/source/configuration/sample-policy-yaml.rst b/doc/source/configuration/sample-policy-yaml.rst
new file mode 100644
index 0000000..f148e77
--- /dev/null
+++ b/doc/source/configuration/sample-policy-yaml.rst
@@ -0,0 +1,8 @@
+===========
+policy.yaml
+===========
+
+Use the ``policy.yaml`` file to define additional access controls that will be
+applied to Aetos:
+
+.. literalinclude:: ../_static/aetos.policy.yaml.sample
diff --git a/doc/source/contributor/api.rst b/doc/source/contributor/api.rst
new file mode 100644
index 0000000..2363f82
--- /dev/null
+++ b/doc/source/contributor/api.rst
@@ -0,0 +1,40 @@
+=========
+Aetos API
+=========
+
+Aetos API is currently a minimal subset of `Prometheus API
+`_
+as required by the observabilityclient and Watcher.
+
+Regular API
+===========
+
+.. rest-controller:: aetos.controllers.api.v1.label:LabelController
+ :webprefix: /api/v1/label//values
+
+.. rest-controller:: aetos.controllers.api.v1.labels:LabelsController
+ :webprefix: /api/v1/labels
+
+.. rest-controller:: aetos.controllers.api.v1.query:QueryController
+ :webprefix: /api/v1/query
+
+.. rest-controller:: aetos.controllers.api.v1.series:SeriesController
+ :webprefix: /api/v1/series
+
+.. rest-controller:: aetos.controllers.api.v1.status:StatusController
+ :webprefix: /api/v1/status
+
+.. rest-controller:: aetos.controllers.api.v1.targets:TargetsController
+ :webprefix: /api/v1/targets
+
+Admin API
+=========
+
+.. rest-controller:: aetos.controllers.api.v1.admin.tsdb.clean_tombstones:CleanTombstonesController
+ :webprefix: /api/v1/admin/tsdb/clean_tombstones
+
+.. rest-controller:: aetos.controllers.api.v1.admin.tsdb.delete_series:DeleteSeriesController
+ :webprefix: /api/v1/admin/tsdb/delete_series
+
+.. rest-controller:: aetos.controllers.api.v1.admin.tsdb.snapshot:SnapshotController
+ :webprefix: /api/v1/admin/tsdb/snapshot
diff --git a/doc/source/contributor/architecture.rst b/doc/source/contributor/architecture.rst
new file mode 100644
index 0000000..e101a21
--- /dev/null
+++ b/doc/source/contributor/architecture.rst
@@ -0,0 +1,26 @@
+===================
+System Architecture
+===================
+
+Aetos is a reverse-proxy, which should be used together with Prometheus.
+It implements a subset of Prometheus API to support observabilityclient's and
+Watcher's access to Prometheus. Using Aetos provides OpenStack authentication
+and multi-tenancy support to Prometheus.
+
+On most endpoints Aetos recognizes 2 types of access:
+ - privileged
+ - nonprivileged
+
+Privileged access is by default automatically allowed for admin and service
+users and it allows sending requests without any restrictions. Privileged
+users can retrieve any metric from any project at any time. These users can
+also retrieve metrics coming from other sources than ceilometer, which
+typically lack openstack project labels.
+
+Nonprivileged access is allowed for users with the reader or member role.
+These users cat retrieve metrics from their current project only. Aetos
+will automatically modify each request to prevent access to metrics from
+other projects.
+
+Privileged and unprivileged access can be configured for each endpoint
+separately by modifying policies.
diff --git a/doc/source/contributor/contributing.rst b/doc/source/contributor/contributing.rst
index 0eed4bd..1ab7a49 100644
--- a/doc/source/contributor/contributing.rst
+++ b/doc/source/contributor/contributing.rst
@@ -1,6 +1,6 @@
-============================
-So You Want to Contribute...
-============================
+=====================
+Contributing to Aetos
+=====================
For general information on contributing to OpenStack, please check out the
`contributor guide `_ to get started.
@@ -13,36 +13,12 @@ with aetos.
Communication
~~~~~~~~~~~~~
-.. This would be a good place to put the channel you chat in as a project; when/
- where your meeting is, the tags you prepend to your ML threads, etc.
+:Mailing list: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-discuss (prefix subjects with ``[Aetos]`` for faster responses)
+:IRC: #openstack-telemetry
Contacting the Core Team
~~~~~~~~~~~~~~~~~~~~~~~~
-.. This section should list the core team, their irc nicks, emails, timezones
- etc. If all this info is maintained elsewhere (i.e. a wiki), you can link to
- that instead of enumerating everyone here.
-
-New Feature Planning
-~~~~~~~~~~~~~~~~~~~~
-.. This section is for talking about the process to get a new feature in. Some
- projects use blueprints, some want specs, some want both! Some projects
- stick to a strict schedule when selecting what new features will be reviewed
- for a release.
-
-Task Tracking
-~~~~~~~~~~~~~
-.. This section is about where you track tasks- launchpad? storyboard? is there
- more than one launchpad project? what's the name of the project group in
- storyboard?
-
-We track our tasks in Launchpad
-
- https://bugs.launchpad.net/aetos
-
-If you're looking for some smaller, easier work item to pick up and get started
-on, search for the 'low-hanging-fruit' tag.
-
-.. NOTE: If your tag is not 'low-hanging-fruit' please change the text above.
+:List of telemetry core members: https://review.opendev.org/admin/groups/7586a97d8db096591fa23b5632df561896dae55a,members
Reporting a Bug
~~~~~~~~~~~~~~~
@@ -52,18 +28,3 @@ Reporting a Bug
You found an issue and want to make sure we are aware of it? You can do so on
`Launchpad
`_.
-
-Getting Your Patch Merged
-~~~~~~~~~~~~~~~~~~~~~~~~~
-.. This section should have info about what it takes to get something merged. Do
- you require one or two +2's before +W? Do some of your repos require unit
- test changes with all patches? etc.
-
-Project Team Lead Duties
-~~~~~~~~~~~~~~~~~~~~~~~~
-.. this section is where you can put PTL specific duties not already listed in
- the common PTL guide (linked below), or if you already have them written
- up elsewhere you can link to that doc here.
-
-All common PTL duties are enumerated in the `PTL guide
-`_.
diff --git a/doc/source/contributor/index.rst b/doc/source/contributor/index.rst
index 036e449..4164b93 100644
--- a/doc/source/contributor/index.rst
+++ b/doc/source/contributor/index.rst
@@ -6,4 +6,6 @@
:maxdepth: 2
contributing
-
+ api
+ architecture
+ install/index
diff --git a/doc/source/contributor/install/development.rst b/doc/source/contributor/install/development.rst
new file mode 100644
index 0000000..485441a
--- /dev/null
+++ b/doc/source/contributor/install/development.rst
@@ -0,0 +1,48 @@
+==============================
+Installing development sandbox
+==============================
+
+Configuring devstack
+====================
+
+.. index::
+ double: installing; devstack
+
+1. Download devstack_.
+
+2. Create a ``local.conf`` file as input to devstack.
+
+ .. note::
+
+ ``local.conf`` replaces the former configuration file called ``localrc``.
+ If you used localrc before, remove it to switch to using the new file.
+ For further information see the `devstack configuration
+ `_.
+
+3. The aetos service is not enabled by default, so it must be
+ enabled in ``local.conf`` before running ``stack.sh``.
+
+ This example ``local.conf`` file shows all of the settings required for
+ aetos, as well as how to deploy ceilometer with prometheus, which is recommended::
+
+ [[local|localrc]]
+ # Configure Ceilometer to send metrics through sg-core to Prometheus
+ CEILOMETER_BACKEND=sg-core
+
+ # Configure Prometheus to scrape sg-core and itself
+ PROMETHEUS_CUSTOM_SCRAPE_TARGETS="localhost:3000,localhost:9090"
+
+ # Enable Ceilometer
+ enable_plugin ceilometer https://opendev.org/openstack/ceilometer
+
+ # Enable Prometheus
+ enable_plugin devstack-plugin-prometheus https://opendev.org/openstack/devstack-plugin-prometheus
+
+ # Enable sg-core for forwarding metrics from Ceilometer to Prometheus
+ enable_plugin sg-core https://github.com/infrawatch/sg-core
+
+ # Enable the Aetos
+ enable_plugin aetos https://opendev.org/openstack/aetos
+
+.. _devstack: https://docs.openstack.org/devstack/latest/
+
diff --git a/doc/source/contributor/install/index.rst b/doc/source/contributor/install/index.rst
new file mode 100644
index 0000000..18205f5
--- /dev/null
+++ b/doc/source/contributor/install/index.rst
@@ -0,0 +1,9 @@
+================
+Installing Aetos
+================
+
+.. toctree::
+ :maxdepth: 2
+
+ development
+ manual
diff --git a/doc/source/contributor/install/manual.rst b/doc/source/contributor/install/manual.rst
new file mode 100644
index 0000000..0339aaf
--- /dev/null
+++ b/doc/source/contributor/install/manual.rst
@@ -0,0 +1,45 @@
+===========================
+Installing Aetos with uwsgi
+===========================
+
+The module ``aetos.wsgi.api`` provides the function to set up the WSGI
+application. The module is installed with the rest of the Aetos application
+code, and should not need to be modified.
+
+Install uwsgi.
+
+On RHEL/CentOS/Fedora::
+
+ sudo dnf install uwsgi-plugin-python3
+
+On Ubuntu/Debian::
+
+ sudo apt-get install uwsgi-plugin-python3
+
+Create aetos-uwsgi.ini file::
+
+ [uwsgi]
+ chmod-socket = 666
+ socket = /var/run/uwsgi/aetos.socket
+ start-time = %t
+ lazy-apps = true
+ add-header = Connection: close
+ buffer-size = 65535
+ hook-master-start = unix_signal:15 gracefully_kill_them_all
+ thunder-lock = true
+ plugins = http,python3
+ enable-threads = true
+ worker-reload-mercy = 80
+ exit-on-reload = false
+ die-on-term = true
+ master = true
+ processes = 2
+ module = aetos.wsgi.api:application
+
+Then start the uwsgi server::
+
+ uwsgi ./aetos-uwsgi.ini
+
+Or start in background with::
+
+ uwsgi -d ./aetos-uwsgi.ini
diff --git a/doc/source/index.rst b/doc/source/index.rst
index f03d4e2..4e8331e 100644
--- a/doc/source/index.rst
+++ b/doc/source/index.rst
@@ -14,13 +14,10 @@ Contents:
readme
install/index
- library/index
contributor/index
configuration/index
- cli/index
user/index
admin/index
- reference/index
Indices and tables
==================
diff --git a/doc/source/install/common_configure.rst b/doc/source/install/common_configure.rst
index 794acd4..0473e64 100644
--- a/doc/source/install/common_configure.rst
+++ b/doc/source/install/common_configure.rst
@@ -7,3 +7,28 @@
[DEFAULT]
prometheus_host=localhost
+ prometheus_port=9090
+
+ * In the ``[DEFAULT]`` and ``[keystone_authtoken]`` sections,
+ configure Identity service access:
+
+ .. code-block:: ini
+
+ [DEFAULT]
+ ...
+ auth_strategy = keystone
+
+ [keystone_authtoken]
+ ...
+ www_authenticate_uri = http://controller:5000
+ auth_url = http://controller:5000
+ memcached_servers = controller:11211
+ auth_type = password
+ project_domain_id = default
+ user_domain_id = default
+ project_name = service
+ username = aetos
+ password = AETOS_PASS
+
+ Replace ``AETOS_PASS`` with the password you chose for
+ the ``aetos`` user in the Identity service.
diff --git a/doc/source/install/common_prerequisites.rst b/doc/source/install/common_prerequisites.rst
index e2ecf79..6bc0aca 100644
--- a/doc/source/install/common_prerequisites.rst
+++ b/doc/source/install/common_prerequisites.rst
@@ -2,39 +2,7 @@ Prerequisites
-------------
Before you install and configure the aetos service,
-you must create a database, service credentials, and API endpoints.
-
-#. To create the database, complete these steps:
-
- * Use the database access client to connect to the database
- server as the ``root`` user:
-
- .. code-block:: console
-
- $ mysql -u root -p
-
- * Create the ``aetos`` database:
-
- .. code-block:: none
-
- CREATE DATABASE aetos;
-
- * Grant proper access to the ``aetos`` database:
-
- .. code-block:: none
-
- GRANT ALL PRIVILEGES ON aetos.* TO 'aetos'@'localhost' \
- IDENTIFIED BY 'AETOS_DBPASS';
- GRANT ALL PRIVILEGES ON aetos.* TO 'aetos'@'%' \
- IDENTIFIED BY 'AETOS_DBPASS';
-
- Replace ``AETOS_DBPASS`` with a suitable password.
-
- * Exit the database access client.
-
- .. code-block:: none
-
- exit;
+you must create service credentials, and API endpoints.
#. Source the ``admin`` credentials to gain access to
admin-only CLI commands:
@@ -50,6 +18,18 @@ you must create a database, service credentials, and API endpoints.
.. code-block:: console
$ openstack user create --domain default --password-prompt aetos
+ User Password:
+ Repeat User Password:
+ +---------------------+----------------------------------+
+ | Field | Value |
+ +---------------------+----------------------------------+
+ | domain_id | default |
+ | enabled | True |
+ | id | b7657c9ea07a4556aef5d34cf70713a3 |
+ | name | aetos |
+ | options | {} |
+ | password_expires_at | None |
+ +---------------------+----------------------------------+
* Add the ``admin`` role to the ``aetos`` user:
@@ -57,19 +37,72 @@ you must create a database, service credentials, and API endpoints.
$ openstack role add --project service --user aetos admin
+ .. note::
+
+ This command provides no output.
+
+
* Create the aetos service entities:
.. code-block:: console
- $ openstack service create --name aetos --description "aetos" aetos
+ $ openstack service create --name aetos --description "OpenStack Aetos Service" prometheus
+ +-------------+----------------------------------+
+ | Field | Value |
+ +-------------+----------------------------------+
+ | description | OpenStack Aetos Service |
+ | enabled | True |
+ | id | 3405453b14da441ebb258edfeba96d83 |
+ | name | aetos |
+ | type | prometheus |
+ +-------------+----------------------------------+
#. Create the aetos service API endpoints:
.. code-block:: console
$ openstack endpoint create --region RegionOne \
- aetos public http://controller:XXXX/vY/%\(tenant_id\)s
+ prometheus public http://controller/prometheus
+ +--------------+-----------------------------------+
+ | Field | Value |
+ +--------------+-----------------------------------+
+ | enabled | True |
+ | id | 1196727cc22a4a26a011688236c38da9 |
+ | interface | public |
+ | region | RegionOne |
+ | region_id | RegionOne |
+ | service_id | 3405453b14da441ebb258edfeba96d83 |
+ | service_name | aetos |
+ | service_type | prometheus |
+ | url | http://controller/prometheus |
+ +--------------+-----------------------------------+
$ openstack endpoint create --region RegionOne \
- aetos internal http://controller:XXXX/vY/%\(tenant_id\)s
+ prometheus internal http://controller/prometheus
+ +--------------+-----------------------------------+
+ | Field | Value |
+ +--------------+-----------------------------------+
+ | enabled | True |
+ | id | 1196727cc22a4a26a011688236c38da9 |
+ | interface | internal |
+ | region | RegionOne |
+ | region_id | RegionOne |
+ | service_id | 3405453b14da441ebb258edfeba96d83 |
+ | service_name | aetos |
+ | service_type | prometheus |
+ | url | http://controller/prometheus |
+ +--------------+-----------------------------------+
$ openstack endpoint create --region RegionOne \
- aetos admin http://controller:XXXX/vY/%\(tenant_id\)s
+ prometheus admin http://controller/prometheus
+ +--------------+-----------------------------------+
+ | Field | Value |
+ +--------------+-----------------------------------+
+ | enabled | True |
+ | id | 1196727cc22a4a26a011688236c38da9 |
+ | interface | admin |
+ | region | RegionOne |
+ | region_id | RegionOne |
+ | service_id | 3405453b14da441ebb258edfeba96d83 |
+ | service_name | aetos |
+ | service_type | prometheus |
+ | url | http://controller/prometheus |
+ +--------------+-----------------------------------+
diff --git a/doc/source/install/get_started.rst b/doc/source/install/get_started.rst
index aa989ca..52f7502 100644
--- a/doc/source/install/get_started.rst
+++ b/doc/source/install/get_started.rst
@@ -1,9 +1,15 @@
======================
-aetos service overview
+Aetos service overview
======================
-The aetos service provides...
+The aetos service provides a multi-tenancy layer and openstack authentication
+for Prometheus.
The aetos service consists of the following components:
-``aetos-api`` service
- Accepts and responds to end user compute API calls...
+``aetos``
+ A reverse-proxy, which runs on a central management server, preferably on
+ the same one which runs Prometheus. It provides a subset of Prometheus
+ API. For each request an authentication token is checked before forwarding
+ it to Prometheus. Two privilege levels are recognized. When accessing
+ with lower privilege, which typically means access by a non-admin user,
+ the request is restricted to metrics from the current project only.
diff --git a/doc/source/install/index.rst b/doc/source/install/index.rst
index f9993d3..788e087 100644
--- a/doc/source/install/index.rst
+++ b/doc/source/install/index.rst
@@ -1,6 +1,6 @@
-================================
-aetos service installation guide
-================================
+==================
+Installation Guide
+==================
.. toctree::
:maxdepth: 2
@@ -10,8 +10,8 @@ aetos service installation guide
verify.rst
next-steps.rst
-The aetos service (aetos) provides...
+The aetos service (aetos) provides multi-tenancy layer for Prometheus.
This chapter assumes a working setup of OpenStack following the
`OpenStack Installation Tutorial
-`_.
+`_.
diff --git a/doc/source/install/install.rst b/doc/source/install/install.rst
index 8c2c730..7f1731a 100644
--- a/doc/source/install/install.rst
+++ b/doc/source/install/install.rst
@@ -8,7 +8,7 @@ aetos service, code-named aetos, on the controller node.
This section assumes that you already have a working OpenStack
environment with at least the following components installed:
-.. (add the appropriate services here and further notes)
+Prometheus
Note that installation and configuration vary by distribution.
diff --git a/doc/source/install/next-steps.rst b/doc/source/install/next-steps.rst
index faff33f..44f0ea8 100644
--- a/doc/source/install/next-steps.rst
+++ b/doc/source/install/next-steps.rst
@@ -6,4 +6,4 @@ Next steps
Your OpenStack environment now includes the aetos service.
To add additional services, see
-https://docs.openstack.org/project-install-guide/ocata/.
+`OpenStack Installation Tutorials and Guides `_.
diff --git a/doc/source/install/verify.rst b/doc/source/install/verify.rst
index 5d1e3b0..cc6d23b 100644
--- a/doc/source/install/verify.rst
+++ b/doc/source/install/verify.rst
@@ -9,6 +9,14 @@ Verify operation of the aetos service.
Perform these commands on the controller node.
+.. note::
+
+ The following assumes Ceilometer is installed and Prometheus is
+ configured to scrape metrics from Ceilometer. The
+ ``ceilometer_image_size`` metric is used for the verification. A
+ working Image service with an image stored is required to get the
+ ``ceilometer_image_size`` metric.
+
#. Source the ``admin`` project credentials to gain access to
admin-only CLI commands:
@@ -16,9 +24,17 @@ Verify operation of the aetos service.
$ . admin-openrc
-#. List service components to verify successful launch and registration
- of each process:
+#. Query for the ceilometer_image_size metric and see if data is returned:
.. code-block:: console
- $ openstack aetos service list
+ $ openstack metric query ceilometer_image_size
+ +----------+----------+----------+----------+---------+----------+-----------+----------+---------------+------+------+----------+
+ | __name__ | counter | image | instance | job | project | publisher | resource | resource_name | type | unit | value |
+ +----------+----------+----------+----------+---------+----------+-----------+----------+---------------+------+------+----------+
+ | ceilomet | image.si | 6b51fba6 | localhos | sg-core | 2dd8edd6 | localhost | 6b51fba6 | Fedora-Cloud- | size | B | 49283072 |
+ | er_image | ze | -8b74-4b | t:3000 | | c8c24f49 | .localdom | -8b74-4b | Base-37-1.7.x | | | 0 |
+ | _size | | d4-be53- | | | bf046705 | ain | d4-be53- | 86_64 | | | |
+ | | | 25e509ea | | | 34f6b357 | | 25e509ea | | | | |
+ | | | 0aaf | | | | | 0aaf | | | | |
+ +----------+----------+----------+----------+---------+----------+-----------+----------+---------------+------+------+----------+
diff --git a/doc/source/library/index.rst b/doc/source/library/index.rst
deleted file mode 100644
index 98ee23f..0000000
--- a/doc/source/library/index.rst
+++ /dev/null
@@ -1,7 +0,0 @@
-========
-Usage
-========
-
-To use aetos in a project::
-
- import aetos
diff --git a/doc/source/reference/index.rst b/doc/source/reference/index.rst
deleted file mode 100644
index 53dd838..0000000
--- a/doc/source/reference/index.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-==========
-References
-==========
-
-References of aetos.
diff --git a/etc/aetos/aetos-config-generator.conf b/etc/aetos/aetos-config-generator.conf
index d2e8843..8cb8f62 100644
--- a/etc/aetos/aetos-config-generator.conf
+++ b/etc/aetos/aetos-config-generator.conf
@@ -7,3 +7,4 @@ namespace = oslo.middleware.cors
namespace = oslo.middleware.healthcheck
namespace = oslo.middleware.http_proxy_to_wsgi
namespace = oslo.policy
+namespace = keystonemiddleware.auth_token
diff --git a/tox.ini b/tox.ini
index aad2c6c..09c47c4 100644
--- a/tox.ini
+++ b/tox.ini
@@ -37,8 +37,11 @@ commands =
coverage xml -o cover/coverage.xml
[testenv:docs]
-deps = -r{toxinidir}/doc/requirements.txt
-commands = sphinx-build -W -b html doc/source doc/build/html
+deps =
+ -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
+ -r{toxinidir}/requirements.txt
+ -r{toxinidir}/doc/requirements.txt
+commands = sphinx-build --keep-going -b html doc/source doc/build/html
[testenv:releasenotes]
deps = {[testenv:docs]deps}