Index: third_party/gsutil/boto/bin/taskadmin |
diff --git a/third_party/gsutil/boto/bin/taskadmin b/third_party/gsutil/boto/bin/taskadmin |
new file mode 100755 |
index 0000000000000000000000000000000000000000..5d5302adc910c4e94d23123d95e8453427f60e02 |
--- /dev/null |
+++ b/third_party/gsutil/boto/bin/taskadmin |
@@ -0,0 +1,116 @@ |
+#!/usr/bin/env python |
+# Copyright (c) 2009 Chris Moyer http://coredumped.org/ |
+# |
+# Permission is hereby granted, free of charge, to any person obtaining a |
+# copy of this software and associated documentation files (the |
+# "Software"), to deal in the Software without restriction, including |
+# without limitation the rights to use, copy, modify, merge, publish, dis- |
+# tribute, sublicense, and/or sell copies of the Software, and to permit |
+# persons to whom the Software is furnished to do so, subject to the fol- |
+# lowing conditions: |
+# |
+# The above copyright notice and this permission notice shall be included |
+# in all copies or substantial portions of the Software. |
+# |
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS |
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL- |
+# ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT |
+# SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, |
+# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS |
+ |
+# |
+# Task/Job Administration utility |
+# |
+VERSION="0.1" |
+__version__ = VERSION |
+usage = """%prog [options] [command] |
+Commands: |
+ list|ls List all Tasks in SDB |
+ delete <id> Delete Task with id <id> |
+ get <name> Get Task <name> |
+ create|mk <name> <hour> <command> Create a new Task <name> with command <command> running every <hour> |
+""" |
+ |
+def list(): |
+ """List all Tasks in SDB""" |
+ from boto.manage.task import Task |
+ print "%-8s %-40s %s" % ("Hour", "Name", "Command") |
+ print "-"*100 |
+ for t in Task.all(): |
+ print "%-8s %-40s %s" % (t.hour, t.name, t.command) |
+ |
+def get(name): |
+ """Get a task |
+ :param name: The name of the task to fetch |
+ :type name: str |
+ """ |
+ from boto.manage.task import Task |
+ q = Task.find() |
+ q.filter("name like", "%s%%" % name) |
+ for t in q: |
+ print "="*80 |
+ print "| ", t.id |
+ print "|%s" % ("-"*79) |
+ print "| Name: ", t.name |
+ print "| Hour: ", t.hour |
+ print "| Command: ", t.command |
+ if t.last_executed: |
+ print "| Last Run: ", t.last_executed.ctime() |
+ print "| Last Status: ", t.last_status |
+ print "| Last Run Log: ", t.last_output |
+ print "="*80 |
+ |
+def delete(id): |
+ from boto.manage.task import Task |
+ t = Task.get_by_id(id) |
+ print "Deleting task: %s" % t.name |
+ if raw_input("Are you sure? ").lower() in ["y", "yes"]: |
+ t.delete() |
+ print "Deleted" |
+ else: |
+ print "Canceled" |
+ |
+def create(name, hour, command): |
+ """Create a new task |
+ :param name: Name of the task to create |
+ :type name: str |
+ :param hour: What hour to run it at, "*" for every hour |
+ :type hour: str |
+ :param command: The command to execute |
+ :type command: str |
+ """ |
+ from boto.manage.task import Task |
+ t = Task() |
+ t.name = name |
+ t.hour = hour |
+ t.command = command |
+ t.put() |
+ print "Created task: %s" % t.id |
+ |
+if __name__ == "__main__": |
+ try: |
+ import readline |
+ except ImportError: |
+ pass |
+ import boto |
+ import sys |
+ from optparse import OptionParser |
+ from boto.mashups.iobject import IObject |
+ parser = OptionParser(version=__version__, usage=usage) |
+ |
+ (options, args) = parser.parse_args() |
+ |
+ if len(args) < 1: |
+ parser.print_help() |
+ sys.exit(1) |
+ |
+ command = args[0].lower() |
+ if command in ("ls", "list"): |
+ list() |
+ elif command == "get": |
+ get(args[1]) |
+ elif command == "create": |
+ create(args[1], args[2], args[3]) |
+ elif command == "delete": |
+ delete(args[1]) |