| 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])
|
|
|