summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--deploy/cloud/deploy.py12
-rw-r--r--deploy/cloud/deployment.py6
-rwxr-xr-xdeploy/deploy.py11
-rw-r--r--deploy/deploy_env.py11
-rw-r--r--docs/build-instruction.rst9
-rw-r--r--docs/conf.py28
-rw-r--r--docs/configguide/installerconfig.rst4
-rw-r--r--docs/index.rst22
-rw-r--r--docs/installation-instruction.rst5
-rw-r--r--docs/release-notes.rst4
-rwxr-xr-xprototypes/sfc_tacker/poc.tacker-up.sh53
11 files changed, 91 insertions, 74 deletions
diff --git a/deploy/cloud/deploy.py b/deploy/cloud/deploy.py
index 679b0ad6f..3d3017e42 100644
--- a/deploy/cloud/deploy.py
+++ b/deploy/cloud/deploy.py
@@ -29,9 +29,10 @@ YAML_CONF_DIR = '/var/lib/opnfv'
class Deploy(object):
- def __init__(self, dea_file, no_health_check):
+ def __init__(self, dea_file, no_health_check, deploy_timeout):
self.dea = DeploymentEnvironmentAdapter(dea_file)
self.no_health_check = no_health_check
+ self.deploy_timeout = deploy_timeout
self.macs_per_blade = {}
self.blades = self.dea.get_node_ids()
self.blade_node_dict = self.dea.get_blade_node_map()
@@ -59,7 +60,8 @@ class Deploy(object):
def deploy_cloud(self):
dep = Deployment(self.dea, YAML_CONF_DIR, self.env_id,
- self.node_roles_dict, self.no_health_check)
+ self.node_roles_dict, self.no_health_check,
+ self.deploy_timeout)
dep.deploy()
def deploy(self):
@@ -76,13 +78,17 @@ def parse_arguments():
parser.add_argument('-nh', dest='no_health_check', action='store_true',
default=False,
help='Don\'t run health check after deployment')
+ parser.add_argument('-dt', dest='deploy_timeout', action='store',
+ default=240, help='Deployment timeout (in minutes) '
+ '[default: 240]')
parser.add_argument('dea_file', action='store',
help='Deployment Environment Adapter: dea.yaml')
args = parser.parse_args()
check_file_exists(args.dea_file)
kwargs = {'dea_file': args.dea_file,
- 'no_health_check': args.no_health_check}
+ 'no_health_check': args.no_health_check,
+ 'deploy_timeout': args.deploy_timeout}
return kwargs
diff --git a/deploy/cloud/deployment.py b/deploy/cloud/deployment.py
index 42bab09bb..306abf006 100644
--- a/deploy/cloud/deployment.py
+++ b/deploy/cloud/deployment.py
@@ -31,12 +31,13 @@ LIST_OF_CHAR_TO_BE_ESCAPED = ['[', ']', '"']
class Deployment(object):
def __init__(self, dea, yaml_config_dir, env_id, node_id_roles_dict,
- no_health_check):
+ no_health_check, deploy_timeout):
self.dea = dea
self.yaml_config_dir = yaml_config_dir
self.env_id = env_id
self.node_id_roles_dict = node_id_roles_dict
self.no_health_check = no_health_check
+ self.deploy_timeout = deploy_timeout
self.pattern = re.compile(
'\d\d\d\d-\d\d-\d\d\s\d\d:\d\d:\d\d')
@@ -96,7 +97,6 @@ class Deployment(object):
print(log_msg + '\n')
def run_deploy(self):
- WAIT_LOOP = 240
SLEEP_TIME = 60
LOG_FILE = 'cloud.log'
@@ -105,7 +105,7 @@ class Deployment(object):
% (self.env_id, LOG_FILE))
ready = False
- for i in range(WAIT_LOOP):
+ for i in range(int(self.deploy_timeout)):
env = parse(exec_cmd('fuel env --env %s' % self.env_id))
log('Environment status: %s' % env[0][E['status']])
r, _ = exec_cmd('tail -2 %s | head -1' % LOG_FILE, False)
diff --git a/deploy/deploy.py b/deploy/deploy.py
index bf0b39d42..bc1dfdb49 100755
--- a/deploy/deploy.py
+++ b/deploy/deploy.py
@@ -61,7 +61,7 @@ class AutoDeploy(object):
def __init__(self, no_fuel, fuel_only, no_health_check, cleanup_only,
cleanup, storage_dir, pxe_bridge, iso_file, dea_file,
dha_file, fuel_plugins_dir, fuel_plugins_conf_dir,
- no_plugins):
+ no_plugins, deploy_timeout):
self.no_fuel = no_fuel
self.fuel_only = fuel_only
self.no_health_check = no_health_check
@@ -75,6 +75,7 @@ class AutoDeploy(object):
self.fuel_plugins_dir = fuel_plugins_dir
self.fuel_plugins_conf_dir = fuel_plugins_conf_dir
self.no_plugins = no_plugins
+ self.deploy_timeout = deploy_timeout
self.dea = (DeploymentEnvironmentAdapter(dea_file)
if not cleanup_only else None)
self.dha = DeploymentHardwareAdapter(dha_file)
@@ -197,7 +198,7 @@ class AutoDeploy(object):
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)
+ WORK_DIR, self.no_health_check, self.deploy_timeout)
return dep.deploy()
def setup_execution_environment(self):
@@ -313,6 +314,9 @@ def parse_arguments():
help='Fuel Plugins Configuration directory')
parser.add_argument('-np', dest='no_plugins', action='store_true',
default=False, help='Do not install Fuel Plugins')
+ parser.add_argument('-dt', dest='deploy_timeout', action='store',
+ default=240, help='Deployment timeout (in minutes) '
+ '[default: 240]')
args = parser.parse_args()
log(args)
@@ -338,7 +342,8 @@ def parse_arguments():
'dha_file': args.dha_file,
'fuel_plugins_dir': args.fuel_plugins_dir,
'fuel_plugins_conf_dir': args.fuel_plugins_conf_dir,
- 'no_plugins': args.no_plugins}
+ 'no_plugins': args.no_plugins,
+ 'deploy_timeout': args.deploy_timeout}
return kwargs
diff --git a/deploy/deploy_env.py b/deploy/deploy_env.py
index 735ea66a3..3d1cdf430 100644
--- a/deploy/deploy_env.py
+++ b/deploy/deploy_env.py
@@ -34,7 +34,8 @@ BLADE_RESTART_TIMES = 3
class CloudDeploy(object):
def __init__(self, dea, dha, fuel_ip, fuel_username, fuel_password,
- dea_file, fuel_plugins_conf_dir, work_dir, no_health_check):
+ dea_file, fuel_plugins_conf_dir, work_dir, no_health_check,
+ deploy_timeout):
self.dea = dea
self.dha = dha
self.fuel_ip = fuel_ip
@@ -48,6 +49,7 @@ class CloudDeploy(object):
self.fuel_plugins_conf_dir = fuel_plugins_conf_dir
self.work_dir = work_dir
self.no_health_check = no_health_check
+ self.deploy_timeout = deploy_timeout
self.file_dir = os.path.dirname(os.path.realpath(__file__))
self.ssh = SSHClient(self.fuel_ip, self.fuel_username,
self.fuel_password)
@@ -103,8 +105,11 @@ class CloudDeploy(object):
deploy_app = '%s/%s' % (self.work_dir, deploy_app)
dea_file = '%s/%s' % (self.work_dir, os.path.basename(self.dea_file))
with self.ssh as s:
- status = s.run('python %s %s %s' % (
- deploy_app, ('-nh' if self.no_health_check else ''), dea_file))
+ status = s.run('python %s %s %s %s' % (
+ deploy_app,
+ ('-nh' if self.no_health_check else ''),
+ ('-dt %s' % self.deploy_timeout if self.deploy_timeout else ''),
+ dea_file))
return status
def check_supported_release(self):
diff --git a/docs/build-instruction.rst b/docs/build-instruction.rst
index d5721af0b..254c0d3f2 100644
--- a/docs/build-instruction.rst
+++ b/docs/build-instruction.rst
@@ -1,9 +1,6 @@
-================================================================================================
+=================================================================================================
OPNFV Build instruction for the Brahmaputra release of OPNFV when using Fuel as a deployment tool
-================================================================================================
-
-.. contents:: Table of Contents
- :backlinks: none
+=================================================================================================
License
=======
@@ -87,7 +84,7 @@ Then restart docker:
.. code-block:: console
-$ sudo service docker restart
+ $ sudo service docker restart
Setting up OPNFV Gerrit in order to being able to clone the code
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/docs/conf.py b/docs/conf.py
new file mode 100644
index 000000000..6cd69313d
--- /dev/null
+++ b/docs/conf.py
@@ -0,0 +1,28 @@
+# SPDX-license-identifier: Apache-2.0
+##############################################################################
+# Copyright (c) 2016 Linux Foundation and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+# Copied from releng/docs/etc/conf.py
+extensions = ['sphinxcontrib.httpdomain',
+ 'sphinx.ext.autodoc',
+ 'sphinx.ext.viewcode',
+ 'sphinx.ext.napoleon']
+
+needs_sphinx = '1.3'
+master_doc = 'index'
+pygments_style = 'sphinx'
+
+html_use_index = False
+numfig = True
+html_logo = 'opnfv-logo.png'
+
+latex_domain_indices = False
+latex_logo = 'opnfv-logo.png'
+
+# addtional config
+latex_elements = {'figure_align': 'H'}
diff --git a/docs/configguide/installerconfig.rst b/docs/configguide/installerconfig.rst
index 0b26743e5..60ffadf1f 100644
--- a/docs/configguide/installerconfig.rst
+++ b/docs/configguide/installerconfig.rst
@@ -69,7 +69,7 @@ Following high level hardware requirements must be met:
+--------------------+------------------------------------------------------+
| **HW Aspect** | **Requirement** |
| | |
-+--------------------+------------------------------------------------------+
++====================+======================================================+
| **# of nodes** | Minimum 5 (3 for non redundant deployment): |
| | |
| | - 1 Fuel deployment master (may be virtualized) |
@@ -155,7 +155,7 @@ developed by OPNFV:
+--------------------+------------------------------------------------------+
| **Plugin name** | **Short description** |
| | |
-+--------------------+------------------------------------------------------+
++====================+======================================================+
| OpenDaylight | OpenDaylight provides an open-source SDN Controller |
| | providing networking features such as L2 and L3 |
| | network control, "Service Function Chaining", |
diff --git a/docs/index.rst b/docs/index.rst
index fd61a5201..6bba3aaf1 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -4,32 +4,16 @@
.. You should have received a copy of the license along with this work.
.. If not, see <http://creativecommons.org/licenses/by/4.0/>.
-.. OPNFV Release Engineering documentation, created by
- sphinx-quickstart on Tue Jun 9 19:12:31 2015.
- You can adapt this file completely to your liking, but it should at least
- contain the root `toctree` directive.
-
-.. image:: opnfv-logo.png
- :height: 40
- :width: 200
- :alt: OPNFV
- :align: left
-
+**********
Fuel@OPNFV
-=======================================
-
-Contents:
+**********
.. toctree::
:maxdepth: 4
- :titlesonly:
build-instruction.rst
installation-instruction.rst
release-notes.rst
-* :ref:`search`
-
-Revision: _sha1_
+.. :titlesonly:
-Build date: |today|
diff --git a/docs/installation-instruction.rst b/docs/installation-instruction.rst
index aaf96becb..f7125816d 100644
--- a/docs/installation-instruction.rst
+++ b/docs/installation-instruction.rst
@@ -2,9 +2,6 @@
OPNFV Installation instruction for the Brahmaputra release of OPNFV when using Fuel as a deployment tool
========================================================================================================
-.. contents:: Table of Contents
- :backlinks: none
-
License
=======
@@ -111,7 +108,7 @@ installation of Brahmaputra using Fuel:
+--------------------+------------------------------------------------------+
| **HW Aspect** | **Requirement** |
| | |
-+--------------------+------------------------------------------------------+
++====================+======================================================+
| **# of nodes** | Minimum 5 (3 for non redundant deployment): |
| | |
| | - 1 Fuel deployment master (may be virtualized) |
diff --git a/docs/release-notes.rst b/docs/release-notes.rst
index 8e590c0f3..e731af02c 100644
--- a/docs/release-notes.rst
+++ b/docs/release-notes.rst
@@ -2,9 +2,6 @@
OPNFV Release Note for the Brahmaputra release of OPNFV when using Fuel as a deployment tool
============================================================================================
-.. contents:: Table of Contents
- :backlinks: none
-
License
=======
@@ -121,6 +118,7 @@ comes with the following documentation:
Reason for version
------------------
+
Feature additions
~~~~~~~~~~~~~~~~~
diff --git a/prototypes/sfc_tacker/poc.tacker-up.sh b/prototypes/sfc_tacker/poc.tacker-up.sh
index 0b6e0ce0f..f7c9e1165 100755
--- a/prototypes/sfc_tacker/poc.tacker-up.sh
+++ b/prototypes/sfc_tacker/poc.tacker-up.sh
@@ -1,6 +1,5 @@
#!/bin/bash
-
#
# POC Script to build/install/deploy/orchestrate Tacker on an OPNFV Brhamaputra Fuel cluster
# Script assuming it runs on the openstack primary controller (where is opendaylight
@@ -11,10 +10,9 @@
#
# (c) 2016 Telefonaktiebolaget L. M. ERICSSON
#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
+# All rights reserved. This program and the accompanying materials are made available
+# under the terms of the Apache License, Version 2.0 which accompanies this distribution,
+# and is available at http://www.apache.org/licenses/LICENSE-2.0
#
@@ -27,14 +25,14 @@ DEPREPO="jsonrpclib"
CLIENT="python-python-tackerclient_0.0.1~dev48-1_all.deb"
JSONRPC="python-jsonrpclib_0.1.7-1_all.deb"
-SERVER="python-tacker_2014.2.0~dev176-1_all.deb"
+SERVER="python-tacker_2014.2.0~dev177-1_all.deb"
# Function checks whether crudini is available, if not - installs
function chkCrudini () {
if [[ ! -f '/usr/bin/crudini' ]]; then
wget -N http://mirrors.kernel.org/ubuntu/pool/universe/p/python-iniparse/python-iniparse_0.4-2.1build1_all.deb
wget -N http://archive.ubuntu.com/ubuntu/pool/universe/c/crudini/crudini_0.3-1_amd64.deb
- dpkg -i python-iniparse_0.4-2.1build1_all.deb crudini_0.3-1_amd64.deb crudini_0.3-1_amd64.deb
+ dpkg -i python-iniparse_0.4-2.1build1_all.deb crudini_0.3-1_amd64.deb
fi
}
@@ -212,17 +210,6 @@ function deployTackerClient() {
dpkg --purge python-tackerclient
git clone -b 'SFC_refactor' https://github.com/trozet/python-tackerclient.git $CLIREPO
cd $CLIREPO
-# patch -p 1 <<EOFCSC
-#--- a/setup.cfg 2016-02-09 08:51:48.424937110 +0000
-#+++ b/setup.cfg 2016-02-09 08:52:17.084938135 +0000
-#@@ -1,5 +1,5 @@
-# [metadata]
-#-name = python-tackerclient
-#+name = tackerclient
-# summary = CLI and Client Library for OpenStack Networking
-# description-file =
-# README.rst
-#EOFCSC
python setup.py --command-packages=stdeb.command bdist_deb
cd "deb_dist"
cp $CLIENT $MYDIR
@@ -246,7 +233,7 @@ function populate_client() {
myaddr=$(ifconfig br-fw-admin | sed -n '/inet addr/s/.*addr.\([^ ]*\) .*/\1/p')
for anode in $clusternodes ; do
if [ "$anode" != "$myaddr" ] ; then
- echo "installing $CLIENT on $anode"
+ echo "Installing $CLIENT on $anode"
scp ${SSH_OPTIONS[@]} $CLIENT $anode:$CLIENT
ssh ${SSH_OPTIONS[@]} $anode dpkg -i $CLIENT
ssh ${SSH_OPTIONS[@]} $anode rm $CLIENT
@@ -263,21 +250,27 @@ function orchestarte () {
popd
### Facts ###
+
+ # Port(s) Protocol ServiceDetails Source
+ # 8805-8872 tcp,udp Unassigned IANA
+ bind_port='8808'
+
auth_uri=$(crudini --get '/etc/heat/heat.conf' 'keystone_authtoken' 'auth_uri')
identity_uri=$(crudini --get '/etc/heat/heat.conf' 'keystone_authtoken' 'identity_uri')
- database_connection="mysql://tacker:tacker@$(hiera database_vip)/tacker"
+ mgmt_addr=$(ifconfig br-mgmt | sed -n '/inet addr/s/.*addr.\([^ ]*\) .*/\1/p')
+ pub_addr=$(ifconfig br-ex-lnx | sed -n '/inet addr/s/.*addr.\([^ ]*\) .*/\1/p')
rabbit_host=$(crudini --get '/etc/heat/heat.conf' 'oslo_messaging_rabbit' 'rabbit_hosts'| cut -d ':' -f 1)
rabbit_password=$(crudini --get '/etc/heat/heat.conf' 'oslo_messaging_rabbit' 'rabbit_password')
sql_host=$(hiera database_vip)
- admin_url="http://$(hiera management_vip):8888/"
- public_url="http://$(hiera public_vip):8888/"
+ database_connection="mysql://tacker:tacker@${sql_host}/tacker"
+ admin_url="http://${mgmt_addr}:${bind_port}"
+ public_url="http://${pub_addr}:${bind_port}"
heat_api_vip=$(crudini --get '/etc/heat/heat.conf' 'heat_api' 'bind_host')
- mgmt_addr=$(ifconfig br-mgmt | sed -n '/inet addr/s/.*addr.\([^ ]*\) .*/\1/p')
- allowed_hosts="[ '${HOSTNAME}', 'localhost', '127.0.0.1', '%' ]"
+ allowed_hosts="[ '${sql_host}', '${HOSTNAME%%.domain.tld}', 'localhost', '127.0.0.1', '%' ]"
heat_uri="http://${heat_api_vip}:8004/v1"
odl_port='8282'
service_tenant='services'
- myRegion='regionOne'
+ myRegion='RegionOne'
myPassword='tacker'
cat > configure_tacker.pp << EOF
@@ -289,7 +282,7 @@ function orchestarte () {
class { 'tacker':
package_ensure => 'absent',
client_package_ensure => 'absent',
- bind_host => '${mgmt_addr}',
+ bind_port => '${bind_port}',
keystone_password => '${myPassword}',
keystone_tenant => '${service_tenant}',
auth_uri => '${auth_uri}',
@@ -304,7 +297,11 @@ function orchestarte () {
class { 'tacker::db::mysql':
password => '${myPassword}',
- host => '${sql_host}',
+ dbname => 'tacker',
+ user => 'tacker',
+ host => '127.0.0.1',
+ charset => 'utf8',
+ collate => 'utf8_general_ci',
allowed_hosts => ${allowed_hosts},
}
@@ -346,7 +343,7 @@ function populate_rc() {
myaddr=$(ifconfig br-fw-admin | sed -n '/inet addr/s/.*addr.\([^ ]*\) .*/\1/p')
for anode in $clusternodes ; do
if [ "$anode" != "$myaddr" ] ; then
- echo "populating seetings to $anode"
+ echo "Populating seetings to $anode"
scp ${SSH_OPTIONS[@]} tackerc $anode:tackerc
fi
done