diff options
24 files changed, 69 insertions, 42 deletions
diff --git a/build/Makefile b/build/Makefile index c4775a3da..b3905e364 100644 --- a/build/Makefile +++ b/build/Makefile @@ -57,7 +57,7 @@ export MIRROR_UBUNTU_ROOT := $(shell echo -n '/' ; echo "$(MIRROR_UBUNTU_URL)" | export LATEST_MIRROR_ID_URL := http://$(shell ./select_closest_fuel_mirror.py) -export MIRROR_MOS_UBUNTU := $(shell echo "$(LATEST_MIRROR_ID_URL)" | cut -d'/' -f3) +export MIRROR_MOS_UBUNTU ?= $(shell echo "$(LATEST_MIRROR_ID_URL)" | cut -d'/' -f3) export LATEST_TARGET_UBUNTU := $(shell curl -sSf "$(MIRROR_MOS_UBUNTU)/mos-repos/ubuntu/$(MOSVERSION).target.txt" | head -1) export MIRROR_MOS_UBUNTU_ROOT := /mos-repos/ubuntu/$(LATEST_TARGET_UBUNTU) diff --git a/build/f_isoroot/Makefile b/build/f_isoroot/Makefile index 4df7bcb0c..448f4158c 100644 --- a/build/f_isoroot/Makefile +++ b/build/f_isoroot/Makefile @@ -11,7 +11,7 @@ # Add Fuel plugin build targets here # Plugins disabled for the Fuel Mitaka uplift. Please re-enable your plugin as you have # verified it! -PLUGINS = f_odlpluginbuild f_onosfwpluginbuild f_vsperfpluginbuild f_ovs-nsh-dpdk-pluginbuild f_yardstick-pluginbuild f_kvm-pluginbuild f_bgpvpn-pluginbuild f_collectd-ceilometer-pluginbuild +PLUGINS ?= f_odlpluginbuild f_onosfwpluginbuild f_vsperfpluginbuild f_ovs-nsh-dpdk-pluginbuild f_yardstick-pluginbuild f_kvm-pluginbuild f_bgpvpn-pluginbuild f_collectd-ceilometer-pluginbuild #PLUGINS = f_odlpluginbuild f_onosfwpluginbuild f_ovsnfv-dpdk-pluginbuild f_vsperfpluginbuild f_ovs-nsh-dpdk-pluginbuild f_bgpvpn-pluginbuild export PLUGINS #NON_8-0_REBASED_PLUGINS = f_bgpvpn-pluginbuild diff --git a/build/f_isoroot/f_odlpluginbuild/config.mk b/build/f_isoroot/f_odlpluginbuild/config.mk index d600e54ef..48e7f78fd 100644 --- a/build/f_isoroot/f_odlpluginbuild/config.mk +++ b/build/f_isoroot/f_odlpluginbuild/config.mk @@ -8,7 +8,7 @@ ############################################################################## FUEL_PLUGIN_ODL_BRANCH ?= master -FUEL_PLUGIN_ODL_CHANGE ?= 8cc22c4717d2da338135d854e1d13aac3ef75314 +FUEL_PLUGIN_ODL_CHANGE ?= 0ff4ebdbfe5f681f0b44eea14c9c2b3dbb10b1d5 FUEL_PLUGIN_ODL_REPO ?= https://github.com/openstack/fuel-plugin-opendaylight.git export ODL_TARBALL_LOCATION?=https://nexus.opendaylight.org/content/repositories/public/org/opendaylight/integration/distribution-karaf/0.4.3-Beryllium-SR3/distribution-karaf-0.4.3-Beryllium-SR3.tar.gz diff --git a/ci/build.sh b/ci/build.sh index 62abba173..82049cdcd 100755 --- a/ci/build.sh +++ b/ci/build.sh @@ -111,7 +111,7 @@ SCRIPT_DIR=$(readlink -f $(dirname ${BASH_SOURCE[0]})) BUILD_BASE=$(readlink -e ${SCRIPT_DIR}/../build/) RESULT_DIR="${BUILD_BASE}/release" BUILD_SPEC="${BUILD_BASE}/config.mk" -LOCAL_CACHE_ARCH_NAME="fuel-cache" +LOCAL_CACHE_ARCH_NAME="${LOCAL_CACHE_ARCH_NAME:-fuel-cache}" # # END of variables to customize diff --git a/ci/deploy.sh b/ci/deploy.sh index 4e4586c2e..8411714eb 100755 --- a/ci/deploy.sh +++ b/ci/deploy.sh @@ -29,7 +29,7 @@ cat << EOF xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx `basename $0`: Deploys the Fuel@OPNFV stack -usage: `basename $0` -b base-uri [-B PXE Bridge] [-f] [-F] [-H] -l lab-name -p pod-name -s deploy-scenario [-S image-dir] -i iso +usage: `basename $0` -b base-uri [-B PXE Bridge] [-f] [-F] [-H] -l lab-name -p pod-name -s deploy-scenario [-S image-dir] [-T timeout] -i iso -s deployment-scenario [-S optional Deploy-scenario path URI] [-R optional local relen repo (containing deployment Scenarios] @@ -47,6 +47,7 @@ OPTIONS: -p Pod-name -s Deploy-scenario short-name/base-file-name -S Storage dir for VM images + -T Timeout, in minutes, for the deploy. -i iso url Description: @@ -78,6 +79,8 @@ Input parameters to the build script is: or a deployment short-name as defined by scenario.yaml in the deployment scenario path. -S Storage dir for VM images, default is fuel/deploy/images +-T Timeout, in minutes, for the deploy. It defaults to using the DEPLOY_TIMEOUT + environment variable when defined, or to the default in deploy.py otherwise -i .iso image to be deployed (needs to be provided in a URI style, it can be a local resource: file:// or a remote resource http(s)://) @@ -116,6 +119,11 @@ FUEL_CREATION_ONLY='' NO_DEPLOY_ENVIRONMENT='' STORAGE_DIR='' DRY_RUN=0 +if ! [ -z $DEPLOY_TIMEOUT ]; then + DEPLOY_TIMEOUT="-dt $DEPLOY_TIMEOUT" +else + DEPLOY_TIMEOUT="" +fi # # END of variables to customize ############################################################################ @@ -123,7 +131,7 @@ DRY_RUN=0 ############################################################################ # BEGIN of main # -while getopts "b:B:dfFHl:L:p:s:S:i:he" OPTION +while getopts "b:B:dfFHl:L:p:s:S:T:i:he" OPTION do case $OPTION in b) @@ -174,6 +182,9 @@ do STORAGE_DIR="-s ${OPTARG}" fi ;; + T) + DEPLOY_TIMEOUT="-dt ${OPTARG}" + ;; i) ISO=${OPTARG} if [[ ! $ISO == file://* ]] && \ @@ -243,8 +254,8 @@ if [ $DRY_RUN -eq 0 ]; then ISO=${SCRIPT_PATH}/ISO/image.iso fi # Start deployment - echo "python deploy.py $DEPLOY_LOG $STORAGE_DIR $PXE_BRIDGE $USE_EXISTING_FUEL $FUEL_CREATION_ONLY $NO_HEALTH_CHECK $NO_DEPLOY_ENVIRONMENT -dea ${SCRIPT_PATH}/config/dea.yaml -dha ${SCRIPT_PATH}/config/dha.yaml -iso $ISO" - python deploy.py $DEPLOY_LOG $STORAGE_DIR $PXE_BRIDGE $USE_EXISTING_FUEL $FUEL_CREATION_ONLY $NO_HEALTH_CHECK $NO_DEPLOY_ENVIRONMENT -dea ${SCRIPT_PATH}/config/dea.yaml -dha ${SCRIPT_PATH}/config/dha.yaml -iso $ISO + echo "python deploy.py $DEPLOY_LOG $STORAGE_DIR $PXE_BRIDGE $USE_EXISTING_FUEL $FUEL_CREATION_ONLY $NO_HEALTH_CHECK $NO_DEPLOY_ENVIRONMENT -dea ${SCRIPT_PATH}/config/dea.yaml -dha ${SCRIPT_PATH}/config/dha.yaml -iso $ISO $DEPLOY_TIMEOUT" + python deploy.py $DEPLOY_LOG $STORAGE_DIR $PXE_BRIDGE $USE_EXISTING_FUEL $FUEL_CREATION_ONLY $NO_HEALTH_CHECK $NO_DEPLOY_ENVIRONMENT -dea ${SCRIPT_PATH}/config/dea.yaml -dha ${SCRIPT_PATH}/config/dha.yaml -iso $ISO $DEPLOY_TIMEOUT fi popd > /dev/null diff --git a/deploy/deploy.py b/deploy/deploy.py index 9e188ebe6..f491929e0 100755 --- a/deploy/deploy.py +++ b/deploy/deploy.py @@ -109,6 +109,20 @@ class AutoDeploy(object): self.iso_file = new_iso self.install_iso() + def delete_old_fuel_env(self): + log('Delete old Fuel Master environments if present') + try: + old_dep = CloudDeploy(self.dea, self.dha, self.fuel_conf['ip'], + self.fuel_username, self.fuel_password, + self.dea_file, self.fuel_plugins_conf_dir, + WORK_DIR, self.no_health_check, + self.deploy_timeout, + self.no_deploy_environment, self.deploy_log) + with old_dep.ssh: + old_dep.check_previous_installation() + except Exception as e: + log('Could not delete old env: %s' % str(e)) + def install_iso(self): fuel = InstallFuelMaster(self.dea_file, self.dha_file, self.fuel_conf['ip'], self.fuel_username, @@ -226,6 +240,7 @@ class AutoDeploy(object): def deploy(self): self.collect_fuel_info() if not self.no_fuel: + self.delete_old_fuel_env() self.setup_execution_environment() self.create_tmp_dir() self.install_fuel_master() diff --git a/docs/installationprocedure/img/addnodes.png b/docs/installationprocedure/img/addnodes.png Binary files differindex 15730db90..b62405692 100644 --- a/docs/installationprocedure/img/addnodes.png +++ b/docs/installationprocedure/img/addnodes.png diff --git a/docs/installationprocedure/img/compute.png b/docs/installationprocedure/img/compute.png Binary files differindex fd7811f37..fc1cf0f22 100644 --- a/docs/installationprocedure/img/compute.png +++ b/docs/installationprocedure/img/compute.png diff --git a/docs/installationprocedure/img/computelist.png b/docs/installationprocedure/img/computelist.png Binary files differindex a4453d958..474196536 100644 --- a/docs/installationprocedure/img/computelist.png +++ b/docs/installationprocedure/img/computelist.png diff --git a/docs/installationprocedure/img/fuelmenu1.png b/docs/installationprocedure/img/fuelmenu1.png Binary files differindex 15fccc434..ee7a0edb2 100644 --- a/docs/installationprocedure/img/fuelmenu1.png +++ b/docs/installationprocedure/img/fuelmenu1.png diff --git a/docs/installationprocedure/img/fuelmenu2.png b/docs/installationprocedure/img/fuelmenu2.png Binary files differindex 1f87c53e5..4dcbb6e68 100644 --- a/docs/installationprocedure/img/fuelmenu2.png +++ b/docs/installationprocedure/img/fuelmenu2.png diff --git a/docs/installationprocedure/img/fuelmenu3.png b/docs/installationprocedure/img/fuelmenu3.png Binary files differindex c9fa27959..23e61975b 100644 --- a/docs/installationprocedure/img/fuelmenu3.png +++ b/docs/installationprocedure/img/fuelmenu3.png diff --git a/docs/installationprocedure/img/fuelmenu4.png b/docs/installationprocedure/img/fuelmenu4.png Binary files differindex 1bc9c0410..3be29cd66 100644 --- a/docs/installationprocedure/img/fuelmenu4.png +++ b/docs/installationprocedure/img/fuelmenu4.png diff --git a/docs/installationprocedure/img/fuelmenu5.png b/docs/installationprocedure/img/fuelmenu5.png Binary files differindex 11247986b..e3d215459 100644 --- a/docs/installationprocedure/img/fuelmenu5.png +++ b/docs/installationprocedure/img/fuelmenu5.png diff --git a/docs/installationprocedure/img/fuelmenu6.png b/docs/installationprocedure/img/fuelmenu6.png Binary files differindex 9ff62c798..cafbcddfc 100644 --- a/docs/installationprocedure/img/fuelmenu6.png +++ b/docs/installationprocedure/img/fuelmenu6.png diff --git a/docs/installationprocedure/img/grub-1.png b/docs/installationprocedure/img/grub-1.png Binary files differindex 7488503af..e64b79373 100644 --- a/docs/installationprocedure/img/grub-1.png +++ b/docs/installationprocedure/img/grub-1.png diff --git a/docs/installationprocedure/img/health.png b/docs/installationprocedure/img/health.png Binary files differindex 71675069e..57bd8cf70 100644 --- a/docs/installationprocedure/img/health.png +++ b/docs/installationprocedure/img/health.png diff --git a/docs/installationprocedure/img/interfaceconf.png b/docs/installationprocedure/img/interfaceconf.png Binary files differindex e8b45578c..e00b03f03 100644 --- a/docs/installationprocedure/img/interfaceconf.png +++ b/docs/installationprocedure/img/interfaceconf.png diff --git a/docs/installationprocedure/img/network.png b/docs/installationprocedure/img/network.png Binary files differindex 04c67d38e..7bef05064 100644 --- a/docs/installationprocedure/img/network.png +++ b/docs/installationprocedure/img/network.png diff --git a/docs/installationprocedure/img/neutronl3.png b/docs/installationprocedure/img/neutronl3.png Binary files differindex dd8d7954b..36291ef87 100644 --- a/docs/installationprocedure/img/neutronl3.png +++ b/docs/installationprocedure/img/neutronl3.png diff --git a/docs/installationprocedure/img/other.png b/docs/installationprocedure/img/other.png Binary files differindex 4e740eb06..c088488dc 100644 --- a/docs/installationprocedure/img/other.png +++ b/docs/installationprocedure/img/other.png diff --git a/docs/installationprocedure/img/plugins.png b/docs/installationprocedure/img/plugins.png Binary files differindex bfe8781e8..8f7ea596f 100644 --- a/docs/installationprocedure/img/plugins.png +++ b/docs/installationprocedure/img/plugins.png diff --git a/docs/installationprocedure/img/verifynet.png b/docs/installationprocedure/img/verifynet.png Binary files differindex 5932bc223..e675562c0 100644 --- a/docs/installationprocedure/img/verifynet.png +++ b/docs/installationprocedure/img/verifynet.png diff --git a/docs/installationprocedure/installation.instruction.rst b/docs/installationprocedure/installation.instruction.rst index fea90af0d..bb56a53cf 100644 --- a/docs/installationprocedure/installation.instruction.rst +++ b/docs/installationprocedure/installation.instruction.rst @@ -13,7 +13,7 @@ Abstract ======== This document describes how to install the Colorado release of -OPNFV when using Fuel as a deployment tool, covering it's usage, +OPNFV when using Fuel as a deployment tool, covering it's usage, limitations, dependencies and required system resources. Introduction @@ -35,6 +35,7 @@ networking and Unix/Linux administration. Preface ======= + Before starting the installation of the Colorado release of OPNFV, using Fuel as a deployment tool, some planning must be done. @@ -49,7 +50,8 @@ Building the ISO image ---------------------- Alternatively, you may build the Fuel .iso from source by cloning the -opnfv/fuel git repository. To retrieve the repository for the Colorado release use the following command: +opnfv/fuel git repository. To retrieve the repository for the Colorado +release use the following command: .. code-block:: bash @@ -97,7 +99,7 @@ Prior to installation, a number of deployment specific parameters must be collec #. How many nodes and what roles you want to deploy (Controllers, Storage, Computes) -#. Monitoring options you want to deploy (Ceilometer, Syslog, erc.). +#. Monitoring options you want to deploy (Ceilometer, Syslog, etc.). #. Other options not covered in the document are available in the links above @@ -207,7 +209,7 @@ Install Fuel master .. figure:: img/grub-1.png -#. Wait until screen Fuel setup is shown (Note: This can take up to 30 minutes). +#. Wait until the Fuel setup screen is shown (Note: This can take up to 30 minutes). #. In the "Fuel User" section - Confirm/change the default password (See figure below) @@ -274,7 +276,7 @@ Install Fuel master - Select Quit Setup and press Save and Quit. - - Installation starts, wait until the login screen is shown. + - The installation will now start, wait until the login screen is shown. Boot the Node Servers @@ -282,12 +284,12 @@ Boot the Node Servers After the Fuel Master node has rebooted from the above steps and is at the login prompt, you should boot the Node Servers (Your -Compute/Control/Storage blades (nested or real) with a PXE booting +Compute/Control/Storage blades, nested or real) with a PXE booting scheme so that the FUEL Master can pick them up for control. #. Enable PXE booting - - For every controller and compute server: enable PXE Booting as the first boot device in the BIOS boot order menu and hard disk as the second boot device in the same menu. + - For every controller and compute server: enable PXE Booting as the first boot device in the BIOS boot order menu, and hard disk as the second boot device in the same menu. #. Reboot all the control and compute blades. @@ -324,7 +326,7 @@ Install additional Plugins/Features on the FUEL node Create an OpenStack Environment ------------------------------- -#. Connect to Fuel WEB UI with a browser (default: https://10.20.0.2:8443) (login admin/admin) +#. Connect to Fuel WEB UI with a browser (default: https://10.20.0.2:8443) (login: admin/admin) #. Create and name a new OpenStack environment, to be installed. @@ -350,7 +352,7 @@ Create an OpenStack Environment #. Select "additional services" you wish to install. - - Check option "Install Ceilometer (OpenStack Telemetry)" and press <Next> + - Check option "Install Ceilometer and Aodh" and press <Next> #. Create the new environment. @@ -361,7 +363,7 @@ Configure the network environment #. Open the environment you previously created. -#. Open the networks tab and select the "default Node Networks group to" on the left pane (see figure below). +#. Open the networks tab and select the "default" Node Networks group to on the left pane (see figure below). .. figure:: img/network.png @@ -413,7 +415,7 @@ Configure the network environment - Set appropriate VLAN tag (default 103) -#. Select the "Neutron L3 Node Networks group" on the left pane. +#. Select the "Neutron L3" Node Networks group on the left pane. .. figure:: img/neutronl3.png @@ -439,7 +441,7 @@ Configure the network environment #. Save Settings. -#. Select the "Other Node Networks group" on the left pane(see figure below). +#. Select the "Other" Node Networks group on the left pane (see figure below). .. figure:: img/other.png @@ -460,7 +462,7 @@ Select Hypervisor type #. In the FUEL UI of your Environment, click the "Settings" Tab -#. Select Compute on the left side pane (see figure below) +#. Select "Compute" on the left side pane (see figure below) - Check the KVM box and press "Save settings" @@ -488,7 +490,7 @@ Allocate nodes to environment and assign functional roles - Click on the <+Add Nodes> button - - Check <Controller>, <Telemetry - MongoDB> and optionally an SDN Controller role (OpenDaylight controller/ONOS) in the Assign Roles Section. + - Check <Controller>, <Telemetry - MongoDB> and optionally an SDN Controller role (OpenDaylight controller/ONOS) in the "Assign Roles" Section. - Check one node which you want to act as a Controller from the bottom half of the screen @@ -518,8 +520,7 @@ Allocate nodes to environment and assign functional roles - Click <Configure Interfaces> - - Assign interfaces (bonded) for mgmt-, admin-, private-, public- - and storage networks + - Assign interfaces (bonded) for mgmt-, admin-, private-, public- and storage networks - Click <Apply> @@ -529,7 +530,7 @@ Allocate nodes to environment and assign functional roles OPTIONAL - Set Local Mirror Repos --------------------------------- -The following steps can be executed if you are in an environment with +The following steps must be executed if you are in an environment with no connection to the Internet. The Fuel server delivers a local repo that can be used for installation / deployment of openstack. @@ -543,7 +544,7 @@ that can be used for installation / deployment of openstack. - "ubuntu-updates" URI="deb http://<ip-of-fuel-server>:8080/mirrors/ubuntu/ trusty-updates main" - - "mos" URI="deb http://<ip-of-fuel-server>::8080/mitaka-9.0/ubuntu/x86_64 mos8.0 main restricted" + - "mos" URI="deb http://<ip-of-fuel-server>::8080/mitaka-9.0/ubuntu/x86_64 mos9.0 main restricted" - "Auxiliary" URI="deb http://<ip-of-fuel-server>:8080/mitaka-9.0/ubuntu/auxiliary auxiliary main restricted" @@ -617,7 +618,7 @@ packages needed for a successful deployment can be fetched. Deploy Your Environment ----------------------- -38. Deploy the environment. +#. Deploy the environment. - In the Fuel GUI, click on the "Dashboard" Tab. @@ -647,43 +648,43 @@ References OPNFV ----- -1) `OPNFV Home Page <http://www.opnfv.org>`_ +1) `OPNFV Home Page <http://www.opnfv.org>`_: http://www.opnfv.org -2) `OPNFV documentation- and software downloads <https://www.opnfv.org/software/download>`_ +2) `OPNFV documentation- and software downloads <https://www.opnfv.org/software/download>`_: https://www.opnfv.org/software/download OpenStack --------- -3) `OpenStack Mitaka Release artifacts <http://www.openstack.org/software/mitaka>`_ +3) `OpenStack Mitaka Release artifacts <http://www.openstack.org/software/mitaka>`_: http://www.openstack.org/software/mitaka -4) `OpenStack documentation <http://docs.openstack.org>`_ +4) `OpenStack documentation <http://docs.openstack.org>`_: http://docs.openstack.org OpenDaylight ------------ -5) `OpenDaylight artifacts <http://www.opendaylight.org/software/downloads>`_ +5) `OpenDaylight artifacts <http://www.opendaylight.org/software/downloads>`_: http://www.opendaylight.org/software/downloads Fuel ---- -6) `The Fuel OpenStack project <https://wiki.openstack.org/wiki/Fuel>`_ +6) `The Fuel OpenStack project <https://wiki.openstack.org/wiki/Fuel>`_: https://wiki.openstack.org/wiki/Fuel -7) `Fuel documentation overview <http://docs.openstack.org/developer/fuel-docs>`_ +7) `Fuel documentation overview <http://docs.openstack.org/developer/fuel-docs>`_: http://docs.openstack.org/developer/fuel-docs -8) `Fuel Installation Guide <http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-install-guide.html>`_ +8) `Fuel Installation Guide <http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-install-guide.html>`_: http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-install-guide.html -9) `Fuel User Guide <http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-user-guide.html>`_ +9) `Fuel User Guide <http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-user-guide.html>`_: http://docs.openstack.org/developer/fuel-docs/userdocs/fuel-user-guide.html -10) `Fuel Developer Guide <http://docs.openstack.org/developer/fuel-docs/devdocs/develop.html>`_ +10) `Fuel Developer Guide <http://docs.openstack.org/developer/fuel-docs/devdocs/develop.html>`_: http://docs.openstack.org/developer/fuel-docs/devdocs/develop.html -11) `Fuel Plugin Developers Guide <http://docs.openstack.org/developer/fuel-docs/plugindocs/fuel-plugin-sdk-guide.html>`_ +11) `Fuel Plugin Developers Guide <http://docs.openstack.org/developer/fuel-docs/plugindocs/fuel-plugin-sdk-guide.html>`_: http://docs.openstack.org/developer/fuel-docs/plugindocs/fuel-plugin-sdk-guide.html -12) `Fuel OpenStack Hardware Compatibility List <https://www.mirantis.com/products/openstack-drivers-and-plugins/hardware-compatibility-list>`_ +12) `Fuel OpenStack Hardware Compatibility List <https://www.mirantis.com/products/openstack-drivers-and-plugins/hardware-compatibility-list>`_: https://www.mirantis.com/products/openstack-drivers-and-plugins/hardware-compatibility-list Fuel in OPNFV ------------- -13) `OPNFV Installation instruction for the Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/fuel/colorado/docs/installation-instruction.html>`_ +13) `OPNFV Installation instruction for the Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/fuel/colorado/docs/installationprocedure/index.html>`_: http://artifacts.opnfv.org/fuel/colorado/docs/installationprocedure/index.html -14) `OPNFV Build instruction for the Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/fuel/colorado/docs/build-instruction.html>`_ +14) `OPNFV Build instruction for the Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/fuel/colorado/docs/buildprocedure/index.html>`_: http://artifacts.opnfv.org/fuel/colorado/docs/buildprocedure/index.html -15) `OPNFV Release Note for the Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/fuel/colorado/docs/release-notes.html>`_ +15) `OPNFV Release Note for the Colorado release of OPNFV when using Fuel as a deployment tool <http://artifacts.opnfv.org/fuel/colorado/docs/releasenotes/index.html>`_: http://artifacts.opnfv.org/fuel/colorado/docs/releasenotes/index.html |