summaryrefslogtreecommitdiffstats
path: root/callback_plugins
diff options
context:
space:
mode:
authorTim Bielawa <tbielawa@redhat.com>2016-09-29 07:32:56 -0700
committerTim Bielawa <tbielawa@redhat.com>2016-09-29 07:43:54 -0700
commitba823255fcde17124b6dcc447bb00bc241346312 (patch)
treef37bc298467beadf3e1d4a722702a346f14de75c /callback_plugins
parentbe3a68ae520d518daef2e35553c28cd150d3c344 (diff)
downloadopenshift-ba823255fcde17124b6dcc447bb00bc241346312.tar.gz
openshift-ba823255fcde17124b6dcc447bb00bc241346312.tar.bz2
openshift-ba823255fcde17124b6dcc447bb00bc241346312.tar.xz
openshift-ba823255fcde17124b6dcc447bb00bc241346312.zip
Fix conflicts in spec file
Diffstat (limited to 'callback_plugins')
-rw-r--r--callback_plugins/openshift_quick_installer.py115
1 files changed, 115 insertions, 0 deletions
diff --git a/callback_plugins/openshift_quick_installer.py b/callback_plugins/openshift_quick_installer.py
new file mode 100644
index 000000000..abb22d2fa
--- /dev/null
+++ b/callback_plugins/openshift_quick_installer.py
@@ -0,0 +1,115 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+"""
+This file is a stdout callback plugin for the OpenShift Quick
+Installer. The purpose of this callback plugin is to reduce the amount
+of produced output for customers and enable simpler progress checking.
+
+What's different:
+
+* Playbook progress is expressed as: Play <current_play>/<total_plays> (Play Name)
+ Ex: Play 3/30 (Initialize Megafrobber)
+
+* The Tasks and Handlers in each play (and included roles) are printed
+ as a series of .'s following the play progress line.
+
+"""
+
+from __future__ import (absolute_import, print_function)
+import imp
+import os
+import sys
+
+ANSIBLE_PATH = imp.find_module('ansible')[1]
+DEFAULT_PATH = os.path.join(ANSIBLE_PATH, 'plugins/callback/default.py')
+DEFAULT_MODULE = imp.load_source(
+ 'ansible.plugins.callback.default',
+ DEFAULT_PATH
+)
+
+try:
+ from ansible.plugins.callback import CallbackBase
+ BASECLASS = CallbackBase
+except ImportError: # < ansible 2.1
+ BASECLASS = DEFAULT_MODULE.CallbackModule
+
+
+reload(sys)
+sys.setdefaultencoding('utf-8')
+
+
+class CallbackModule(DEFAULT_MODULE.CallbackModule):
+
+ """
+ Ansible callback plugin
+ """
+ CALLBACK_VERSION = 2.2
+ CALLBACK_TYPE = 'stdout'
+ CALLBACK_NAME = 'openshift_quick_installer'
+ CALLBACK_NEEDS_WHITELIST = False
+ plays_count = 0
+ plays_total_ran = 0
+
+ def v2_playbook_on_start(self, playbook):
+ """This is basically the start of it all"""
+ self.plays_count = len(playbook.get_plays())
+ self.plays_total_ran = 0
+
+ def v2_playbook_on_play_start(self, play):
+ """Each play calls this once before running any tasks
+
+We could print the number of tasks here as well by using
+`play.get_tasks()` but that is not accurate when a play includes a
+role. Only the tasks directly assigned to a play are directly exposed
+in the `play` object.
+
+ """
+ self.plays_total_ran += 1
+ print("")
+ print("Play %s/%s (%s)" % (self.plays_total_ran, self.plays_count, play.get_name()))
+
+ # pylint: disable=unused-argument,no-self-use
+ def v2_playbook_on_task_start(self, task, is_conditional):
+ """This prints out the task header. For example:
+
+TASK [openshift_facts : Ensure PyYaml is installed] ***...
+
+Rather than print out all that for every task, we print a dot
+character to indicate a task has been started.
+ """
+ sys.stdout.write('.')
+
+ def v2_runner_on_ok(self, result):
+ """This prints out task results in a fancy format"""
+ pass
+
+ def v2_runner_item_on_ok(self, result):
+ """Print out task results for you're iterating"""
+ pass
+
+ def v2_runner_item_on_skipped(self, result):
+ """Print out task results when an item is skipped"""
+ pass
+
+ def v2_runner_on_skipped(self, result):
+ """Print out task results when a task (or something else?) is skipped"""
+ pass
+
+ def v2_playbook_on_notify(self, res, handler):
+ """Printer for handlers
+
+Rather than print out a header for every handler, we print a dot
+character to indicate a handler task has been started.
+ """
+ sys.stdout.write('.')