summaryrefslogtreecommitdiff
path: root/bin/taskadmin
diff options
context:
space:
mode:
authorkopertop <kopertop@604d75c7-a419-0410-a38f-bde1a0bd1dbf>2009-10-06 16:14:06 +0000
committerkopertop <kopertop@604d75c7-a419-0410-a38f-bde1a0bd1dbf>2009-10-06 16:14:06 +0000
commitfbe28cf63396aa9cee93583b455695085beeba0d (patch)
treea566d11d97e3f106fa4cd648c7895e947e73f608 /bin/taskadmin
parentf103d46d7aa209b0b8ebbee1c9a9a0ba5aeb0120 (diff)
downloadboto-fbe28cf63396aa9cee93583b455695085beeba0d.tar.gz
Added taskadmin script
Diffstat (limited to 'bin/taskadmin')
-rwxr-xr-xbin/taskadmin116
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])