From f96fa4a2a7eda2be084f6f8cad18beffae1d5ac9 Mon Sep 17 00:00:00 2001
From: Paul Belanger <pabelanger@redhat.com>
Date: Mon, 17 Apr 2017 17:27:06 -0400
Subject: [PATCH] Run cloud-launcher every hour on puppetmaster.o.o

Create a wrapper script and crontab entry on puppetmaster.

Change-Id: Ida2a86d13731c40141163d43236b9856d227e5af
Signed-off-by: Paul Belanger <pabelanger@redhat.com>
---
 .../manifests/puppetmaster.pp                 | 11 ++++++
 run_cloud_launcher.sh                         | 35 +++++++++++++++++++
 2 files changed, 46 insertions(+)
 create mode 100755 run_cloud_launcher.sh

diff --git a/modules/openstack_project/manifests/puppetmaster.pp b/modules/openstack_project/manifests/puppetmaster.pp
index 09e163dabb..07c11c1c86 100644
--- a/modules/openstack_project/manifests/puppetmaster.pp
+++ b/modules/openstack_project/manifests/puppetmaster.pp
@@ -28,6 +28,17 @@ class openstack_project::puppetmaster (
     require => Class['ansible'],
   }
 
+  cron { 'updatecloudlauncher':
+    user        => 'root',
+    minute      => '0',
+    hour        => '*/1'
+    monthday    => '*',
+    month       => '*',
+    weekday     => '*',
+    command     => 'flock -n /var/run/puppet/puppet_run_cloud_launcher.lock bash /opt/system-config/production/run_cloud_launcher.sh >> /var/log/puppet_run_cloud_launcher_cron.log 2>&1',
+    environment => 'PATH=/var/lib/gems/1.8/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin',
+  }
+
   cron { 'updatepuppetmaster':
     user        => 'root',
     minute      => $puppetmaster_update_cron_interval[min],
diff --git a/run_cloud_launcher.sh b/run_cloud_launcher.sh
new file mode 100755
index 0000000000..ccbbeee242
--- /dev/null
+++ b/run_cloud_launcher.sh
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+# Copyright 2014 Hewlett-Packard Development Company, L.P.
+#
+# 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.
+
+# If updating the puppet system-config repo or installing puppet modules
+# fails then abort the puppet run as we will not get the results we
+# expect.
+set -e
+export ANSIBLE_LOG_PATH=/var/log/puppet_run_cloud_launcher.log
+SYSTEM_CONFIG=/opt/system-config/production
+ANSIBLE_PLAYBOOKS=$SYSTEM_CONFIG/playbooks
+
+# It's possible for connectivity to a server or manifest application to break
+# for indeterminate periods of time, so the playbooks should be run without
+# errexit
+set +e
+
+# We need access to all-clouds
+export OS_CLIENT_CONFIG_FILE=/etc/openstack/all-clouds.yaml
+
+timeout -k 2m 120m ansible-playbook -f 1 \
+    ${ANSIBLE_PLAYBOOKS}/run_cloud_launcher.yaml \
+    -e@${ANSIBLE_PLAYBOOKS}/clouds_layouts.yml