summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/func-transmit65
-rw-r--r--scripts/func-transmit-demo6
2 files changed, 71 insertions, 0 deletions
diff --git a/scripts/func-transmit b/scripts/func-transmit
new file mode 100644
index 0000000..163a99c
--- /dev/null
+++ b/scripts/func-transmit
@@ -0,0 +1,65 @@
+#!/usr/bin/python
+
+##
+## func yaml wrapper tool.
+## allows usage of func over stdin/stdin using yaml as a marshalling format
+## for access to the Overlord() API from non-Python code.
+## this should typically be accessed via a pipe, though also works as
+## func-transmit < yamlfile
+##
+## Copyright 2008, Various
+## Marco Mornati <mmornati@byte-code.com>
+## Michael DeHaan <mdehaan@redhat.com>
+##
+## This software may be freely redistributed under the terms of the GNU
+## general public license.
+##
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+##
+
+
+## Example input file format:
+"""
+clients: "*"
+aysnc: False
+nforks: 1
+module: command
+method: run
+parameters: "/bin/echo Hello World"
+"""
+
+import sys
+import distutils.sysconfig
+
+import cobbler.yaml as yaml # FIXME: need to subpackage this as part of Func
+import func.overlord.func_command as func_command
+import func.overlord.client as fc
+
+# load input from stdin
+input = sys.stdin.read()
+params = yaml.load(input).next()
+
+# scan arguments
+clients = params.get('clients', "*")
+async = params.get('async', False)
+nforks = params.get('nforks', 1)
+module = params.get('module','unknown')
+method = params.get('method','unknown')
+parameters = params.get('parameters', [])
+
+# make the call
+client = fc.Overlord(clients, async=async, nforks=nforks)
+module_handle = getattr(client, module)
+method_handle = getattr(module_handle, method)
+results = method_handle(parameters)
+output = yaml.dump(results)
+
+# write to stdout
+print output
+
+
+
+
+
diff --git a/scripts/func-transmit-demo b/scripts/func-transmit-demo
new file mode 100644
index 0000000..b38c3a4
--- /dev/null
+++ b/scripts/func-transmit-demo
@@ -0,0 +1,6 @@
+clients: "*"
+aysnc: False
+nforks: 1
+module: command
+method: run
+parameters: "/bin/echo Hello World"