From d29df40fd66d6a90fde858e8a0bc0d0e98a01794 Mon Sep 17 00:00:00 2001
From: Jonas Bjurel <jonas.bjurel@ericsson.com>
Date: Fri, 30 Jan 2015 22:22:43 +0100
Subject: Version 0.0.1 of /fuel-bild This is a build system that rebases the
 result from fuel.org such that you can add or change packages/puppet
 manifests any way you like, and reliably produce a installable which can be
 reproduced any time. See README for more information.

Signed-off-by: Jonas Bjurel <jonas.bjurel@ericsson.com>
---
 fuel-build/f_example_control_bond/Makefile         | 24 ++++++
 fuel-build/f_example_control_bond/README           | 56 ++++++++++++++
 .../puppet/modules/opnfv/files/control-bond        | 90 ++++++++++++++++++++++
 .../puppet/modules/opnfv/manifests/control-bond.pp | 56 ++++++++++++++
 4 files changed, 226 insertions(+)
 create mode 100644 fuel-build/f_example_control_bond/Makefile
 create mode 100644 fuel-build/f_example_control_bond/README
 create mode 100644 fuel-build/f_example_control_bond/puppet/modules/opnfv/files/control-bond
 create mode 100644 fuel-build/f_example_control_bond/puppet/modules/opnfv/manifests/control-bond.pp

(limited to 'fuel-build/f_example_control_bond')

diff --git a/fuel-build/f_example_control_bond/Makefile b/fuel-build/f_example_control_bond/Makefile
new file mode 100644
index 0000000..295fd0e
--- /dev/null
+++ b/fuel-build/f_example_control_bond/Makefile
@@ -0,0 +1,24 @@
+##############################################################################
+# 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: release
+release:
+	@cp -Rvp puppet/modules/* ../release/puppet/modules
diff --git a/fuel-build/f_example_control_bond/README b/fuel-build/f_example_control_bond/README
new file mode 100644
index 0000000..4449b2f
--- /dev/null
+++ b/fuel-build/f_example_control_bond/README
@@ -0,0 +1,56 @@
+##############################################################################
+# 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/fuel-build/f_example_control_bond/puppet/modules/opnfv/files/control-bond b/fuel-build/f_example_control_bond/puppet/modules/opnfv/files/control-bond
new file mode 100644
index 0000000..bf2930d
--- /dev/null
+++ b/fuel-build/f_example_control_bond/puppet/modules/opnfv/files/control-bond
@@ -0,0 +1,90 @@
+##############################################################################
+# 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/fuel-build/f_example_control_bond/puppet/modules/opnfv/manifests/control-bond.pp b/fuel-build/f_example_control_bond/puppet/modules/opnfv/manifests/control-bond.pp
new file mode 100644
index 0000000..22fe781
--- /dev/null
+++ b/fuel-build/f_example_control_bond/puppet/modules/opnfv/manifests/control-bond.pp
@@ -0,0 +1,56 @@
+##############################################################################
+# 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',
+  }
+}
-- 
cgit 1.2.3-korg