Adds OpenDaylight resources for configuring cluster with docker
authorTim Rozet <trozet@redhat.com>
Mon, 22 May 2017 21:30:18 +0000 (17:30 -0400)
committerTim Rozet <trozet@redhat.com>
Mon, 22 May 2017 21:30:18 +0000 (17:30 -0400)
In puppet-opendaylight configuring a cluster is done using an exec
calling an opendaylight script to configure the clustering file.  For
containerizing ODL, we cannot use exec as a puppet tag, therefore we
need to use a defined type to tag with.  This patch adds that defined
type to configure a cluster and a class to call it.  These will only be
used during containerized deploys and calls the same configuration
script used by puppet-odl.

Change-Id: I020550ede0ef981582392cf6c48dd5cb5823a074
Signed-off-by: Tim Rozet <trozet@redhat.com>
manifests/profile/base/neutron/opendaylight/configure_cluster.pp [new file with mode: 0644]
manifests/profile/base/neutron/opendaylight/create_cluster.pp [new file with mode: 0644]

diff --git a/manifests/profile/base/neutron/opendaylight/configure_cluster.pp b/manifests/profile/base/neutron/opendaylight/configure_cluster.pp
new file mode 100644 (file)
index 0000000..022e8ae
--- /dev/null
@@ -0,0 +1,45 @@
+# Copyright 2017 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+# Configures an OpenDaylight cluster.
+# It creates the akka configuration file for ODL to cluster correctly
+# It will not configure clustering if less than 3 nodes
+#
+# == Function: tripleo::profile::base::neutron::opendaylight::configure_cluster
+#
+# == Parameters
+#
+# [*node_name*]
+#   The short hostname of node
+#
+# [*odl_api_ips*] Array of IPs per ODL node
+#   Defaults to empty array
+#
+define tripleo::profile::base::neutron::opendaylight::configure_cluster(
+  $node_name,
+  $odl_api_ips = [],
+) {
+  validate_array($odl_api_ips)
+  if size($odl_api_ips) > 2 {
+    $node_string = split($node_name, '-')
+    $ha_node_index = $node_string[-1] + 1
+    $ha_node_ip_str = join($odl_api_ips, ' ')
+    exec { 'Configure ODL Clustering':
+      command => "configure_cluster.sh ${ha_node_index} ${ha_node_ip_str}",
+      path    => '/opt/opendaylight/bin/:/usr/sbin:/usr/bin:/sbin:/bin',
+      creates => '/opt/opendaylight/configuration/initial/akka.conf'
+    }
+  }
+}
+
diff --git a/manifests/profile/base/neutron/opendaylight/create_cluster.pp b/manifests/profile/base/neutron/opendaylight/create_cluster.pp
new file mode 100644 (file)
index 0000000..c3e4f7f
--- /dev/null
@@ -0,0 +1,43 @@
+# Copyright 2017 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+# Configures an OpenDaylight cluster.
+# It creates the akka configuration file for ODL to cluster correctly
+# It will not configure clustering if less than 3 nodes
+#
+# == Class: tripleo::profile::base::neutron::opendaylight::create_cluster
+#
+# OpenDaylight class only used for creating clusters with container deployments
+#
+# === Parameters
+#
+# [*odl_api_ips*]
+#   (Optional) List of OpenStack Controller IPs for ODL API
+#   Defaults to hiera('opendaylight_api_node_ips')
+#
+# [*node_name*]
+#   (Optional) The short hostname of node
+#   Defaults to hiera('bootstack_nodeid')
+#
+class tripleo::profile::base::neutron::opendaylight::create_cluster (
+  $odl_api_ips  = hiera('opendaylight_api_node_ips'),
+  $node_name    = hiera('bootstack_nodeid')
+) {
+
+  tripleo::profile::base::neutron::opendaylight::configure_cluster {'ODL cluster':
+    node_name   => $node_name,
+    odl_api_ips => $odl_api_ips,
+  }
+
+}