diff options
-rw-r--r-- | docs/index.rst | 1 | ||||
-rw-r--r-- | docs/release/configguide/feature.configuration.rst | 78 | ||||
-rw-r--r-- | docs/release/configguide/images/LICENSE | 14 | ||||
-rwxr-xr-x | docs/release/configguide/images/screenshot_promise.png | bin | 101419 -> 0 bytes | |||
-rw-r--r-- | docs/release/configguide/images/screenshot_promise_install.png | bin | 216440 -> 0 bytes | |||
-rw-r--r-- | docs/release/release-notes/releasenotes.rst | 121 | ||||
-rw-r--r-- | docs/release/userguide/feature.userguide.rst | 292 | ||||
-rw-r--r-- | docs/release/userguide/index.rst | 14 |
8 files changed, 68 insertions, 452 deletions
diff --git a/docs/index.rst b/docs/index.rst index 159c048..9fff904 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -13,4 +13,5 @@ Promise :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 Binary files differdeleted file mode 100755 index 4a0cbe3..0000000 --- a/docs/release/configguide/images/screenshot_promise.png +++ /dev/null diff --git a/docs/release/configguide/images/screenshot_promise_install.png b/docs/release/configguide/images/screenshot_promise_install.png Binary files differdeleted file mode 100644 index ab78994..0000000 --- a/docs/release/configguide/images/screenshot_promise_install.png +++ /dev/null diff --git a/docs/release/release-notes/releasenotes.rst b/docs/release/release-notes/releasenotes.rst index 89071eb..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]_ :ref:`<promise-requirements>` -.. [#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 - :ref:`Promise requirements: <promise-requirements>` - -Related Projects ----------------- - - 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 |