summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--INFO.yaml65
-rw-r--r--UPSTREAM9
-rw-r--r--docs/conf.py1
-rw-r--r--docs/conf.yaml3
-rw-r--r--docs/index.rst17
-rw-r--r--docs/release/configguide/feature.configuration.rst78
-rw-r--r--docs/release/configguide/images/LICENSE14
-rwxr-xr-xdocs/release/configguide/images/screenshot_promise.pngbin101419 -> 0 bytes
-rw-r--r--docs/release/configguide/images/screenshot_promise_install.pngbin216440 -> 0 bytes
-rw-r--r--docs/release/release-notes/releasenotes.rst123
-rw-r--r--docs/release/userguide/feature.userguide.rst292
-rw-r--r--docs/release/userguide/index.rst14
-rw-r--r--docs/requirements.txt2
-rw-r--r--tox.ini17
15 files changed, 183 insertions, 455 deletions
diff --git a/.gitignore b/.gitignore
index 33a0451..e8a1a6f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,6 @@
/docs_build/
/docs_output/
/releng/
+
+.tox/
+docs/_build/*
diff --git a/INFO.yaml b/INFO.yaml
new file mode 100644
index 0000000..3550c8f
--- /dev/null
+++ b/INFO.yaml
@@ -0,0 +1,65 @@
+---
+project: 'Resource Management (promise)'
+project_creation_date: 'December 4, 2014'
+project_category: 'Requirements'
+lifecycle_state: 'Incubation'
+project_lead: &opnfv_promise_ptl
+ name: 'Gerald Kunzmann'
+ email: 'kunzmann@docomolab-euro.com'
+ id: 'kunzmann'
+ company: 'DOCOMO Euro-Labs'
+ timezone: 'Europe/Berlin'
+primary_contact: *opnfv_promise_ptl
+issue_tracking:
+ type: 'jira'
+ url: 'https://jira.opnfv.org/projects/PROMISE'
+ key: 'PROMISE'
+mailing_list:
+ type: 'mailman2'
+ url: 'opnfv-tech-discuss@lists.opnfv.org'
+ tag: '[promise]'
+realtime_discussion:
+ type: irc
+ server: 'freenode.net'
+ channel: '#opnfv-promise'
+meetings:
+ - type: 'gotomeeting+irc'
+ agenda: 'https://wiki.opnfv.org/display/meetings/Promise+Team+Meetings'
+ url: 'https://global.gotomeeting.com/join/391235029'
+ server: 'freenode.net'
+ channel: '#opnfv-promise'
+ repeats: 'bi-weekly'
+ date: 'Thursday'
+ time: '11:00 UTC'
+repositories:
+ - 'promise'
+committers:
+ - <<: *opnfv_promise_ptl
+ - name: 'Ashiq Khan'
+ email: 'khan@nttdocomo.com'
+ company: 'NTT DOCOMO'
+ id: 'ashiq.khan'
+ - name: 'Ryota Mibu'
+ email: 'r-mibu@cq.jp.nec.com'
+ company: 'NEC'
+ id: 'r-mibu'
+ - name: 'Serge Manning'
+ email: 'serge.manning@sprint.com'
+ company: 'SPRINT'
+ id: 'sergem913'
+ - name: 'Arturo Martin de Nicolas'
+ email: 'Arturo.Martin-de-Nicolas@ericsson.com'
+ company: 'Ericsson'
+ id: 'ArturoMartin'
+ - name: 'Peter Lee'
+ email: 'peter@corenova.com'
+ company: 'Corenova'
+ id: 'peterklee'
+ - name: 'masahito muroi'
+ email: 'muroi.masahito@lab.ntt.co.jp'
+ company: 'NTT'
+ id: 'muroi'
+tsc:
+ # yamllint disable rule:line-length
+ approval: ''
+ # yamllint enable rule:line-length
diff --git a/UPSTREAM b/UPSTREAM
index 2472d1f..a38e462 100644
--- a/UPSTREAM
+++ b/UPSTREAM
@@ -13,12 +13,17 @@
-
url: https://blueprints.launchpad.net/blazar/+spec/flavors-extra-specs
system: Launchpad
- # WIP
-
url: https://blueprints.launchpad.net/blazar/+spec/resource-monitoring
system: Launchpad
- # WIP
-
url: https://blueprints.launchpad.net/blazar/+spec/multi-freepools
system: Launchpad
+-
+ url: https://blueprints.launchpad.net/blazar/+spec/basic-network-plugin
+ system: Launchpad
+ # WIP
+-
+ url: https://blueprints.launchpad.net/blazar/+spec/placement-api
+ system: Launchpad
# WIP
diff --git a/docs/conf.py b/docs/conf.py
new file mode 100644
index 0000000..3c4453e
--- /dev/null
+++ b/docs/conf.py
@@ -0,0 +1 @@
+from docs_conf.conf import *
diff --git a/docs/conf.yaml b/docs/conf.yaml
new file mode 100644
index 0000000..ebfb56e
--- /dev/null
+++ b/docs/conf.yaml
@@ -0,0 +1,3 @@
+---
+project_cfg: opnfv
+project: Promise
diff --git a/docs/index.rst b/docs/index.rst
new file mode 100644
index 0000000..9fff904
--- /dev/null
+++ b/docs/index.rst
@@ -0,0 +1,17 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. SPDX-License-Identifier: CC-BY-4.0
+.. (c) Open Platform for NFV Project, Inc. and its contributors
+
+.. _promise:
+
+=======
+Promise
+=======
+
+.. toctree::
+ :numbered:
+ :maxdepth: 2
+
+ release/release-notes/index
+ release/configguide/index
+ development/requirements/index
diff --git a/docs/release/configguide/feature.configuration.rst b/docs/release/configguide/feature.configuration.rst
index 3e66020..cc4c733 100644
--- a/docs/release/configguide/feature.configuration.rst
+++ b/docs/release/configguide/feature.configuration.rst
@@ -1,63 +1,51 @@
.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
-Promise installation
-====================
+Blazar installation with OpenStack Ansible
+==========================================
+.. note::
+ This guide provides steps for manual installation of Blazar using OpenStack
+ Ansible. These instructions are valid for Ubuntu 18.04 All-in-one (AIO).
-Install nodejs, npm and promise
+Install and bootstrap Ansible (master branch) as the root user:
-.. code-block:: bash
+.. code:: bash
- curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
- sudo apt-get install -y nodejs
- sudo npm -g install npm@latest
- git clone https://gerrit.opnfv.org/gerrit/promise
- cd promise/source
- npm install
- npm ls
+ # git clone https://git.openstack.org/openstack/openstack-ansible /opt/openstack-ansible
+ # cd /opt/openstack-ansible
-Please note that the last command 'npm ls' will list all needed dependencies
-for promise (including yangforge and mocha)
+.. note::
+ At the time of writing, work is still ongoing upstream in OpenStack.
+ Therefore, it is recommended to set ANSIBLE_ROLE_FETCH_MODE to git-clone.
-.. figure:: images/screenshot_promise_install.png
- :name: figure1
- :width: 90%
+.. code:: bash
+ # export ANSIBLE_ROLE_FETCH_MODE=git-clone
+ # scripts/bootstrap-ansible.sh
+ # scripts/bootstrap-aio.sh
-Validation
-==========
-Please perform the following preparation steps:
+Enable Blazar:
-1. Set OpenStack environment parameters properly (e.g. source openrc admin demo
- in DevStack)
-2. Create OpenStack project (e.g. promise) and user (e.g. myuser) in e.g. the
- default domain
-3. Create a flavor in Nova with 1 vCPU and 512 MB RAM
-4. Create a private network, subnet and router in Neutron
-5. Create an image in Glance
+.. code:: bash
-Once done, the promise test script can be invoked as follows:
+ # cp etc/openstack_deploy/conf.d/blazar.yml.aio /etc/openstack_deploy/conf.d/
+ # cd /etc/openstack_deploy/conf.d
+ # mv blazar.yml.aio blazar.yml
-.. code-block:: bash
+Run Ansible playbooks:
- export OS_PROJECT_NAME=promise
- export OS_TENANT_NAME=promise
- export OS_PROJECT_DOMAIN_NAME=Default
- export OS_USERNAME=myuser
- export OS_USER_DOMAIN_NAME=Default
- export OS_PASSWORD=<user password from Step 2>
- export OS_TEST_FLAVOR=<flavor ID from Step 3>
- export OS_TEST_NETWORK=<network ID from Step 4>
- export OS_TEST_IMAGE=<image ID from Step 5>
- npm run -s test -- --reporter json > promise-results.json
+.. code:: bash
-The results of the tests will be stored in the promise-results.json file.
+ # cd /opt/openstack-ansible/playbooks
+ # openstack-ansible setup-hosts.yml
+ # openstack-ansible setup-infrastructure.yaml
+ # openstack-ansible setup-openstack.yml
-The results can also be seen in the console ("npm run -s test")
+Once the playbooks have successfully executed, it is possible to make some
+modifications to the Blazar Ansible role in /etc/ansible/roles/os_blazar
+and re-install the Blazar service by executing:
-.. figure:: images/screenshot_promise.png
- :name: figure2
- :width: 90%
+.. code:: bash
-All 33 tests passing?!
-Congratulations, Promise has been successfully installed and configured.
+ # cd /opt/openstack-ansible/playbooks
+ # openstack-ansible os-blazar-install.yml
diff --git a/docs/release/configguide/images/LICENSE b/docs/release/configguide/images/LICENSE
deleted file mode 100644
index 6a84dd4..0000000
--- a/docs/release/configguide/images/LICENSE
+++ /dev/null
@@ -1,14 +0,0 @@
-Copyright 2016 Open Platform for NFV Project, Inc. and its contributors
-
-Open Platform for NFV Project Documentation Licence
-===================================================
-Any documentation developed by the "Open Platform for NFV Project"
-is licensed under a Creative Commons Attribution 4.0 International License.
-You should have received a copy of the license along with this. If not,
-see <http://creativecommons.org/licenses/by/4.0/>.
-
-Unless required by applicable law or agreed to in writing, documentation
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
diff --git a/docs/release/configguide/images/screenshot_promise.png b/docs/release/configguide/images/screenshot_promise.png
deleted file mode 100755
index 4a0cbe3..0000000
--- a/docs/release/configguide/images/screenshot_promise.png
+++ /dev/null
Binary files differ
diff --git a/docs/release/configguide/images/screenshot_promise_install.png b/docs/release/configguide/images/screenshot_promise_install.png
deleted file mode 100644
index ab78994..0000000
--- a/docs/release/configguide/images/screenshot_promise_install.png
+++ /dev/null
Binary files differ
diff --git a/docs/release/release-notes/releasenotes.rst b/docs/release/release-notes/releasenotes.rst
index 504beab..38a2a9b 100644
--- a/docs/release/release-notes/releasenotes.rst
+++ b/docs/release/release-notes/releasenotes.rst
@@ -1,123 +1,70 @@
.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
-=======================================
-OPNFV Promise release notes (Euphrates)
-=======================================
-Version history
-===============
-
-+------------+---------------+-----------------+-------------+
-| **Date** | **Ver.** | **Author** | **Comment** |
-+============+===============+=================+=============+
-| 2017-07-13 | Euphrates 1.0 | Gerald Kunzmann | |
-+------------+---------------+-----------------+-------------+
+This document provides the release notes for Gambia of Promise.
Important notes
===============
-**Attention:** Please be aware that the Promise shim-layer implementation is marked as DEPRECATED
-in Euphrates and both implementation and related test cases may be removed from next release.
+**Attention:** Please be aware that Promise is transitioning to OpenStack
+Blazar. The integration of Blazar to OPNFV is done via OpenStack Ansible.
-Abstract
-========
-This document provides an overview of the Promise project in the OPNFV Euphrates
-release. Promise is a resource reservation and management project to identify NFV related
+Summary
+=======
+
+Promise is a resource reservation and management project to identify NFV related
requirements and realize resource reservation for future usage by capacity
management of resource pools regarding compute, network and storage.
+The resource reservation functionality is developed further in Blazar, a native
+resource reservation system for OpenStack `Blazar docs`_.
+In the OPNFV Gambia release cycle most efforts have been spent to progress the
+upstream development in the Blazar project as well as its integration to OPNFV
+via OpenStack Ansible.
-Features
-========
-
-The following features are provided by the Promise in the OPNFV Euphrates release:
-* Capacity Management
-* Reservation Management
-* Allocation Management
+Version change
+^^^^^^^^^^^^^^
-The Euphrates implementation of Promise is built with the YangForge data modeling
-framework [#f2]_ , using a shim-layer on top of OpenStack to provide
-the Promise features.
+Module version changes
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+- The Promise implementation has been replaced by the upstream OpenStack Blazar
+project.
-In the OPNFV Euphrates release cycle most efforts have been spent to progress the upstream
-implementation of a native resource reservation system for OpenStack as part of the Blazar project
-[#f3]_.
+Document version changes
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+- The Promise user guide has been removed. Please instead refer to the OpenStack Blazar
+documentation `Blazar docs`_.
-Detailed information about Promise use cases, features, interface
-specifications, work flows, and the underlying Promise YANG schema can be found
-in the Promise requirement document [#f1]_ .
+- The Promise config guide has been updated accordingly.
-.. [#f1]_ http://docs.opnfv.org/en/stable-euphrates/submodules/promise/docs/development/requirements/index.html
-.. [#f2]_ https://github.com/opnfv/yangforge
-.. [#f3]_ https://launchpad.net/blazar/+milestone/0.3.0
-
-Installer support and verification status
+Known Limitations, Issues and Workarounds
=========================================
-Promise project is integrated in OPNFV through the Functest project (`FUNCTEST`_).
-
-+-----------+----------------------------------------------+--------------+
-| Installer | CI Job | Status |
-+===========+==============================================+==============+
-| Fuel | functest-fuel-baremetal-daily-master | |
-| | functest-fuel-virtual-daily-master | |
-| | functest-fuel-armband-baremetal-daily-master | |
-+-----------+----------------------------------------------+--------------+
-| Joid | functest-joid-baremetal-daily-master | |
-+-----------+----------------------------------------------+--------------+
-
-.. _FUNCTEST: https://wiki.opnfv.org/display/functest
-
+Please refer to the Blazar features page `Blazar features`_ for features that
+are planned for upcoming releases of the OpenStack Blazar project.
-Thereby, the following test cases (`TEST_CASES`_) are executed:
+Refer to the Blazar bug tracker `Blazar bugs`_ for known issues with the current
+OpenStack Blazar implementation.
- - Add a new OpenStack provider to the reservation service
- - Allocation of resources without prior reservation
- - Reservation of a VM for immediate use followed by allocation
- - Reservation of a VM for future use
- - Update reservation
- - Query reservation
- - Cancel reservation
- - Error case: try to create reservation with a conflict
- - Capacity management - increase/decrease available capacity of a provider
- - Capacity Management - query for available and used capacity
-
-.. _TEST_CASES: https://git.opnfv.org/promise/tree/source/test/promise-intents.coffee
-
-
-Open JIRA tickets
-=================
-
-+------------------+-----------------------------------------------+
-| JIRA | Description |
-+==================+===============================================+
-| | |
-| | |
-+------------------+-----------------------------------------------+
-
-All the tickets that are not blocking have been fixed or postponed
-the next release.
-
-Promise Euphrates 1.0 is released without known bugs.
+.. _`Blazar docs`: https://docs.openstack.org/blazar/latest/
+.. _`Blazar features`: https://blueprints.launchpad.net/blazar
+.. _`Blazar bugs`: https://bugs.launchpad.net/blazar
+References
+==========
Useful links
-============
+^^^^^^^^^^^^
- Promise project page: https://wiki.opnfv.org/display/promise
- - Promise requirements: http://docs.opnfv.org/en/stable-euphrates/submodules/promise/docs/development/requirements/index.html
-
-Related Projects
-----------------
-
+ - :ref:`Promise requirements: <promise-requirements>`
- OpenStack Blazar (Resource reservation for OpenStack): https://docs.openstack.org/blazar/latest/
- - YangForge data modeling framework: - https://github.com/opnfv/yangforge
Related ETSI NFV specifications
-------------------------------
diff --git a/docs/release/userguide/feature.userguide.rst b/docs/release/userguide/feature.userguide.rst
deleted file mode 100644
index bba2aea..0000000
--- a/docs/release/userguide/feature.userguide.rst
+++ /dev/null
@@ -1,292 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-
-Abstract
-========
-Promise is a resource reservation and management project to identify NFV related
-requirements and realize resource reservation for future usage by capacity
-management of resource pools regarding compute, network and storage.
-
-The following are the key features provided by this module:
-
-* Capacity Management
-* Reservation Management
-* Allocation Management
-
-The following sections provide details on the Promise capabilities and its API usage.
-
-Promise capabilities and usage
-==============================
-The Euphrates implementation of Promise is built with the YangForge data modeling
-framework [#f2]_ , using a shim-layer on top of OpenStack to provide
-the Promise features. This approach requires communication between
-Consumers/Administrators and OpenStack to pass through the shim-layer. The
-shim-layer intercepts the message flow to manage the allocation requests based
-on existing reservations and available capacities in the providers. It also
-extracts information from the intercepted messages in order to update its
-internal databases. Furthermore, Promise provides additional intent-based APIs
-to allow a Consumer or Administrator to perform capacity management (i.e. add
-providers, update the capacity, and query the current capacity and utilization
-of a provider), reservation management (i.e. create, update, cancel, query
-reservations), and allocation management (i.e. create, destroy instances).
-
-Detailed information about Promise use cases, features, interface
-specifications, work flows, and the underlying Promise YANG schema can be found
-in the Promise requirement document [#f1]_ .
-
-Keystone v3 support has been added during the Euphrates release.
-
-
-Promise features and API usage guidelines and examples
-------------------------------------------------------
-This section lists the Promise features and API implemented in OPNFV Euphrates.
-
-Note: The listed parameters are optional unless explicitly marked as "mandatory".
-
-Reservation management
-^^^^^^^^^^^^^^^^^^^^^^
-The reservation management allows a Consumer to request reservations for
-resource capacity. Reservations can be for now or a later time window.
-After the start time of a reservation has arrived, the Consumer can issue
-create server instance requests against the reserved capacity. Note, a
-reservation will expire after a predefined *expiry* time in case no
-allocation referring to the reservation is requested.
-
-The implemented workflow is well aligned with the described workflow in the
-Promise requirement document [#f1]_ (Section 6.1) except for the
-"multi-provider" scenario as described in :ref:`multi-provider` .
-
-.. _create-reservation:
-
-*create-reservation*
-""""""""""""""""""""
-
-This operation allows making a request to the reservation system to reserve
-resources.
-
-The operation takes the following input parameters:
-
-* start: start time of the requested reservation
-* end: end time of the requested reservation
-* capacity.instances: amount of instances to be reserved
-* capacity.cores: amount of cores to be reserved
-* capacity.ram: amount of ram in MB to be reserved
-
-Promise will check the available capacity in the given time window and in case
-sufficient capacity exists to meet the reservation request, will mark those
-resources "reserved" in its reservation map.
-
-*update-reservation*
-""""""""""""""""""""
-
-This operation allows to update the reservation details for an existing
-reservation.
-
-It can take the same input parameters as in *create-reservation*
-but in addition requires a mandatory reference to the *reservation-id* of the
-reservation that shall be updated.
-
-*cancel-reservation*
-""""""""""""""""""""
-
-This operation is used to cancel an existing reservation.
-
-The operation takes the following input parameter:
-
-* reservation-id (mandatory): identifier of the reservation to be canceled.
-
-*query-reservation*
-"""""""""""""""""""
-
-The operation queries the reservation system to return reservation(s) matching
-the specified query filter, e.g., reservations that are within a specified
-start/end time window.
-
-The operation takes the following input parameters to narrow down the query
-results:
-
-* without: excludes specified collection identifiers from the result
-* elements.some: query for ResourceCollection(s) that contain some or more of these element(s)
-* elements.every: query for ResourceCollection(s) that contain all of these element(s)
-* window.start: matches entries that are within the specified start/
-* window.end: end time window
-* window.scope: if set to 'exclusive', only reservations with start AND end time
- within the time window are returned. Otherwise ('inclusive'), all
- reservation starting OR ending in the time windows are returned.
-* show-utilization: boolean value that specifies whether to also return the
- resource utilization in the queried time window or not
-
-Allocation management
-^^^^^^^^^^^^^^^^^^^^^
-
-*create-instance*
-"""""""""""""""""
-
-This operation is used to create an instance of specified resource(s) for
-immediate use utilizing capacity from the pool. *Create-instance* requests can
-be issued against an existing reservation, but also allocations without a
-reference to an existing reservation are allowed. In case the allocation
-request specifies a reservation identifier, Promise checks if a reservation
-with that ID exists, the reservation start time has arrived (i.e. the
-reservation is 'active'), and the required capacity for the requested flavor is
-within the available capacity of the reservation. If those conditions are met,
-Promise creates a record for the allocation (VMState="INITIALIZED") and update
-its databases. If no *reservation_id* was provided in the allocation request,
-Promise checks whether the required capacity to meet the request can be
-provided from the available, non-reserved capacity. If yes, Promise creates a
-record for the allocation with an unique *instance-id* and update its
-databases. In any other case, Promise rejects the *create-instance* request.
-
-In case the *create-instance* request is rejected, Promise responds with a
-"status=rejected" providing the reason of the rejection. This will help the
-Consumer to take appropriate actions, e.g., send an updated *create-instance*
-request. In case the *create-instance* request was accepted and a related
-allocation record has been created, the shim-layer issues a *createServer*
-request to the VIM Controller (i.e. Nova) providing all information to create
-the server instance.
-
-The operation takes the following input parameters:
-
-* name (mandatory): Assigned name for the instance to be created
-* image (mandatory): the image to be booted in the new instance
-* flavor (mandatory): the flavor of the requested server instance
-* networks: the list of network uuids of the requested server instance
-* provider-id: identifier of the provider where the instance shall be created
-* reservation-id: identifier of a resource reservation the *create-instance*
-
-The Euphrates implementation of Promise has the following limitations:
-
-* All create server instance requests shall pass through the Promise
- shim-layer such that Promise can keep track of all allocation requests. This
- is necessary as in the current release the sychronization between the VIM
- Controller and Promise on the available capacity is not yet implemented.
-* *Create-allocation* requests are limited to "simple" allocations, i.e., the
- current workflow only supports the Nova compute service and
- *create-allocation* requests are limited to creating one server instance at a
- time
-* Prioritization of reservations and allocations is yet not implemented.
- Future version may allow certain policy-based conflict resolution where,
- e.g., new allocation request with high priority can "forcefully" terminate
- lower priority allocations.
-
-
-*destroy-instance*
-""""""""""""""""""
-
-This operation request to destroy an existing server instance and release it
-back to the pool.
-
-The operation takes the following input parameter:
-
-* instance-id: identifier of the server instance to be destroyed
-
-Capacity management
-^^^^^^^^^^^^^^^^^^^
-The capacity management feature allows the Consumer or Administrator to do
-capacity planning, i.e. the capacity available to the reservation management
-can differ from the actual capacity in the registered provider(s). This feature
-can, e.g., be used to limit the available capacity for a given time window due
-to a planned downtime of some of the resources, or increase the capacity
-available to the reservation system in case of a planned upgrade of the
-available capacity.
-
-*increase/decrease-capacity*
-""""""""""""""""""""""""""""
-
-This operations allows to increase/decrease the total capacity that is made
-available to the Promise reservation service between a specified window in
-time. It does NOT increase the actual capacity of a given resource provider,
-but is used for capacity management inside Promise.
-
-This feature can be used in different ways, like
-
-* Limit the capacity available to the reservation system to a value below 100%
- of the available capacity in the VIM, e.g., in order to leave "buffer" in the
- actual NFVI to be used outside the Promise reservation service.
-
-* Inform the reservation system that, from a given time in the future,
- additional resources can be reserved, e.g., due to a planned upgrade of the
- available capacity of the provider.
-
-* Similarily, the "decrease-capacity" can be used to reduce the consumable
- resources in a given time window, e.g., to prepare for a planned downtime of
- some of the resources.
-
-* Expose multiple reservation service instances to different consumers sharing
- the same resource provider.
-
-The operation takes the following input parameters:
-
-* start: start time for the increased/decreased capacity
-* end: end time for the increased/decreased capacity
-* capacity.cores: Increased/decreased amount of cores
-* capacity.ram: Increased/decreased amount of RAM
-* capacity.instances: Increased/decreased amount of instances
-
-Note, increase/decreasing the capacity in Promise is completely transparent to
-the VIM. As such, when increasing the virtual capacity in Promise (e.g. for a
-planned upgrade of the capacity), it is in the responsibility of the
-Consumer/Administrator to ensure sufficient resources in the VIM are available
-at the appropriate time, in order to prevent allocations against reservations
-to fail due to a lack of resources. Therefore, this operations should only be
-used carefully.
-
-
-*query-capacity*
-""""""""""""""""
-
-This operation is used to query the available capacity information of the
-specified resource collection. A filter attribute can be specified to narrow
-down the query results.
-
-The current implementation supports the following filter criteria:
-
-* time window: returns reservations matching the specified window
-
-* window scope: if set to 'exclusive', only reservations with start AND end time
- within the time window are returned. Otherwise, all reservation starting OR
- ending in the time windows are returned.
-
-* metric: query for one of the following capacity metrics:
-
- * 'total': resource pools
- * 'reserved': reserved resources
- * 'usage': resource allocations
- * 'available': remaining capacity, i.e. neither reserved nor allocated
-
-.. _multi-provider:
-
-(Multi-)provider management
-^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This API towards OpenStack allows a Consumer/Administrator to add and remove
-resource providers to Promise. Note, Promise supports a multi-provider
-configuration, however, for Euphrates, multi-provider support is not yet
-fully supported.
-
-*add-provider*
-""""""""""""""
-
-This operation is used to register a new resource provider into the Promise
-reservation system.
-
-Note, for Euphrates, the add-provider operation should only be used to
-register one provider with the Promise shim-layer. Further note that currently
-only OpenStack is supported as a provider.
-
-The operation takes the following input parameters:
-
-* provider-type = 'openstack': select a specific resource provider
- type.
-* endpoint : target URL endpoint for the resource provider.
-* username : name of the user
-* password : user password
-* user-domain-name : domain name of the user
-* project.name : name of the OpenStack project
-* project.domain-name : domain name of the OpenStack project
-
-.. [#f1] Promise requirement document,
- http://artifacts.opnfv.org/promise/docs/development_requirements/index.html
-
-.. [#f2] YangForge framework, http://github.com/opnfv/yangforge
-
diff --git a/docs/release/userguide/index.rst b/docs/release/userguide/index.rst
deleted file mode 100644
index 6b79558..0000000
--- a/docs/release/userguide/index.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-.. http://creativecommons.org/licenses/by/4.0
-
-.. _promise-userguide:
-
-==================
-Promise user guide
-==================
-
-
-.. toctree::
- :maxdepth: 3
-
- feature.userguide.rst
diff --git a/docs/requirements.txt b/docs/requirements.txt
new file mode 100644
index 0000000..9fde2df
--- /dev/null
+++ b/docs/requirements.txt
@@ -0,0 +1,2 @@
+lfdocs-conf
+sphinx_opnfv_theme
diff --git a/tox.ini b/tox.ini
new file mode 100644
index 0000000..69aa189
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,17 @@
+[tox]
+minversion = 1.6
+envlist =
+ docs,
+ docs-linkcheck
+skipsdist = true
+
+[testenv:docs]
+deps = -rdocs/requirements.txt
+commands =
+ sphinx-build -b html -n -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/html
+ echo "Generated docs available in {toxinidir}/docs/_build/html"
+whitelist_externals = echo
+
+[testenv:docs-linkcheck]
+deps = -rdocs/requirements.txt
+commands = sphinx-build -b linkcheck -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/linkcheck