Mercurial > hg > autobot
annotate autobot/template.py @ 21:6c3c6488e4a9
can has a slave now
author | Jeff Hammel <jhammel@mozilla.com> |
---|---|
date | Fri, 07 Jan 2011 16:39:13 -0800 |
parents | 30ec24255ce9 |
children | a7e2f5b2a7e9 |
rev | line source |
---|---|
1 | 1 #!/usr/bin/env python |
2 | |
3 """ | |
3 | 4 templates for the A*Team's buildbot |
1 | 5 """ |
6 | |
12
848569b7f91a
use subdirectories for the master and slave
Jeff Hammel <jhammel@mozilla.com>
parents:
11
diff
changeset
|
7 import os |
1 | 8 import sys |
6
4ba6ba323871
stub out invocation of the template; this should eventually move to its own class, as we will want to subclass MakeItSoCLI, /me thinks
Jeff Hammel <jhammel@mozilla.com>
parents:
5
diff
changeset
|
9 from makeitso.cli import MakeItSoCLI |
4
eb289a46f4d3
make buildbot master template look close to what it should
Jeff Hammel <jhammel@mozilla.com>
parents:
3
diff
changeset
|
10 from makeitso.template import MakeItSoTemplate |
eb289a46f4d3
make buildbot master template look close to what it should
Jeff Hammel <jhammel@mozilla.com>
parents:
3
diff
changeset
|
11 from makeitso.template import Variable |
16
9ad3a9e220bc
get factory from command line
Jeff Hammel <jhammel@mozilla.com>
parents:
13
diff
changeset
|
12 from projects import factories |
1 | 13 |
17
baee795ad6df
stub out actually calling buildbot
Jeff Hammel <jhammel@mozilla.com>
parents:
16
diff
changeset
|
14 try: |
baee795ad6df
stub out actually calling buildbot
Jeff Hammel <jhammel@mozilla.com>
parents:
16
diff
changeset
|
15 from subprocess import check_call as call |
baee795ad6df
stub out actually calling buildbot
Jeff Hammel <jhammel@mozilla.com>
parents:
16
diff
changeset
|
16 except ImportError: |
baee795ad6df
stub out actually calling buildbot
Jeff Hammel <jhammel@mozilla.com>
parents:
16
diff
changeset
|
17 from subprocess import call |
baee795ad6df
stub out actually calling buildbot
Jeff Hammel <jhammel@mozilla.com>
parents:
16
diff
changeset
|
18 |
1 | 19 class AutobotMasterTemplate(MakeItSoTemplate): |
20 name = 'autobot-master' | |
4
eb289a46f4d3
make buildbot master template look close to what it should
Jeff Hammel <jhammel@mozilla.com>
parents:
3
diff
changeset
|
21 description = 'template for the autotools buildbot master' |
12
848569b7f91a
use subdirectories for the master and slave
Jeff Hammel <jhammel@mozilla.com>
parents:
11
diff
changeset
|
22 templates = [os.path.join('template', 'master')] |
4
eb289a46f4d3
make buildbot master template look close to what it should
Jeff Hammel <jhammel@mozilla.com>
parents:
3
diff
changeset
|
23 vars = [Variable('slave', 'buildslave name', 'slave'), |
5
b7c521f53bda
document what the passwd variable is for
Jeff Hammel <jhammel@mozilla.com>
parents:
4
diff
changeset
|
24 Variable('passwd', 'buildslave password', default='passwd'), |
20
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
25 Variable('slaveport', 'port to talk to slaves on', default=9010, cast=int), |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
26 Variable('htmlport', 'port for waterfall display', default=8010, cast=int)] |
4
eb289a46f4d3
make buildbot master template look close to what it should
Jeff Hammel <jhammel@mozilla.com>
parents:
3
diff
changeset
|
27 |
9
c06441767a2a
now interpolates correctly; just doesnt do much
Jeff Hammel <jhammel@mozilla.com>
parents:
8
diff
changeset
|
28 def pre(self, variables): |
16
9ad3a9e220bc
get factory from command line
Jeff Hammel <jhammel@mozilla.com>
parents:
13
diff
changeset
|
29 factory = variables.get('factory') |
13 | 30 if factory: |
31 assert factory in factories, 'Factory must be one of: ' % ', '.join(factories.keys()) | |
32 elif self.interactive: | |
16
9ad3a9e220bc
get factory from command line
Jeff Hammel <jhammel@mozilla.com>
parents:
13
diff
changeset
|
33 print 'Factories:\n' |
13 | 34 for key in sorted(factories.keys()): |
35 print '%s:' % key | |
36 print getattr(factories[key], '__doc__', '').strip() | |
37 print | |
16
9ad3a9e220bc
get factory from command line
Jeff Hammel <jhammel@mozilla.com>
parents:
13
diff
changeset
|
38 sys.stdout.write('Enter factory: ') |
13 | 39 factory = raw_input() |
40 assert factory in factories, 'Factory must be one of: ' % ', '.join(factories.keys()) | |
16
9ad3a9e220bc
get factory from command line
Jeff Hammel <jhammel@mozilla.com>
parents:
13
diff
changeset
|
41 variables['factory'] = factory |
13 | 42 else: |
43 raise AssertionError("No factory provided") | |
1 | 44 |
18
016ffd7bfd99
can now actually make a (admittedly non-working) buildmaster
Jeff Hammel <jhammel@mozilla.com>
parents:
17
diff
changeset
|
45 def post(self, variables): |
17
baee795ad6df
stub out actually calling buildbot
Jeff Hammel <jhammel@mozilla.com>
parents:
16
diff
changeset
|
46 """ |
baee795ad6df
stub out actually calling buildbot
Jeff Hammel <jhammel@mozilla.com>
parents:
16
diff
changeset
|
47 called after the template is applied |
baee795ad6df
stub out actually calling buildbot
Jeff Hammel <jhammel@mozilla.com>
parents:
16
diff
changeset
|
48 """ |
18
016ffd7bfd99
can now actually make a (admittedly non-working) buildmaster
Jeff Hammel <jhammel@mozilla.com>
parents:
17
diff
changeset
|
49 command = ['buildbot', 'create-master', self.output] |
17
baee795ad6df
stub out actually calling buildbot
Jeff Hammel <jhammel@mozilla.com>
parents:
16
diff
changeset
|
50 print ' '.join(command) |
baee795ad6df
stub out actually calling buildbot
Jeff Hammel <jhammel@mozilla.com>
parents:
16
diff
changeset
|
51 call(command) |
baee795ad6df
stub out actually calling buildbot
Jeff Hammel <jhammel@mozilla.com>
parents:
16
diff
changeset
|
52 |
1 | 53 class AutobotSlaveTemplate(MakeItSoTemplate): |
54 name = 'autobot-slave' | |
4
eb289a46f4d3
make buildbot master template look close to what it should
Jeff Hammel <jhammel@mozilla.com>
parents:
3
diff
changeset
|
55 description = 'template for the autotools buildbot slave' |
12
848569b7f91a
use subdirectories for the master and slave
Jeff Hammel <jhammel@mozilla.com>
parents:
11
diff
changeset
|
56 templates = [os.path.join('template', 'slave')] |
20
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
57 vars = [Variable('master', 'host of the master', default='localhost'), |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
58 Variable('slave', 'buildslave name', 'slave'), |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
59 Variable('passwd', 'buildslave password', default='passwd'), |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
60 Variable('slaveport', 'port to talk to slaves on', default=9010)] |
1 | 61 |
20
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
62 def post(self, variables): |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
63 command = ['buildslave', 'create-slave', self.output, |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
64 'localhost:%d' % variables['slaveport'], |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
65 variables['slave'], |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
66 variables['passwd'] ] |
21 | 67 print ' '.join(command) |
68 call(command) | |
20
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
69 |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
70 # CLI front end functions |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
71 # (console_script entry points) |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
72 |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
73 def create_master(args=sys.argv[1:]): |
6
4ba6ba323871
stub out invocation of the template; this should eventually move to its own class, as we will want to subclass MakeItSoCLI, /me thinks
Jeff Hammel <jhammel@mozilla.com>
parents:
5
diff
changeset
|
74 cli = MakeItSoCLI(AutobotMasterTemplate) |
4ba6ba323871
stub out invocation of the template; this should eventually move to its own class, as we will want to subclass MakeItSoCLI, /me thinks
Jeff Hammel <jhammel@mozilla.com>
parents:
5
diff
changeset
|
75 template = cli.parse() |
8 | 76 template.substitute() |
1 | 77 |
20
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
78 def create_slave(args=sys.argv[1:]): |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
79 cli = MakeItSoCLI(AutobotSlaveTemplate) |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
80 template = cli.parse() |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
81 template.substitute() |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
82 |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
83 def create_autobot(args=sys.argv[1:]): |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
84 raise NotImpmenetedError |
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
85 |
1 | 86 if __name__ == '__main__': |
20
30ec24255ce9
stub out having a slave template too
Jeff Hammel <jhammel@mozilla.com>
parents:
18
diff
changeset
|
87 create_master() |