diff options
author | kopertop <kopertop@604d75c7-a419-0410-a38f-bde1a0bd1dbf> | 2009-10-06 16:14:06 +0000 |
---|---|---|
committer | kopertop <kopertop@604d75c7-a419-0410-a38f-bde1a0bd1dbf> | 2009-10-06 16:14:06 +0000 |
commit | fbe28cf63396aa9cee93583b455695085beeba0d (patch) | |
tree | a566d11d97e3f106fa4cd648c7895e947e73f608 /bin/taskadmin | |
parent | f103d46d7aa209b0b8ebbee1c9a9a0ba5aeb0120 (diff) | |
download | boto-fbe28cf63396aa9cee93583b455695085beeba0d.tar.gz |
Added taskadmin script
Diffstat (limited to 'bin/taskadmin')
-rwxr-xr-x | bin/taskadmin | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/bin/taskadmin b/bin/taskadmin new file mode 100755 index 00000000..5d5302ad --- /dev/null +++ b/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]) |