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}