aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--build/f_example_control_bond/Makefile28
-rw-r--r--build/f_example_control_bond/README56
-rw-r--r--build/f_example_control_bond/puppet/modules/opnfv/files/control-bond90
-rw-r--r--build/f_example_control_bond/puppet/modules/opnfv/manifests/control-bond.pp56
-rw-r--r--build/f_isoroot/f_collectd-ceilometer-pluginbuild/packages.yaml7
-rw-r--r--build/f_isoroot/f_kvm-pluginbuild/config.mk4
-rw-r--r--build/f_isoroot/f_odlpluginbuild/config.mk2
-rw-r--r--build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/Makefile91
-rw-r--r--build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/config.mk13
-rw-r--r--build/f_isoroot/f_repobuild/fuel_bootstrap_cli.yaml8
-rwxr-xr-xbuild/f_isoroot/f_repobuild/select_ubuntu_repo.sh34
-rw-r--r--build/patch-repos/0040-xorriso-fails-to-add-files-with-path-longer-then-240.patch24
-rw-r--r--build/patch-repos/build/repos/fuel-library/0001-Disable-token-revoke-to-increase-keystone-performanc.patch44
-rw-r--r--build/vagrant/README.rst39
-rw-r--r--build/vagrant/Vagrantfile23
-rwxr-xr-xbuild/vagrant/build_fuel.sh9
-rwxr-xr-xbuild/vagrant/setup_fuel.sh26
-rw-r--r--deploy/common.py10
-rw-r--r--deploy/config/labs/devel-pipeline/default/fuel/config/dha.yaml9
-rw-r--r--deploy/config/labs/devel-pipeline/elx/fuel/config/dha.yaml9
-rw-r--r--deploy/config/labs/devel-pipeline/huawei-ch/fuel/config/dha.yaml9
-rw-r--r--deploy/config/labs/devel-pipeline/intel-sc/fuel/config/dha.yaml9
-rw-r--r--deploy/config/plugins/fuel-bgpvpn_0.0.2.yaml8
-rw-r--r--deploy/config/plugins/fuel-bgpvpn_0.0.3.yaml8
-rw-r--r--deploy/config/plugins/fuel-bgpvpn_0.9.0.yaml8
-rw-r--r--deploy/deploy-config.py475
-rwxr-xr-xdeploy/templater.py41
-rw-r--r--docs/installationprocedure/installation.instruction.rst2
-rw-r--r--docs/releasenotes/release-notes.rst20
29 files changed, 453 insertions, 709 deletions
diff --git a/build/f_example_control_bond/Makefile b/build/f_example_control_bond/Makefile
deleted file mode 100644
index 0949737bc..000000000
--- a/build/f_example_control_bond/Makefile
+++ /dev/null
@@ -1,28 +0,0 @@
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-TOP := $(shell pwd)
-
-.PHONY: all
-all:
-
-.PHONY: clean
-clean:
- @rm -rf tmp
- @rm -rf release
-
-.PHONY: validate-cache
-validate-cache:
- @echo "No cache validation schema available for $(shell pwd)"
- @echo "Continuing ..."
-
-.PHONY: release
-release:
- @cp -Rvp puppet/modules/* $(PUPPET_DEST)
diff --git a/build/f_example_control_bond/README b/build/f_example_control_bond/README
deleted file mode 100644
index 4449b2ff2..000000000
--- a/build/f_example_control_bond/README
+++ /dev/null
@@ -1,56 +0,0 @@
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-This is an example of a modification of the bridge and bonding of interfaces.
-Rationale: Fuel currently don't support bonding of the "Admin" network, which
-becomes a problem if you want to co-locate the single "Admin" and the redundant
-bonded "Management" network on one and the same physical network in order to minimize
-number of NICs, switches and cables.
-This example show how you can modify the bridge and bonding settings and scripts to
-achieve co-location. Of course the FUEL GUI becomes shorted in this respect, I.e.
-the "admin" and "management" network cant be dragged across the NICs in the GUI.
-
-The f_example_control_bond has the following structure:
-.
-+--------+----------+-----------+
- | | |
- puppet/ Makefile README
- | (this file)
- |
- |
- modules/
- |
- |
- |
- opnfv/
- |
- +--------------+
- | |
- files/ manifests/
- | |
- | |
- | |
- control-bond control-bond.pp
-
-Makefile:
-Invoked by the git root Makefile, copies the files up to the release build
-directory.
-
-control-bond:
-The control-bond file is the .init file orchestrating the interface-, bridge-
-and bond actions required for enabling the control bond
-
-control-bond.pp:
-The control-bond.pp is the pupet manifest orchestrating the placement and
-configuration of the control-bond shell script file.
-
-To activate this example feature, add "SUBDIRS += f_example_control_bond" in the git root Makefile.
-
-
diff --git a/build/f_example_control_bond/puppet/modules/opnfv/files/control-bond b/build/f_example_control_bond/puppet/modules/opnfv/files/control-bond
deleted file mode 100644
index bf2930d73..000000000
--- a/build/f_example_control_bond/puppet/modules/opnfv/files/control-bond
+++ /dev/null
@@ -1,90 +0,0 @@
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-#!/bin/sh
-### BEGIN INIT INFO
-# Provides: control-bond
-# Required-Start: $remote_fs $all
-# Required-Stop:
-# Default-Start: 2 3 4 5
-# Default-Stop: 0 1 6
-# Short-Description: Bonds eth0 and eth1 and changes bridge configuration.
-### END INIT INFO
-
-
-PATH=/sbin:/usr/sbin:/bin:/usr/bin
-VSCTL=/usr/bin/ovs-vsctl
-APPCTL=/usr/bin/ovs-appctl
-
-
-add_control_bond() {
- logger "Starting addition of control-bond"
- $VSCTL --may-exist br-fw-admin
- $VSCTL --may-exist br-mgmt
- $VSCTL add-bond br-fw-admin bond-control eth0 eth1
-
- $VSCTL set port br-mgmt tag=66
- $APPCTL bond/set-active-slave bond-control eth0
-
- $VSCTL add-port br-fw-admin admin-to-mgmt
- $VSCTL add-port br-mgmt mgmt-to-admin
- $VSCTL set interface admin-to-mgmt type=patch
- $VSCTL set interface mgmt-to-admin type=patch
-
- $VSCTL set interface admin-to-mgmt options:peer=mgmt-to-admin
- $VSCTL set interface mgmt-to-admin options:peer=admin-to-mgmt
-
- $VSCTL set port admin-to-mgmt trunk=66
- $VSCTL set port mgmt-to-admin trunk=66
- logger "Finished addition of control-bond"
-}
-
-status_control_bond() {
- if [ ! -f $VSCTL ]; then
- return 1
- else
- $VSCTL show | grep -q "admin-to-mgmt"
- return $?
- fi
-}
-
-case "$1" in
- start)
- status_control_bond
- if [ $? -eq 0 ]; then
- exit 0
- else
- add_control_bond
- fi
- ;;
- restart|reload|force-reload)
- echo "Error: argument '$1' not supported" >&2
- exit 3
- ;;
- status)
- status_control_bond
- if [ $? -eq 0 ]; then
- echo "The control-bond is enabled"
- exit 0
- else
- echo "The control-bond is disabled"
- exit 1
- fi
-
- ;;
- stop)
- echo "Stop is not supported"
- exit 0
- ;;
- *)
- echo "Usage: $0 start|status" >&2
- exit 3
- ;;
-esac
diff --git a/build/f_example_control_bond/puppet/modules/opnfv/manifests/control-bond.pp b/build/f_example_control_bond/puppet/modules/opnfv/manifests/control-bond.pp
deleted file mode 100644
index 22fe78171..000000000
--- a/build/f_example_control_bond/puppet/modules/opnfv/manifests/control-bond.pp
+++ /dev/null
@@ -1,56 +0,0 @@
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# stefan.k.berg@ericsson.com
-# jonas.bjurel@ericsson.com
-# 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
-##############################################################################
-
-# Class: opnfv::control-bond
-#
-# Bridge control and management networks together using OVS.
-#
-#
-
-class opnfv::control-bond {
- notify { '*** In Opnfv::control-bond-start ***': }
-
- file { "/etc/init.d/control-bond":
- source => "puppet:///modules/opnfv/control-bond",
- owner => 'root',
- group => 'root',
- mode => '0755',
- notify => Service["control-bond"]
- }
-
-
- service { "control-bond":
- ensure => running,
- require => [ File["/etc/init.d/control-bond"], Service["openvswitch-service"] ],
- }
-
- # Only start scripts - we don't want to bring down
- # bridge during shutdown
-
- file { "/etc/rc2.d/S18control-bond":
- ensure => 'link',
- target => '/etc/init.d/control-bond',
- }
-
- file { "/etc/rc3.d/S18control-bond":
- ensure => 'link',
- target => '/etc/init.d/control-bond',
- }
-
- file { "/etc/rc4.d/S18control-bond":
- ensure => 'link',
- target => '/etc/init.d/control-bond',
- }
-
- file { "/etc/rc5.d/S18control-bond":
- ensure => 'link',
- target => '/etc/init.d/control-bond',
- }
-}
diff --git a/build/f_isoroot/f_collectd-ceilometer-pluginbuild/packages.yaml b/build/f_isoroot/f_collectd-ceilometer-pluginbuild/packages.yaml
index d6fea9269..1ba7201f4 100644
--- a/build/f_isoroot/f_collectd-ceilometer-pluginbuild/packages.yaml
+++ b/build/f_isoroot/f_collectd-ceilometer-pluginbuild/packages.yaml
@@ -1,2 +1,9 @@
+##############################################################################
+# Copyright (c) 2016 OPNFV.
+# 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
+##############################################################################
packages:
- "collectd"
diff --git a/build/f_isoroot/f_kvm-pluginbuild/config.mk b/build/f_isoroot/f_kvm-pluginbuild/config.mk
index 9fb2f9283..eaef3d414 100644
--- a/build/f_isoroot/f_kvm-pluginbuild/config.mk
+++ b/build/f_isoroot/f_kvm-pluginbuild/config.mk
@@ -7,6 +7,6 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-KVMFORNFV_BRANCH=b1c117f1c8414bddbe4370414590f5f0b62ae4d1
+KVMFORNFV_BRANCH=stable/colorado
KVMFORNFV_REPO=https://gerrit.opnfv.org/gerrit/kvmfornfv
-KVMFORNFV_CHANGE=
+KVMFORNFV_CHANGE=e6588d1d59d7ac24f25f644650e6845561dd441b
diff --git a/build/f_isoroot/f_odlpluginbuild/config.mk b/build/f_isoroot/f_odlpluginbuild/config.mk
index 466aba2ae..7074ee2e0 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 ?= 0ff4ebdbfe5f681f0b44eea14c9c2b3dbb10b1d5
+FUEL_PLUGIN_ODL_CHANGE ?= 58cf41ff4e9ed928bf024b166776b9df1a2e517b
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/build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/Makefile b/build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/Makefile
deleted file mode 100644
index 9455389bf..000000000
--- a/build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/Makefile
+++ /dev/null
@@ -1,91 +0,0 @@
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# jonas.bjurel@eicsson.com
-# 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
-##############################################################################
-
-TOP := $(shell pwd)
-
-############################################################################
-# BEGIN of Include definitions
-#
-include config.mk
-#
-# END Include definitions
-#############################################################################
-
-.PHONY: all
-all: .ovsnfvbuild
-
-.PHONY: clean
-clean:
- @rm -f .ovsnfvbuild ../release/opnfv/fuel-plugin-ovsnfv-*.rpm fuel-plugin-ovsnfv-*.rpm
- @rm -f $(BUILD_BASE)/gitinfo_ovsnfv-dpdk-plugin.txt gitinfo_ovsnfv-dpdk-plugin.txt
-
-.PHONY: release
-release:.ovsnfvbuild
- @rm -f ../release/opnfv/fuel-plugin-ovsnfv-*.rpm
- @mkdir -p ../release/opnfv
- @cp fuel-plugin-ovsnfv*.rpm ../release/opnfv/
- cp gitinfo_ovsnfv-dpdk-plugin.txt $(BUILD_BASE)
-
-.ovsnfvbuild:
- @rm -rf ovsnfv
- git clone $(OVSNFV_DPDK_REPO) ovsnfv
- cd ovsnfv; \
- git checkout $(OVSNFV_DPDK_BRANCH); \
- if [ ! -z $(OVSNFV_DPDK_CHANGE) ]; then \
- git fetch $(OVSNFV_DPDK_REPO) $(OVSNFV_DPDK_CHANGE); \
- git checkout FETCH_HEAD; \
- fi
- cd ovsnfv; \
- INCLUDE_DEPENDENCIES=true fpb --debug --build $(OVSNFV_DPDK_DIR)
- @mv ovsnfv/$(OVSNFV_DPDK_DIR)/fuel-plugin-ovsnfv*.rpm .
- $(REPOINFO) -r . > gitinfo_ovsnfv-dpdk-plugin.txt
- @rm -rf ovsnfv
- @touch .ovsnfvbuild
- # Store artifact in cache straight away if caching is enabled
- # (no .cacheid will be present unless this is a cached build)
- test -f .cacheid && $(MAKE) -f Makefile put-cache || exit 0
-
-#############################################################################
-# Cache operations - only used when building through ci/build.sh
-#############################################################################
-
-
-# Create a unique hash to be used for getting and putting cache, based on:
-# - The SHA1 hash of the HEAD on the plugin repo's $(OVSNFV_DPDK_BRANCH)
-# - The contents of this Makefile
-.cacheid:
- @if [ ! -z $(OVSNFV_DPDK_CHANGE) ]; then \
- $(CACHETOOL) getcommitid $(OVSNFV_DPDK_REPO) $(OVSNFV_DPDK_CHANGE) > .cachedata; \
- else \
- $(CACHETOOL) getcommitid $(OVSNFV_DPDK_REPO) $(OVSNFV_DPDK_BRANCH) > .cachedata; \
- fi
- @sha1sum Makefile | awk {'print $$1'} >> .cachedata
- @sha1sum config.mk | awk {'print $$1'} >> .cachedata
- @echo -n $(UBUNTU_ARCH) | sha1sum | awk {'print $$1'} >> .cachedata
- @cat .cachedata | $(CACHETOOL) getid > .cacheid
-
-# Clean local data related to caching - called prior to ordinary build
-.PHONY: clean-cache
-clean-cache: clean
- @rm -f .cachedata .cacheid
-
-# Try to download cache - called prior to ordinary build
-.PHONY: get-cache
-get-cache: .cacheid
- @if $(CACHETOOL) check $(shell cat .cacheid); then \
- $(CACHETOOL) get $(shell cat .cacheid) | tar xf -;\
- else \
- echo "No cache item found for $(shell cat .cacheid)" ;\
- exit 0;\
- fi
-
-# Store cache if not already stored - called after ordinary build
-.PHONY: put-cache
-put-cache: .cacheid
- @tar cf - .ovsnfvbuild fuel-plugin-ovsnfv*.rpm gitinfo_ovsnfv-dpdk-plugin.txt | $(CACHETOOL) put $(shell cat .cacheid)
diff --git a/build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/config.mk b/build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/config.mk
deleted file mode 100644
index 1893fce4a..000000000
--- a/build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/config.mk
+++ /dev/null
@@ -1,13 +0,0 @@
-##############################################################################
-# Copyright (c) 2015 Ericsson AB and others.
-# jonas.bjurel@eicsson.com
-# 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
-##############################################################################
-
-OVSNFV_DPDK_BRANCH=stable/brahmaputra
-OVSNFV_DPDK_REPO=https://gerrit.opnfv.org/gerrit/p/ovsnfv.git
-OVSNFV_DPDK_DIR=fuel-plugin-ovsnfv
-OVSNFV_DPDK_CHANGE=
diff --git a/build/f_isoroot/f_repobuild/fuel_bootstrap_cli.yaml b/build/f_isoroot/f_repobuild/fuel_bootstrap_cli.yaml
index d8fab974f..fcf4257f1 100644
--- a/build/f_isoroot/f_repobuild/fuel_bootstrap_cli.yaml
+++ b/build/f_isoroot/f_repobuild/fuel_bootstrap_cli.yaml
@@ -1,3 +1,11 @@
+##############################################################################
+# Copyright (c) 2015,2016 Ericsson AB and others.
+# mskalski@mirantis.com
+# 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
+##############################################################################
---
root_ssh_authorized_file: /root/.ssh/id_rsa.pub
extend_kopts: "biosdevname=0 net.ifnames=1 debug ignore_loglevel log_buf_len=10M print_fatal_signals=1 LOGLEVEL=8"
diff --git a/build/f_isoroot/f_repobuild/select_ubuntu_repo.sh b/build/f_isoroot/f_repobuild/select_ubuntu_repo.sh
index 7b134e73c..20b3485a1 100755
--- a/build/f_isoroot/f_repobuild/select_ubuntu_repo.sh
+++ b/build/f_isoroot/f_repobuild/select_ubuntu_repo.sh
@@ -8,24 +8,32 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-# Try to choose close ubuntu mirror
+# Try to choose close ubuntu mirror from mirrors.txt, but "whitewash" this
+# against the full repo list to removed mirrors not up-to-date.
# Some Ubuntu mirrors seem less reliable for this type of mirroring -
# as they are discoved they can be added to the blacklist below in order
# for them not to be considered.
-BLACKLIST="mirrors.se.eu.kernel.org mirror.its.dal.ca"
+BLACKLIST="mirror.clibre.uqam.ca"
-for url in $(curl -s http://mirrors.ubuntu.com/mirrors.txt)
-do
- host=$(echo $url | cut -d'/' -f3)
- echo ${BLACKLIST} | grep -q ${host} && continue
- if curl -s -o /dev/null --head --fail "$url"; then
- echo $url
- exit 0
- else
- continue
- fi
-done
+#NOTE: For now the mirror selection is disabled due to issues not yet
+# understood/resolved.
+#for url in $((curl -s https://launchpad.net/ubuntu/+archivemirrors | \
+# grep -P -B8 "statusUP|statusSIX" | \
+# grep -o -P "(f|ht)tp.*\"" | \
+# sed 's/"$//' | sort | uniq; \
+# curl -s http://mirrors.ubuntu.com/mirrors.txt | sort | uniq) | \
+# sort | uniq -d)
+#do
+# host=$(echo $url | cut -d'/' -f3)
+# echo ${BLACKLIST} | grep -q ${host} && continue
+# if curl -s -o /dev/null --head --fail "$url"; then
+# echo $url
+# exit 0
+# else
+# continue
+# fi
+#done
# If no suitable local mirror can be found,
# the default archive is returned instead.
diff --git a/build/patch-repos/0040-xorriso-fails-to-add-files-with-path-longer-then-240.patch b/build/patch-repos/0040-xorriso-fails-to-add-files-with-path-longer-then-240.patch
new file mode 100644
index 000000000..734523040
--- /dev/null
+++ b/build/patch-repos/0040-xorriso-fails-to-add-files-with-path-longer-then-240.patch
@@ -0,0 +1,24 @@
+From: Artem Silenkov <asilenkov@mirantis.com>
+Date: Tue, 22 Sep 2015 21:54:44 +0300
+Subject: [PATCH] xorriso fails to add files with path longer then 240
+
+joliet-long option added to xorriso command line
+
+Change-Id: I97016cf3e6a554f44d839740ba7d210337435cdc
+Related-Bug: #1498619
+---
+ iso/module.mk | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/iso/module.mk b/iso/module.mk
+index 8995378..0073068 100644
+--- a/iso/module.mk
++++ b/iso/module.mk
+@@ -174,6 +174,7 @@ $(ISO_PATH): $(BUILD_DIR)/iso/isoroot.done
+ -V $(ISO_VOLUME_ID) -p $(ISO_VOLUME_PREP) \
+ -J -R \
+ -graft-points \
++ -joliet-long \
+ -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table \
+ -isohybrid-mbr /usr/lib/syslinux/isohdpfx.bin \
+ -eltorito-alt-boot -e images/efiboot.img -no-emul-boot \
diff --git a/build/patch-repos/build/repos/fuel-library/0001-Disable-token-revoke-to-increase-keystone-performanc.patch b/build/patch-repos/build/repos/fuel-library/0001-Disable-token-revoke-to-increase-keystone-performanc.patch
new file mode 100644
index 000000000..4d5be493b
--- /dev/null
+++ b/build/patch-repos/build/repos/fuel-library/0001-Disable-token-revoke-to-increase-keystone-performanc.patch
@@ -0,0 +1,44 @@
+From ba542dde34743b276547b7ca3c6591feb9000877 Mon Sep 17 00:00:00 2001
+From: iberezovskiy <iberezovskiy@mirantis.com>
+Date: Mon, 19 Sep 2016 12:35:05 +0300
+Subject: [PATCH] Disable token revoke to increase keystone performance
+
+Change-Id: I4df816369093908ad1eac372f38c92155efbe8e0
+Closes-bug: #1625077
+---
+ .../openstack_tasks/manifests/keystone/keystone.pp | 2 ++
+ tests/noop/spec/hosts/keystone/keystone_spec.rb | 5 +++++
+ 2 files changed, 7 insertions(+)
+
+diff --git a/deployment/puppet/openstack_tasks/manifests/keystone/keystone.pp b/deployment/puppet/openstack_tasks/manifests/keystone/keystone.pp
+index 3162287..ba9d7df 100644
+--- a/deployment/puppet/openstack_tasks/manifests/keystone/keystone.pp
++++ b/deployment/puppet/openstack_tasks/manifests/keystone/keystone.pp
+@@ -327,6 +327,8 @@ class openstack_tasks::keystone::keystone {
+ memcache_pool_unused_timeout => '60',
+ cache_memcache_servers => $memcache_servers,
+ policy_driver => 'keystone.policy.backends.sql.Policy',
++ # Set revoke_by_id to false according to LP #1625077
++ revoke_by_id => false,
+ }
+
+ Package<| title == 'keystone'|> ~> Service<| title == 'keystone'|>
+diff --git a/tests/noop/spec/hosts/keystone/keystone_spec.rb b/tests/noop/spec/hosts/keystone/keystone_spec.rb
+index b29e691..3c0f847 100644
+--- a/tests/noop/spec/hosts/keystone/keystone_spec.rb
++++ b/tests/noop/spec/hosts/keystone/keystone_spec.rb
+@@ -176,6 +176,11 @@ describe manifest do
+ should contain_class('keystone').with('sync_db' => primary_controller)
+ end
+
++ it 'should declare keystone class with revoke_by_id set to false' do
++ # Set revoke_by_id to false according to LP #1625077
++ should contain_class('keystone').with('revoke_by_id' => false)
++ end
++
+ it 'should configure keystone with paramters' do
+ should contain_keystone_config('token/caching').with(:value => 'false')
+ should contain_keystone_config('cache/enabled').with(:value => 'true')
+--
+1.7.9.5
+
diff --git a/build/vagrant/README.rst b/build/vagrant/README.rst
deleted file mode 100644
index 7db098dfa..000000000
--- a/build/vagrant/README.rst
+++ /dev/null
@@ -1,39 +0,0 @@
-=================================
-Fuel@OPNFV Build Based on Vagrant
-=================================
-
-License
-=======
-
-This work is licensed under a Creative Commons Attribution 4.0
-International License. .. http://creativecommons.org/licenses/by/4.0 ..
-(c) Ruijing Guo (Intel) and others
-
-
-Abstract
-========
-
-This document describes how to build fuel iso based on vagrant.
-The build is to follow fuel/docs/build-instruction.rst.
-
-Note
-====
-
-Vagrant based build is not official build. The target user is fuel@opnfv
-developer.
-
-How to Build
-============
-
-run ./build_fuel.sh
-
-
-Vagrantfile
-===========
-
-you can change memory & cpus to fit your enviorments.
-
-setup_fuel.sh
-=============
-
-The script is run in VM and follow fuel/docs/build-instruction.rst.
diff --git a/build/vagrant/Vagrantfile b/build/vagrant/Vagrantfile
deleted file mode 100644
index 0fbadf2ae..000000000
--- a/build/vagrant/Vagrantfile
+++ /dev/null
@@ -1,23 +0,0 @@
-# -*- mode: ruby -*-
-# vi: set ft=ruby :
-
-# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
-VAGRANTFILE_API_VERSION = "2"
-
-Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
-
- config.vm.box = "trusty-server-cloudimg-amd64"
- config.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"
-
- config.vm.define "fuel" do | h |
- h.vm.host_name = "fuel"
- h.vm.synced_folder "../..", "/fuel"
- h.vm.provider :virtualbox do |v|
- v.customize ["modifyvm", :id, "--memory", 8192]
- v.customize ["modifyvm", :id, "--cpus", 8]
- file_to_disk = 'large_disk.vdi'
- v.customize ['createhd', '--filename', file_to_disk, '--size', 512 * 1024]
- v.customize ['storageattach', :id, '--storagectl', 'SATAController', '--port', 1, '--device', 0, '--type', 'hdd', '--medium', file_to_disk ]
- end
- end
-end
diff --git a/build/vagrant/build_fuel.sh b/build/vagrant/build_fuel.sh
deleted file mode 100755
index 051ee4dfd..000000000
--- a/build/vagrant/build_fuel.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash
-
-sudo apt-get update
-sudo apt-get install -y vagrant virtualbox
-vagrant destroy -f; vagrant up
-vagrant ssh -c "sudo apt-get update; sudo apt-get install -y linux-generic-lts-vivid"
-vagrant reload
-vagrant ssh -c "/vagrant/setup_fuel.sh"
-vagrant ssh -c "cd fuel/build; make; cp fuel*.iso /vagrant"
diff --git a/build/vagrant/setup_fuel.sh b/build/vagrant/setup_fuel.sh
deleted file mode 100755
index b4d7651f9..000000000
--- a/build/vagrant/setup_fuel.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-
-sudo apt-get install -y git git-review make curl p7zip-full
-
-#install docker by https://docs.docker.com/engine/installation/linux/ubuntulinux/
-#sudo apt-get install linux-image-extra-$(uname -r)
-sudo apt-get install -y apt-transport-https ca-certificates
-sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
-
-cat << EOF | sudo tee /etc/apt/sources.list.d/docker.list
-deb https://apt.dockerproject.org/repo ubuntu-trusty main
-EOF
-sudo apt-get update
-sudo apt-get purge lxc-docker -y
-
-#workaroud for large disk
-sudo mkdir /var/lib/docker
-yes | sudo mkfs.ext4 /dev/sdb
-sudo mount /dev/sdb /var/lib/docker
-
-sudo apt-cache policy docker-engine
-sudo apt-get install -y docker-engine
-sudo service docker start
-sudo groupadd docker
-sudo usermod -aG docker vagrant
-cp -r /fuel /home/vagrant
diff --git a/deploy/common.py b/deploy/common.py
index 80832e201..07ad54372 100644
--- a/deploy/common.py
+++ b/deploy/common.py
@@ -74,13 +74,13 @@ def exec_cmd(cmd, check=True, attempts=1, delay=5, verbose=False, mask_args=[],
if check:
if return_code > 0:
stderr = stderr.strip()
- print "Failed command: " + str(masked_cmd)
- print "Command returned response: " + str(stderr)
- print "Command return code: " + str(return_code)
+ print("Failed command: " + str(masked_cmd))
+ print("Command returned response: " + str(stderr))
+ print("Command return code: " + str(return_code))
raise Exception(stderr)
else:
- print "Command: " + str(masked_cmd)
- print str(response)
+ print("Command: " + str(masked_cmd))
+ print(str(response))
return response
return response, return_code
diff --git a/deploy/config/labs/devel-pipeline/default/fuel/config/dha.yaml b/deploy/config/labs/devel-pipeline/default/fuel/config/dha.yaml
index ad2f5ebde..0374c5d29 100644
--- a/deploy/config/labs/devel-pipeline/default/fuel/config/dha.yaml
+++ b/deploy/config/labs/devel-pipeline/default/fuel/config/dha.yaml
@@ -1,3 +1,12 @@
+##############################################################################
+# Copyright (c) 2015 Ericsson AB and others.
+# stefan.k.berg@ericsson.com
+# jonas.bjurel@ericsson.com
+# 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
+##############################################################################
dha-pod-config-metadata:
title: Deployment Hardware Adapter (DHA) for fuel development pipeline - default version
version: 0.0.3
diff --git a/deploy/config/labs/devel-pipeline/elx/fuel/config/dha.yaml b/deploy/config/labs/devel-pipeline/elx/fuel/config/dha.yaml
index 3c246c11c..c2352f924 100644
--- a/deploy/config/labs/devel-pipeline/elx/fuel/config/dha.yaml
+++ b/deploy/config/labs/devel-pipeline/elx/fuel/config/dha.yaml
@@ -1,3 +1,12 @@
+##############################################################################
+# Copyright (c) 2015 Ericsson AB and others.
+# stefan.k.berg@ericsson.com
+# jonas.bjurel@ericsson.com
+# 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
+##############################################################################
dha-pod-config-metadata:
title: Deployment Hardware Adapter (DHA) for fuel development pipeline - Ericsson ELX version
version: 0.0.3
diff --git a/deploy/config/labs/devel-pipeline/huawei-ch/fuel/config/dha.yaml b/deploy/config/labs/devel-pipeline/huawei-ch/fuel/config/dha.yaml
index f2aeabd4c..d8f904362 100644
--- a/deploy/config/labs/devel-pipeline/huawei-ch/fuel/config/dha.yaml
+++ b/deploy/config/labs/devel-pipeline/huawei-ch/fuel/config/dha.yaml
@@ -1,3 +1,12 @@
+##############################################################################
+# Copyright (c) 2015 Ericsson AB and others.
+# stefan.k.berg@ericsson.com
+# jonas.bjurel@ericsson.com
+# 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
+##############################################################################
dha-pod-config-metadata:
title: Deployment Hardware Adapter (DHA) for fuel development pipeline - default version
version: 0.0.4
diff --git a/deploy/config/labs/devel-pipeline/intel-sc/fuel/config/dha.yaml b/deploy/config/labs/devel-pipeline/intel-sc/fuel/config/dha.yaml
index 3657285e8..837293950 100644
--- a/deploy/config/labs/devel-pipeline/intel-sc/fuel/config/dha.yaml
+++ b/deploy/config/labs/devel-pipeline/intel-sc/fuel/config/dha.yaml
@@ -1,3 +1,12 @@
+##############################################################################
+# Copyright (c) 2015 Ericsson AB and others.
+# stefan.k.berg@ericsson.com
+# jonas.bjurel@ericsson.com
+# 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
+##############################################################################
dha-pod-config-metadata:
title: Deployment Hardware Adapter (DHA) for fuel development pipeline - Intel Santa Clara, CA. USA version
version: 0.0.1
diff --git a/deploy/config/plugins/fuel-bgpvpn_0.0.2.yaml b/deploy/config/plugins/fuel-bgpvpn_0.0.2.yaml
index 21bcdf170..f7ab89b37 100644
--- a/deploy/config/plugins/fuel-bgpvpn_0.0.2.yaml
+++ b/deploy/config/plugins/fuel-bgpvpn_0.0.2.yaml
@@ -1,3 +1,11 @@
+##############################################################################
+# Copyright (c) 2015 Ericsson AB and others.
+# jonas.bjurel@ericsson.com
+# 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
+##############################################################################
plugin-config-metadata:
title: BGPVPN fuel Plugin configuration template
version: 0.2
diff --git a/deploy/config/plugins/fuel-bgpvpn_0.0.3.yaml b/deploy/config/plugins/fuel-bgpvpn_0.0.3.yaml
index adca822fc..aeea9e450 100644
--- a/deploy/config/plugins/fuel-bgpvpn_0.0.3.yaml
+++ b/deploy/config/plugins/fuel-bgpvpn_0.0.3.yaml
@@ -1,3 +1,11 @@
+##############################################################################
+# Copyright (c) 2015 Ericsson AB and others.
+# jonas.bjurel@ericsson.com
+# 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
+##############################################################################
plugin-config-metadata:
title: BGPVPN fuel Plugin configuration template
version: 0.3
diff --git a/deploy/config/plugins/fuel-bgpvpn_0.9.0.yaml b/deploy/config/plugins/fuel-bgpvpn_0.9.0.yaml
index bbdefaf6e..1aa1259ca 100644
--- a/deploy/config/plugins/fuel-bgpvpn_0.9.0.yaml
+++ b/deploy/config/plugins/fuel-bgpvpn_0.9.0.yaml
@@ -1,3 +1,11 @@
+##############################################################################
+# Copyright (c) 2015 Ericsson AB and others.
+# jonas.bjurel@ericsson.com
+# 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
+##############################################################################
plugin-config-metadata:
title: BGPVPN fuel Plugin configuration template
version: 0.9.0
diff --git a/deploy/deploy-config.py b/deploy/deploy-config.py
index 8896080db..08cb36197 100644
--- a/deploy/deploy-config.py
+++ b/deploy/deploy-config.py
@@ -162,127 +162,6 @@ def merge_dicts(dict1, dict2):
yield (k, dict1[k])
-setup_yaml()
-kwargs = parse_arguments()
-
-# Generate final dea.yaml by merging following config files/fragments in revers priority order:
-# "dea-base", "dea-pod-override", "deplyment-scenario/module-config-override"
-# and "deployment-scenario/dea-override"
-print('Generating final dea.yaml configuration....')
-
-# Fetch dea-base, extract and purge meta-data
-print('Parsing dea-base from: ' + kwargs["dea_base_uri"] + "....")
-response = urllib2.urlopen(kwargs["dea_base_uri"])
-dea_base_conf = yaml.load(response.read())
-dea_base_title = dea_base_conf['dea-base-config-metadata']['title']
-dea_base_version = dea_base_conf['dea-base-config-metadata']['version']
-dea_base_creation = dea_base_conf['dea-base-config-metadata']['created']
-dea_base_sha = sha_uri(kwargs["dea_base_uri"])
-dea_base_comment = dea_base_conf['dea-base-config-metadata']['comment']
-dea_base_conf.pop('dea-base-config-metadata')
-final_dea_conf = dea_base_conf
-dea_pod_override_nodes = None
-
-# Fetch dea-pod-override, extract and purge meta-data, merge with previous dea data structure
-print('Parsing the dea-pod-override from: ' + kwargs["dea_pod_override_uri"] + "....")
-response = urllib2.urlopen(kwargs["dea_pod_override_uri"])
-dea_pod_override_conf = yaml.load(response.read())
-if dea_pod_override_conf:
- dea_pod_title = dea_pod_override_conf['dea-pod-override-config-metadata']['title']
- dea_pod_version = dea_pod_override_conf['dea-pod-override-config-metadata']['version']
- dea_pod_creation = dea_pod_override_conf['dea-pod-override-config-metadata']['created']
- dea_pod_sha = sha_uri(kwargs["dea_pod_override_uri"])
- dea_pod_comment = dea_pod_override_conf['dea-pod-override-config-metadata']['comment']
- print('Merging dea-base and dea-pod-override configuration ....')
- dea_pod_override_conf.pop('dea-pod-override-config-metadata')
- # Copy the list of original nodes, which holds info on their transformations
- if 'nodes' in dea_pod_override_conf:
- dea_pod_override_nodes = list(dea_pod_override_conf['nodes'])
- if dea_pod_override_conf:
- final_dea_conf = dict(merge_dicts(final_dea_conf, dea_pod_override_conf))
-
-# Fetch deployment-scenario, extract and purge meta-data, merge deployment-scenario/
-# dea-override-configith previous dea data structure
-print('Parsing deployment-scenario from: ' + kwargs["scenario"] + "....")
-
-response = urllib2.urlopen(kwargs["scenario_base_uri"] + "/scenario.yaml")
-scenario_short_translation_conf = yaml.load(response.read())
-if kwargs["scenario"] in scenario_short_translation_conf:
- scenario_uri = (kwargs["scenario_base_uri"]
- + "/"
- + scenario_short_translation_conf[kwargs["scenario"]]['configfile'])
-else:
- scenario_uri = kwargs["scenario_base_uri"] + "/" + kwargs["scenario"]
-response = urllib2.urlopen(scenario_uri)
-deploy_scenario_conf = yaml.load(response.read())
-
-if deploy_scenario_conf:
- deploy_scenario_title = deploy_scenario_conf['deployment-scenario-metadata']['title']
- deploy_scenario_version = deploy_scenario_conf['deployment-scenario-metadata']['version']
- deploy_scenario_creation = deploy_scenario_conf['deployment-scenario-metadata']['created']
- deploy_scenario_sha = sha_uri(scenario_uri)
- deploy_scenario_comment = deploy_scenario_conf['deployment-scenario-metadata']['comment']
- deploy_scenario_conf.pop('deployment-scenario-metadata')
-else:
- print("Deployment scenario file not found or is empty")
- print("Cannot continue, exiting ....")
- sys.exit(1)
-
-dea_scenario_override_conf = deploy_scenario_conf["dea-override-config"]
-if dea_scenario_override_conf:
- print('Merging dea-base-, dea-pod-override- and deployment-scenario '
- 'configuration into final dea.yaml configuration....')
- final_dea_conf = dict(merge_dicts(final_dea_conf, dea_scenario_override_conf))
-
-# Fetch plugin-configuration configuration files, extract and purge meta-data,
-# merge/append with previous dea data structure, override plugin-configuration with
-# deploy-scenario/module-config-override
-modules = []
-module_uris = []
-module_titles = []
-module_versions = []
-module_creations = []
-module_shas = []
-module_comments = []
-if deploy_scenario_conf["stack-extensions"]:
- for module in deploy_scenario_conf["stack-extensions"]:
- print('Loading configuration for module: '
- + module["module"]
- + ' and merging it to final dea.yaml configuration....')
- response = urllib2.urlopen(kwargs["plugins_uri"]
- + '/'
- + module["module-config-name"]
- + '_'
- + module["module-config-version"]
- + '.yaml')
- module_conf = yaml.load(response.read())
- modules.append(module["module"])
- module_uris.append(kwargs["plugins_uri"]
- + '/'
- + module["module-config-name"]
- + '_'
- + module["module-config-version"]
- + '.yaml')
- module_titles.append(str(module_conf['plugin-config-metadata']['title']))
- module_versions.append(str(module_conf['plugin-config-metadata']['version']))
- module_creations.append(str(module_conf['plugin-config-metadata']['created']))
- module_shas.append(sha_uri(kwargs["plugins_uri"]
- + '/'
- + module["module-config-name"]
- + '_'
- + module["module-config-version"]
- + '.yaml'))
- module_comments.append(str(module_conf['plugin-config-metadata']['comment']))
- module_conf.pop('plugin-config-metadata')
- final_dea_conf['settings']['editable'].update(module_conf)
- scenario_module_override_conf = module.get('module-config-override')
- if scenario_module_override_conf:
- dea_scenario_module_override_conf = {}
- dea_scenario_module_override_conf['settings'] = {}
- dea_scenario_module_override_conf['settings']['editable'] = {}
- dea_scenario_module_override_conf['settings']['editable'][module["module"]] = scenario_module_override_conf
- final_dea_conf = dict(merge_dicts(final_dea_conf, dea_scenario_module_override_conf))
-
def get_node_ifaces_and_trans(nodes, nid):
for node in nodes:
if node['id'] == nid:
@@ -293,117 +172,243 @@ def get_node_ifaces_and_trans(nodes, nid):
return None
-if dea_pod_override_nodes:
- for node in final_dea_conf['nodes']:
- data = get_node_ifaces_and_trans(dea_pod_override_nodes, node['id'])
- if data:
- print ("Honoring original interfaces and transformations for "
- "node %d to %s, %s" % (node['id'], data[0], data[1]))
- node['interfaces'] = data[0]
- node['transformations'] = data[1]
-
-# Dump final dea.yaml including configuration management meta-data to argument provided
-# directory
-if not os.path.exists(kwargs["output_path"]):
- os.makedirs(kwargs["output_path"])
-print('Dumping final dea.yaml to ' + kwargs["output_path"] + '/dea.yaml....')
-with open(kwargs["output_path"] + '/dea.yaml', "w") as f:
- f.write("\n".join([("title: DEA.yaml file automatically generated from the"
- 'configuration files stated in the "configuration-files"'
- "fragment below"),
- "version: " + str(calendar.timegm(time.gmtime())),
- "created: " + str(time.strftime("%d/%m/%Y")) + " "
- + str(time.strftime("%H:%M:%S")),
- "comment: none\n"]))
-
- f.write("\n".join(["configuration-files:",
- " dea-base:",
- " uri: " + kwargs["dea_base_uri"],
- " title: " + str(dea_base_title),
- " version: " + str(dea_base_version),
- " created: " + str(dea_base_creation),
- " sha1: " + str(dea_base_sha),
- " comment: " + str(dea_base_comment) + "\n"]))
-
- f.write("\n".join([" pod-override:",
- " uri: " + kwargs["dea_pod_override_uri"],
- " title: " + str(dea_pod_title),
- " version: " + str(dea_pod_version),
- " created: " + str(dea_pod_creation),
- " sha1: " + str(dea_pod_sha),
- " comment: " + str(dea_pod_comment) + "\n"]))
-
- f.write("\n".join([" deployment-scenario:",
- " uri: " + str(scenario_uri),
- " title: " + str(deploy_scenario_title),
- " version: " + str(deploy_scenario_version),
- " created: " + str(deploy_scenario_creation),
- " sha1: " + str(deploy_scenario_sha),
- " comment: " + str(deploy_scenario_comment) + "\n"]))
-
- f.write(" plugin-modules:\n")
- for k, _ in enumerate(modules):
- f.write("\n".join([" - module: " + modules[k],
- " uri: " + module_uris[k],
- " title: " + module_titles[k],
- " version: " + module_versions[k],
- " created: " + module_creations[k],
- " sha-1: " + module_shas[k],
- " comment: " + module_comments[k] + "\n"]))
-
- yaml.dump(final_dea_conf, f, default_flow_style=False)
-
-# Load POD dha and override it with "deployment-scenario/dha-override-config" section
-print('Generating final dha.yaml configuration....')
-print('Parsing dha-pod yaml configuration....')
-response = urllib2.urlopen(kwargs["dha_uri"])
-dha_pod_conf = yaml.load(response.read())
-dha_pod_title = dha_pod_conf['dha-pod-config-metadata']['title']
-dha_pod_version = dha_pod_conf['dha-pod-config-metadata']['version']
-dha_pod_creation = dha_pod_conf['dha-pod-config-metadata']['created']
-dha_pod_sha = sha_uri(kwargs["dha_uri"])
-dha_pod_comment = dha_pod_conf['dha-pod-config-metadata']['comment']
-dha_pod_conf.pop('dha-pod-config-metadata')
-final_dha_conf = dha_pod_conf
-
-dha_scenario_override_conf = deploy_scenario_conf["dha-override-config"]
-# Only virtual deploy scenarios can override dha.yaml since there
-# is no way to programatically override a physical environment:
-# wireing, IPMI set-up, etc.
-# For Physical environments, dha.yaml overrides will be silently ignored
-if dha_scenario_override_conf and (final_dha_conf['adapter'] == 'libvirt'
- or final_dha_conf['adapter'] == 'esxi'
- or final_dha_conf['adapter'] == 'vbox'):
- print('Merging dha-pod and deployment-scenario override information to final dha.yaml configuration....')
- final_dha_conf = dict(merge_dicts(final_dha_conf, dha_scenario_override_conf))
-
-# Dump final dha.yaml to argument provided directory
-print('Dumping final dha.yaml to ' + kwargs["output_path"] + '/dha.yaml....')
-with open(kwargs["output_path"] + '/dha.yaml', "w") as f:
- f.write("\n".join([("title: DHA.yaml file automatically generated from"
- "the configuration files stated in the"
- '"configuration-files" fragment below'),
- "version: " + str(calendar.timegm(time.gmtime())),
- "created: " + str(time.strftime("%d/%m/%Y")) + " "
- + str(time.strftime("%H:%M:%S")),
- "comment: none\n"]))
-
- f.write("configuration-files:\n")
-
- f.write("\n".join([" dha-pod-configuration:",
- " uri: " + kwargs["dha_uri"],
- " title: " + str(dha_pod_title),
- " version: " + str(dha_pod_version),
- " created: " + str(dha_pod_creation),
- " sha-1: " + str(dha_pod_sha),
- " comment: " + str(dha_pod_comment) + "\n"]))
-
- f.write("\n".join([" deployment-scenario:",
- " uri: " + str(scenario_uri),
- " title: " + str(deploy_scenario_title),
- " version: " + str(deploy_scenario_version),
- " created: " + str(deploy_scenario_creation),
- " sha-1: " + str(deploy_scenario_sha),
- " comment: " + str(deploy_scenario_comment) + "\n"]))
-
- yaml.dump(final_dha_conf, f, default_flow_style=False)
+
+def main():
+ setup_yaml()
+ kwargs = parse_arguments()
+
+ # Generate final dea.yaml by merging following config files/fragments in revers priority order:
+ # "dea-base", "dea-pod-override", "deplyment-scenario/module-config-override"
+ # and "deployment-scenario/dea-override"
+ print('Generating final dea.yaml configuration....')
+
+ # Fetch dea-base, extract and purge meta-data
+ print('Parsing dea-base from: ' + kwargs["dea_base_uri"] + "....")
+ response = urllib2.urlopen(kwargs["dea_base_uri"])
+ dea_base_conf = yaml.load(response.read())
+ dea_base_title = dea_base_conf['dea-base-config-metadata']['title']
+ dea_base_version = dea_base_conf['dea-base-config-metadata']['version']
+ dea_base_creation = dea_base_conf['dea-base-config-metadata']['created']
+ dea_base_sha = sha_uri(kwargs["dea_base_uri"])
+ dea_base_comment = dea_base_conf['dea-base-config-metadata']['comment']
+ dea_base_conf.pop('dea-base-config-metadata')
+ final_dea_conf = dea_base_conf
+ dea_pod_override_nodes = None
+
+ # Fetch dea-pod-override, extract and purge meta-data, merge with previous dea data structure
+ print('Parsing the dea-pod-override from: ' + kwargs["dea_pod_override_uri"] + "....")
+ response = urllib2.urlopen(kwargs["dea_pod_override_uri"])
+ dea_pod_override_conf = yaml.load(response.read())
+ if dea_pod_override_conf:
+ dea_pod_title = dea_pod_override_conf['dea-pod-override-config-metadata']['title']
+ dea_pod_version = dea_pod_override_conf['dea-pod-override-config-metadata']['version']
+ dea_pod_creation = dea_pod_override_conf['dea-pod-override-config-metadata']['created']
+ dea_pod_sha = sha_uri(kwargs["dea_pod_override_uri"])
+ dea_pod_comment = dea_pod_override_conf['dea-pod-override-config-metadata']['comment']
+ print('Merging dea-base and dea-pod-override configuration ....')
+ dea_pod_override_conf.pop('dea-pod-override-config-metadata')
+ # Copy the list of original nodes, which holds info on their transformations
+ if 'nodes' in dea_pod_override_conf:
+ dea_pod_override_nodes = list(dea_pod_override_conf['nodes'])
+ if dea_pod_override_conf:
+ final_dea_conf = dict(merge_dicts(final_dea_conf, dea_pod_override_conf))
+
+ # Fetch deployment-scenario, extract and purge meta-data, merge deployment-scenario/
+ # dea-override-configith previous dea data structure
+ print('Parsing deployment-scenario from: ' + kwargs["scenario"] + "....")
+
+ response = urllib2.urlopen(kwargs["scenario_base_uri"] + "/scenario.yaml")
+ scenario_short_translation_conf = yaml.load(response.read())
+ if kwargs["scenario"] in scenario_short_translation_conf:
+ scenario_uri = (kwargs["scenario_base_uri"]
+ + "/"
+ + scenario_short_translation_conf[kwargs["scenario"]]['configfile'])
+ else:
+ scenario_uri = kwargs["scenario_base_uri"] + "/" + kwargs["scenario"]
+ response = urllib2.urlopen(scenario_uri)
+ deploy_scenario_conf = yaml.load(response.read())
+
+ if deploy_scenario_conf:
+ deploy_scenario_title = deploy_scenario_conf['deployment-scenario-metadata']['title']
+ deploy_scenario_version = deploy_scenario_conf['deployment-scenario-metadata']['version']
+ deploy_scenario_creation = deploy_scenario_conf['deployment-scenario-metadata']['created']
+ deploy_scenario_sha = sha_uri(scenario_uri)
+ deploy_scenario_comment = deploy_scenario_conf['deployment-scenario-metadata']['comment']
+ deploy_scenario_conf.pop('deployment-scenario-metadata')
+ else:
+ print("Deployment scenario file not found or is empty")
+ print("Cannot continue, exiting ....")
+ sys.exit(1)
+
+ dea_scenario_override_conf = deploy_scenario_conf["dea-override-config"]
+ if dea_scenario_override_conf:
+ print('Merging dea-base-, dea-pod-override- and deployment-scenario '
+ 'configuration into final dea.yaml configuration....')
+ final_dea_conf = dict(merge_dicts(final_dea_conf, dea_scenario_override_conf))
+
+ # Fetch plugin-configuration configuration files, extract and purge meta-data,
+ # merge/append with previous dea data structure, override plugin-configuration with
+ # deploy-scenario/module-config-override
+ modules = []
+ module_uris = []
+ module_titles = []
+ module_versions = []
+ module_creations = []
+ module_shas = []
+ module_comments = []
+ if deploy_scenario_conf["stack-extensions"]:
+ for module in deploy_scenario_conf["stack-extensions"]:
+ print('Loading configuration for module: '
+ + module["module"]
+ + ' and merging it to final dea.yaml configuration....')
+ response = urllib2.urlopen(kwargs["plugins_uri"]
+ + '/'
+ + module["module-config-name"]
+ + '_'
+ + module["module-config-version"]
+ + '.yaml')
+ module_conf = yaml.load(response.read())
+ modules.append(module["module"])
+ module_uris.append(kwargs["plugins_uri"]
+ + '/'
+ + module["module-config-name"]
+ + '_'
+ + module["module-config-version"]
+ + '.yaml')
+ module_titles.append(str(module_conf['plugin-config-metadata']['title']))
+ module_versions.append(str(module_conf['plugin-config-metadata']['version']))
+ module_creations.append(str(module_conf['plugin-config-metadata']['created']))
+ module_shas.append(sha_uri(kwargs["plugins_uri"]
+ + '/'
+ + module["module-config-name"]
+ + '_'
+ + module["module-config-version"]
+ + '.yaml'))
+ module_comments.append(str(module_conf['plugin-config-metadata']['comment']))
+ module_conf.pop('plugin-config-metadata')
+ final_dea_conf['settings']['editable'].update(module_conf)
+ scenario_module_override_conf = module.get('module-config-override')
+ if scenario_module_override_conf:
+ dea_scenario_module_override_conf = {}
+ dea_scenario_module_override_conf['settings'] = {}
+ dea_scenario_module_override_conf['settings']['editable'] = {}
+ dea_scenario_module_override_conf['settings']['editable'][module["module"]] = scenario_module_override_conf
+ final_dea_conf = dict(merge_dicts(final_dea_conf, dea_scenario_module_override_conf))
+
+ if dea_pod_override_nodes:
+ for node in final_dea_conf['nodes']:
+ data = get_node_ifaces_and_trans(dea_pod_override_nodes, node['id'])
+ if data:
+ print ("Honoring original interfaces and transformations for "
+ "node %d to %s, %s" % (node['id'], data[0], data[1]))
+ node['interfaces'] = data[0]
+ node['transformations'] = data[1]
+
+ # Dump final dea.yaml including configuration management meta-data to argument provided
+ # directory
+ if not os.path.exists(kwargs["output_path"]):
+ os.makedirs(kwargs["output_path"])
+ print('Dumping final dea.yaml to ' + kwargs["output_path"] + '/dea.yaml....')
+ with open(kwargs["output_path"] + '/dea.yaml', "w") as f:
+ f.write("\n".join([("title: DEA.yaml file automatically generated from the"
+ 'configuration files stated in the "configuration-files"'
+ "fragment below"),
+ "version: " + str(calendar.timegm(time.gmtime())),
+ "created: " + str(time.strftime("%d/%m/%Y")) + " "
+ + str(time.strftime("%H:%M:%S")),
+ "comment: none\n"]))
+
+ f.write("\n".join(["configuration-files:",
+ " dea-base:",
+ " uri: " + kwargs["dea_base_uri"],
+ " title: " + str(dea_base_title),
+ " version: " + str(dea_base_version),
+ " created: " + str(dea_base_creation),
+ " sha1: " + str(dea_base_sha),
+ " comment: " + str(dea_base_comment) + "\n"]))
+
+ f.write("\n".join([" pod-override:",
+ " uri: " + kwargs["dea_pod_override_uri"],
+ " title: " + str(dea_pod_title),
+ " version: " + str(dea_pod_version),
+ " created: " + str(dea_pod_creation),
+ " sha1: " + str(dea_pod_sha),
+ " comment: " + str(dea_pod_comment) + "\n"]))
+
+ f.write("\n".join([" deployment-scenario:",
+ " uri: " + str(scenario_uri),
+ " title: " + str(deploy_scenario_title),
+ " version: " + str(deploy_scenario_version),
+ " created: " + str(deploy_scenario_creation),
+ " sha1: " + str(deploy_scenario_sha),
+ " comment: " + str(deploy_scenario_comment) + "\n"]))
+
+ f.write(" plugin-modules:\n")
+ for k, _ in enumerate(modules):
+ f.write("\n".join([" - module: " + modules[k],
+ " uri: " + module_uris[k],
+ " title: " + module_titles[k],
+ " version: " + module_versions[k],
+ " created: " + module_creations[k],
+ " sha-1: " + module_shas[k],
+ " comment: " + module_comments[k] + "\n"]))
+
+ yaml.dump(final_dea_conf, f, default_flow_style=False)
+
+ # Load POD dha and override it with "deployment-scenario/dha-override-config" section
+ print('Generating final dha.yaml configuration....')
+ print('Parsing dha-pod yaml configuration....')
+ response = urllib2.urlopen(kwargs["dha_uri"])
+ dha_pod_conf = yaml.load(response.read())
+ dha_pod_title = dha_pod_conf['dha-pod-config-metadata']['title']
+ dha_pod_version = dha_pod_conf['dha-pod-config-metadata']['version']
+ dha_pod_creation = dha_pod_conf['dha-pod-config-metadata']['created']
+ dha_pod_sha = sha_uri(kwargs["dha_uri"])
+ dha_pod_comment = dha_pod_conf['dha-pod-config-metadata']['comment']
+ dha_pod_conf.pop('dha-pod-config-metadata')
+ final_dha_conf = dha_pod_conf
+
+ dha_scenario_override_conf = deploy_scenario_conf["dha-override-config"]
+ # Only virtual deploy scenarios can override dha.yaml since there
+ # is no way to programatically override a physical environment:
+ # wireing, IPMI set-up, etc.
+ # For Physical environments, dha.yaml overrides will be silently ignored
+ if dha_scenario_override_conf and (final_dha_conf['adapter'] == 'libvirt'
+ or final_dha_conf['adapter'] == 'esxi'
+ or final_dha_conf['adapter'] == 'vbox'):
+ print('Merging dha-pod and deployment-scenario override information to final dha.yaml configuration....')
+ final_dha_conf = dict(merge_dicts(final_dha_conf, dha_scenario_override_conf))
+
+ # Dump final dha.yaml to argument provided directory
+ print('Dumping final dha.yaml to ' + kwargs["output_path"] + '/dha.yaml....')
+ with open(kwargs["output_path"] + '/dha.yaml', "w") as f:
+ f.write("\n".join([("title: DHA.yaml file automatically generated from"
+ "the configuration files stated in the"
+ '"configuration-files" fragment below'),
+ "version: " + str(calendar.timegm(time.gmtime())),
+ "created: " + str(time.strftime("%d/%m/%Y")) + " "
+ + str(time.strftime("%H:%M:%S")),
+ "comment: none\n"]))
+
+ f.write("configuration-files:\n")
+
+ f.write("\n".join([" dha-pod-configuration:",
+ " uri: " + kwargs["dha_uri"],
+ " title: " + str(dha_pod_title),
+ " version: " + str(dha_pod_version),
+ " created: " + str(dha_pod_creation),
+ " sha-1: " + str(dha_pod_sha),
+ " comment: " + str(dha_pod_comment) + "\n"]))
+
+ f.write("\n".join([" deployment-scenario:",
+ " uri: " + str(scenario_uri),
+ " title: " + str(deploy_scenario_title),
+ " version: " + str(deploy_scenario_version),
+ " created: " + str(deploy_scenario_creation),
+ " sha-1: " + str(deploy_scenario_sha),
+ " comment: " + str(deploy_scenario_comment) + "\n"]))
+
+ yaml.dump(final_dha_conf, f, default_flow_style=False)
+
+if __name__ == '__main__':
+ main()
diff --git a/deploy/templater.py b/deploy/templater.py
index 6b41e1f3c..bda60c7fe 100755
--- a/deploy/templater.py
+++ b/deploy/templater.py
@@ -12,6 +12,7 @@
import io
import re
import yaml
+import urllib2
from common import(
err,
ArgParser,
@@ -29,10 +30,29 @@ class Templater(object):
self.output_file = output_file
self.base = self.load_yaml(base_file)
- def load_yaml(self, filename):
+ def is_url(self, filespec):
+ regex = re.compile('^([^/:]+)://')
+ return re.search(regex, filespec)
+
+ def load_template(self, filespec):
+ try:
+ if(self.is_url(filespec)):
+ response = urllib2.urlopen(filespec)
+ return response.read()
+ else:
+ with io.open(filespec) as f:
+ return f.readlines()
+ except Exception as error:
+ err('Error opening template file: %s' % error)
+
+ def load_yaml(self, filespec):
try:
- with io.open(filename) as yaml_file:
- return yaml.load(yaml_file)
+ if(self.is_url(filespec)):
+ response = urllib2.urlopen(filespec)
+ return yaml.load(response)
+ else:
+ with io.open(filespec) as f:
+ return yaml.load(f)
except Exception as error:
err('Error opening YAML file: %s' % error)
@@ -147,12 +167,11 @@ class Templater(object):
regex = re.compile(re.escape(TAG_START) + r'([a-z].+)' + re.escape(TAG_END),
flags=re.IGNORECASE)
- with io.open(self.template_file) as f:
- for line in f:
- indent = self.get_indent(line)
- result += re.sub(regex,
- lambda match: self.parse_tag(match.group(1), indent),
- line)
+ for line in self.load_template(self.template_file):
+ indent = self.get_indent(line)
+ result += re.sub(regex,
+ lambda match: self.parse_tag(match.group(1), indent),
+ line)
self.save_yaml(self.output_file, result)
@@ -164,9 +183,9 @@ template variable substitution and write the results to 'output_file'.'''
parser = ArgParser(prog='python %s' % __file__,
description=description)
parser.add_argument('base_file',
- help='Base YAML filename')
+ help='Base YAML file or URL')
parser.add_argument('template_file',
- help='Fragment filename')
+ help='Template file or URL')
parser.add_argument('output_file',
help='Output filename')
diff --git a/docs/installationprocedure/installation.instruction.rst b/docs/installationprocedure/installation.instruction.rst
index 715159910..2d6889bf8 100644
--- a/docs/installationprocedure/installation.instruction.rst
+++ b/docs/installationprocedure/installation.instruction.rst
@@ -186,7 +186,7 @@ VLANs needs to be manually configured.
Manual configuration of the Colorado hardware platform should
be carried out according to the OPNFV Pharos specification:
-<https://wiki.opnfv.org/pharos/pharos_specification>
+<https://wiki.opnfv.org/display/pharos/Pharos+Specification>
==========================================
OPNFV Software installation and deployment
diff --git a/docs/releasenotes/release-notes.rst b/docs/releasenotes/release-notes.rst
index a748e41f9..c3398df19 100644
--- a/docs/releasenotes/release-notes.rst
+++ b/docs/releasenotes/release-notes.rst
@@ -234,27 +234,27 @@ OpenDaylight
Fuel
====
-6) `The Fuel OpenStack project <https://wiki.openstack.org/wiki/Fuel>`_ '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 <https://docs.fuel-infra.org/openstack/fuel/fuel-9.0/>`_ 'https://docs.fuel-infra.org/openstack/fuel/fuel-9.0/'
+7) `Fuel documentation overview <http://docs.openstack.org/developer/fuel-docs>`_: http://docs.openstack.org/developer/fuel-docs
-8) `Fuel planning guide <https://docs.fuel-infra.org/openstack/fuel/fuel-9.0/mos-planning-guide.html>`_ 'https://docs.fuel-infra.org/openstack/fuel/fuel-9.0/mos-planning-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 quick start guide <https://docs.mirantis.com/openstack/fuel/fuel-9.0/quickstart-guide.html>`_ 'https://docs.mirantis.com/openstack/fuel/fuel-9.0/quickstart-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 reference architecture <https://docs.mirantis.com/openstack/fuel/fuel-9.0/reference-architecture.html>`_ 'https://docs.mirantis.com/openstack/fuel/fuel-9.0/reference-architecture.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 <https://wiki.openstack.org/wiki/Fuel/Plugins>`_ 'https://wiki.openstack.org/wiki/Fuel/Plugins'
+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>`_ '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>`_ '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>`_ '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>`_ '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'
.. [1] OpenDaylight Boron RC3.5 is used when Service Function Chaining is enabled in Fuel plugin.