Mercurial > hg > SupervisorAdmin
annotate supervisoradmin/add.py @ 3:350e4298e116
add stopwaitsec
author | Jeff Hammel <k0scist@gmail.com> |
---|---|
date | Mon, 09 Feb 2015 13:11:09 -0800 |
parents | ca51502dc8d3 |
children | 8a6ee9df8ae5 |
rev | line source |
---|---|
0 | 1 #!/usr/bin/env python |
2 # -*- coding: utf-8 -*- | |
3 | |
4 """ | |
5 add supervisor jobs | |
6 """ | |
7 | |
8 # imports | |
9 import argparse | |
10 import os | |
1
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
11 import shlex |
0 | 12 import subprocess |
13 import sys | |
14 import time | |
15 | |
16 # module globals | |
1
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
17 __all__ = ['main', 'SupervisorAdminParser'] |
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
18 SUPERVISOR_CONF_DIR = '/etc/supervisor/conf.d' |
0 | 19 |
1
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
20 template = """[program:{name}] |
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
21 command={command} |
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
22 autorestart=true |
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
23 redirect_stderr=true |
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
24 startretries=3 |
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
25 stopasgroup=true |
3 | 26 stopwaitsecs=180 |
1
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
27 user={user} |
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
28 """ |
0 | 29 |
1
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
30 class SupervisorAdminParser(argparse.ArgumentParser): |
0 | 31 """CLI option parser""" |
32 def __init__(self, **kwargs): | |
33 kwargs.setdefault('formatter_class', argparse.RawTextHelpFormatter) | |
34 kwargs.setdefault('description', __doc__) | |
35 argparse.ArgumentParser.__init__(self, **kwargs) | |
1
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
36 self.add_argument('command', |
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
37 help="command to add") |
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
38 self.add_argument('-n', '--name', dest='name', |
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
39 help="name of program; by default taken from command") |
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
40 self.add_argument('-u', '--user', dest='user', default='ubuntu', |
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
41 help="run program as this user [DEFAULT: %(default)s]") |
0 | 42 self.options = None |
43 | |
44 def parse_args(self, *args, **kw): | |
45 options = argparse.ArgumentParser.parse_args(self, *args, **kw) | |
46 self.validate(options) | |
47 self.options = options | |
48 return options | |
49 | |
50 def validate(self, options): | |
51 """validate options""" | |
52 | |
53 def main(args=sys.argv[1:]): | |
54 """CLI""" | |
55 | |
56 # parse command line options | |
1
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
57 parser = SupervisorAdminParser() |
0 | 58 options = parser.parse_args(args) |
59 | |
1
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
60 # get command |
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
61 command = shlex.split(options.command) |
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
62 if not command: |
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
63 parser.error("Please supply a command") |
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
64 |
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
65 # name |
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
66 name = options.name or os.path.basename(command[0]) |
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
67 |
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
68 print (template.format(name=name, |
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
69 user=options.user, |
ca51502dc8d3
basic template interpolation; we could do so much more!
Jeff Hammel <k0scist@gmail.com>
parents:
0
diff
changeset
|
70 command=options.command)) |
0 | 71 |
72 if __name__ == '__main__': | |
73 main() | |
74 | |
75 |