Make networking-bgpvpn as an own module
Enhance basic puppet functionality. Include config. Change-Id: Ia4ee9b1d25f4c8e4b6531d8ae09d2cf300e9b5af
This commit is contained in:
parent
fae23b9890
commit
32e4b36fa2
|
@ -0,0 +1,4 @@
|
||||||
|
tmp/
|
||||||
|
repositories/ubuntu/networking-bgpvpn-config_*_amd64.deb
|
||||||
|
repositories/ubuntu/python-networking-bgpvpn_*_all.deb
|
||||||
|
.build/
|
|
@ -27,7 +27,7 @@ Limitations
|
||||||
Installation Guide
|
Installation Guide
|
||||||
==================
|
==================
|
||||||
|
|
||||||
OpenDaylight plugin installation
|
BGPVPN plugin installation
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
|
|
||||||
1. Clone the fuel-plugin-bgpvpn repo from github:
|
1. Clone the fuel-plugin-bgpvpn repo from github:
|
||||||
|
@ -52,7 +52,7 @@ OpenDaylight plugin installation
|
||||||
|
|
||||||
scp bgpnvpn-[x.x.x].rpm root@<the_Fuel_Master_node_IP address>:/tmp
|
scp bgpnvpn-[x.x.x].rpm root@<the_Fuel_Master_node_IP address>:/tmp
|
||||||
|
|
||||||
7. While logged in Fuel Master install the OpenDaylight plugin:
|
7. While logged in Fuel Master install the BGPVPN plugin:
|
||||||
|
|
||||||
fuel plugins --install bgpvpn-[x.x.x].rpm
|
fuel plugins --install bgpvpn-[x.x.x].rpm
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,24 @@
|
||||||
package {'python-networking-bgpvpn':
|
service { 'neutron-server':
|
||||||
ensure => installed,
|
ensure => running,
|
||||||
} ->
|
}
|
||||||
neutron_config { 'DEFAULT/service_plugins': value => 'networking_bgpvpn.neutron.services.plugin.BGPVPNPlugin';}
|
|
||||||
|
|
||||||
|
$inject_script = '/tmp/inject_service_plugins.sh'
|
||||||
|
file { $inject_script:
|
||||||
|
ensure => file,
|
||||||
|
content => template('networking-bgpvpn/inject_service_plugins.sh'),
|
||||||
|
}
|
||||||
|
$neutron_conf_file='/etc/neutron/neutron.conf'
|
||||||
|
file { $neutron_conf_file:
|
||||||
|
ensure => file
|
||||||
|
}
|
||||||
|
exec { 'inject_service_plugins':
|
||||||
|
command => "bash $inject_script /etc/neutron/neutron.conf networking_bgpvpn.neutron.services.plugin.BGPVPNPlugin",
|
||||||
|
require => File[$inject_script],
|
||||||
|
path => '/usr/local/bin:/usr/bin:/sbin:/bin:/usr/local/sbin:/usr/sbin',
|
||||||
|
subscribe => File[$neutron_conf_file],
|
||||||
|
}
|
||||||
|
|
||||||
|
class {'networking-bgpvpn':
|
||||||
|
notify => Service['neutron-server']}
|
||||||
|
class {'networking-bgpvpn-backend-config':
|
||||||
|
notify => Service['neutron-server']}
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
class networking-bgpvpn {
|
||||||
|
|
||||||
|
package {'python-networking-bgpvpn':
|
||||||
|
ensure => installed,
|
||||||
|
notify => Service['neutron-server'],
|
||||||
|
}
|
||||||
|
package {'networking-bgpvpn-config':
|
||||||
|
ensure => installed,
|
||||||
|
notify => Service['neutron-server'],
|
||||||
|
}
|
||||||
|
|
||||||
|
# This is only needed for kilo.
|
||||||
|
# fuel-library/puppet/neutron/manifest/server.pp: exec 'neutron-db-sync' was taken as
|
||||||
|
# example. In liberty it is not needed
|
||||||
|
exec { 'bgpvpn-db-sync':
|
||||||
|
command => 'touch /root/db.sync.done;bgpvpn-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugin.ini upgrade head',
|
||||||
|
path => '/usr/local/bin:/usr/bin:/sbin:/bin:/usr/local/sbin:/usr/sbin',
|
||||||
|
notify => Service['neutron-server'],
|
||||||
|
# TODO
|
||||||
|
#subscribe => Neutron_config['database/connection'],
|
||||||
|
tries => 10,
|
||||||
|
# TODO(bogdando) contribute change to upstream:
|
||||||
|
# new try_sleep param for sleep driven development (SDD)
|
||||||
|
try_sleep => 20,
|
||||||
|
require => Package["python-networking-bgpvpn"]
|
||||||
|
}
|
||||||
|
Exec<| title == 'neutron-db-sync' |> ~> Exec['bgpvpn-db-sync']
|
||||||
|
}
|
||||||
|
|
||||||
|
class networking-bgpvpn-backend-config {
|
||||||
|
|
||||||
|
require networking-bgpvpn
|
||||||
|
if hiera('opendaylight', false) {
|
||||||
|
$NETWORKING_BGPVPN_DRIVER = 'BGPVPN:OpenDaylight:networking_bgpvpn.neutron.services.service_drivers.opendaylight.odl.OpenDaylightBgpvpnDriver:default'
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
fail('Bagpipe driver not yet included. You need to have anotehr bgpvpn dirver: Opendaylight')
|
||||||
|
}
|
||||||
|
# In liberty this goes to an own config file
|
||||||
|
neutron_config { 'service_providers/service_provider': value => $NETWORKING_BGPVPN_DRIVER;}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
usage() {
|
||||||
|
echo "usage: $0 <neutron-conf-file> <service_plugins_to_add>" >&2
|
||||||
|
}
|
||||||
|
if [[ $# -ne 2 ]]; then
|
||||||
|
usage
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
conf_file=$1
|
||||||
|
service_plugin=$2
|
||||||
|
if [ -e conf_file ]; then
|
||||||
|
echo "File: $conf_file not found."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if ! grep -q "$service_plugin" $conf_file ; then
|
||||||
|
service_plugins_v1=$(grep "^service_plugins" $conf_file | awk {'print $3'})
|
||||||
|
service_plugins_v2=$(grep "^service_plugins" $conf_file | awk {'print $2'})
|
||||||
|
service_plugins=${service_plugins_v1:-$service_plugins_v2}
|
||||||
|
sed -i "s/$service_plugins/$service_plugins,$service_plugin/" $conf_file
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! grep -q "$service_plugin" $conf_file; then
|
||||||
|
echo "Could not add $service_plugin as service plugin in $conf_file."
|
||||||
|
exit 2
|
||||||
|
fi
|
|
@ -1,6 +1,6 @@
|
||||||
attributes:
|
attributes:
|
||||||
metadata:
|
metadata:
|
||||||
restrictions:
|
restrictions:
|
||||||
- "cluster:net_provider != 'neutron'": "Only neutron is supported by OpenDaylight"
|
- "cluster:net_provider != 'neutron'": "Only neutron is supported by BGPVPN-plugin"
|
||||||
label: "BGPVPN plugin"
|
label: "BGPVPN plugin"
|
||||||
weight: 90
|
weight: 90
|
||||||
|
|
|
@ -3,7 +3,7 @@ name: bgpvpn
|
||||||
# Human-readable name for your plugin
|
# Human-readable name for your plugin
|
||||||
title: BGPVPN plugin
|
title: BGPVPN plugin
|
||||||
# Plugin version
|
# Plugin version
|
||||||
version: '0.1.0'
|
version: '0.2.1'
|
||||||
# Description
|
# Description
|
||||||
description: 'This plugin provides BGPVPN extension for neutron.'
|
description: 'This plugin provides BGPVPN extension for neutron.'
|
||||||
# Required fuel version
|
# Required fuel version
|
||||||
|
|
|
@ -25,6 +25,14 @@ function build_pkg {
|
||||||
pushd "${DIR}/repositories/${1}/"
|
pushd "${DIR}/repositories/${1}/"
|
||||||
fpm --force -s python -t deb -m 'mskalski@mirantis.com' --python-disable-dependency oslo.config ${TMP_DIR}/networking-bgpvpn/setup.py
|
fpm --force -s python -t deb -m 'mskalski@mirantis.com' --python-disable-dependency oslo.config ${TMP_DIR}/networking-bgpvpn/setup.py
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
# fpm -C is buggy https://github.com/jordansissel/fpm/issues/818
|
||||||
|
# so we have to change the rootdir manually
|
||||||
|
pushd ${TMP_DIR}/networking-bgpvpn/
|
||||||
|
fpm --force -s dir -t deb -m 'nikolas.hermanns@ericsson.com' --config-files etc -n networking-bgpvpn-config -v 1.0 etc
|
||||||
|
mv networking-bgpvpn-config_*_amd64.deb ${DIR}/repositories/${1}/
|
||||||
|
popd
|
||||||
|
|
||||||
;;
|
;;
|
||||||
*) echo "Not supported system"; exit 1;;
|
*) echo "Not supported system"; exit 1;;
|
||||||
esac
|
esac
|
||||||
|
@ -34,16 +42,17 @@ command -v fpm >/dev/null 2>&1 || { echo >&2 "fpm ruby gem required but it's not
|
||||||
|
|
||||||
cleanup
|
cleanup
|
||||||
|
|
||||||
|
|
||||||
mkdir -p "${TMP_DIR}"
|
mkdir -p "${TMP_DIR}"
|
||||||
|
|
||||||
|
|
||||||
pushd $TMP_DIR
|
pushd $TMP_DIR
|
||||||
|
|
||||||
|
|
||||||
git clone $NETWORKING_BGPVPN_REPO networking-bgpvpn
|
git clone $NETWORKING_BGPVPN_REPO networking-bgpvpn
|
||||||
pushd networking-bgpvpn
|
pushd networking-bgpvpn
|
||||||
git checkout $NETWORKING_BGPVPN_BRANCH
|
git checkout $NETWORKING_BGPVPN_BRANCH
|
||||||
sed -i -- 's/sphinxcontrib-blockdiag/sphinxcontrib.blockdiag/' ./requirements.txt
|
sed -i -- 's/sphinxcontrib-blockdiag//' ./requirements.txt
|
||||||
sed -i -- 's/sphinxcontrib-seqdiag/sphinxcontrib.seqdiag/' ./requirements.txt
|
sed -i -- 's/sphinxcontrib-seqdiag//' ./requirements.txt
|
||||||
|
popd
|
||||||
popd
|
popd
|
||||||
|
|
||||||
for system in $BUILD_FOR
|
for system in $BUILD_FOR
|
||||||
|
@ -51,4 +60,4 @@ do
|
||||||
build_pkg $system
|
build_pkg $system
|
||||||
done
|
done
|
||||||
|
|
||||||
cleanup
|
#cleanup
|
||||||
|
|
Loading…
Reference in New Issue