Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: modules/buildbot/manifests/master.pp

Issue 29325436: Issue 1281 - Introduce module buildbot (Closed)
Patch Set: Issue 1281 - Rebase branch buildbot on top of upstream Created Sept. 5, 2015, 11:27 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # == Type: buildbot::master
2 #
3 # Manage Buildbot (http://buildbot.net/) master instances.
4 #
5 # Note that each instance implies the creation of a virtual Concat and
6 # a virtual Concat::Fragment resource for setting up the master.cfg file.
7 # One may either realize these resources (as done so by master::fragment
8 # implicitly, for example) or use a custom aproach for setting up the
Felix Dahlke 2015/10/02 12:39:42 Typo.
mathias 2015/10/02 13:47:41 Acknowledged.
9 # configuration.
10 #
11 # === Parameters:
12 #
13 # [*basedir*]
14 # The base directory of the master, which can be configured elsewhere or,
15 # if it's anchestors are present, relied upon the builtin defaults.
Felix Dahlke 2015/10/02 12:39:43 Typo.
mathias 2015/10/02 13:47:40 Acknowledged.
16 #
17 # [*database*]
18 # Translates directly into the BuildmasterConfig['db_url'] configuration
19 # option within the master.cfg file.
20 #
21 # [*ensure*]
22 # Whether to setup the master (anything but 'absent' or 'purged') or
23 # remove the associated resources. Note that only 'purged' implies the
24 # removal of $basedir.
25 #
26 # [*http_port*]
Felix Dahlke 2015/10/02 12:39:42 Nit: Maybe call this one "web_port" or something,
mathias 2015/10/02 13:47:40 Frankly I believe the http_* prefix to be better.
Felix Dahlke 2015/10/02 15:44:27 The problem with "http" is that it is a protocol -
mathias 2015/10/02 16:25:53 Acknowledged.
27 # Translates directly into the port portion of the BuildmasterConfig's
28 # 'buildbotURL', but may be used in other places as well.
29 #
30 # [*port*]
Felix Dahlke 2015/10/02 12:39:43 Maybe we should call this "slave_port" or somethin
mathias 2015/10/02 13:47:40 Acknowledged.
31 # Translates directly into the BuildmasterConfig['slavePortnum'] option
32 # within the master.cfg file.
33 #
34 # [*project*]
35 # A hash to optionally contain a 'title' (which translats into the config
36 # 'title' option) and an 'url' (translates into the 'titleURL').
37 #
38 # [*slaves*]
39 # Local buildbot::slave records to setup with the master.
40 #
41 # [*slots*]
Felix Dahlke 2015/10/02 12:39:42 Frankly, I didn't understand what this is for, wit
mathias 2015/10/02 13:47:40 Acknowledged.
42 # Name => password pairs of e.g. remote build slaves.
43 #
44 # [*system*]
45 # Any value beside 'false' will cause the master operations to also
46 # affect the buildbot::buildmaster service. Use this option to include
47 # the master instance with the system daemon.
48 #
49 # [*user*]
50 # The user to whom the master instance belongs to. Note that the user
51 # is not created implicitly by this setup, except if the creation is
52 # implied with any of the $buildbot::master_packages.
53 #
54 # === Examples:
55 #
56 # buildbot::master {'primary':
57 # basedir => '/var/primary-buildmaster',
58 # project => {'title' => 'Awesomeness'},
59 # }
60 #
61 # buildbot::master {'secondary':
62 # basedir => '/var/secondary-buildmaster',
63 # ensure => absent,
64 # }
65 #
66 define buildbot::master (
67 $basedir = "$::buildbot::master_directory/$name",
68 $database = "sqlite:///state.sqlite",
69 $ensure = 'present',
70 $http_port = 8010,
71 $port = 9989,
72 $project = {},
73 $slaves = {},
74 $slots = {},
75 $system = false,
76 $user = $::buildbot::master_user,
77 ) {
78
79 if $ensure !~ /^(absent|purged)$/ {
80 ensure_packages($::buildbot::master_packages)
81 realize(File[$::buildbot::master_directory])
82
83 exec {"buildmaster#$title":
84 command => shellquote([
85 $::buildbot::master_runner,
86 'create-master',
87 $basedir,
88 ]),
89 creates => "$basedir/buildbot.tac",
90 require => [
91 File[$::buildbot::master_directory],
92 Package[$::buildbot::master_packages],
93 ],
94 user => $user,
95 }
96
97 Exec["buildmaster#$title"] <- Exec <|creates == $basedir|>
98 Exec["buildmaster#$title"] <- File <|path == $basedir|>
99
100 $config = "$basedir/master.cfg"
101
102 @concat {$config:
103 owner => $user,
104 require => Exec["buildmaster#$title"],
105 }
106
107 @concat::fragment {$config:
108 content => template('buildbot/master.cfg.erb'),
109 target => $config,
110 }
111
112 if !empty($slaves) {
113 create_resources('buildbot::slave', $slaves)
114 realize(Concat[$config])
115 realize(Concat::Fragment[$config])
116 }
117 }
118
119 if $system != false {
120 ensure_packages($::buildbot::master_packages)
121 realize(Concat['buildmaster'])
122 realize(Concat::Fragment['buildmaster'])
123 realize(Service['buildmaster'])
124
125 concat::fragment {"buildmaster#$title":
126 content => template('buildbot/buildmaster_fragment.erb'),
127 ensure => $ensure ? {'present' => $ensure, default => 'absent'},
128 notify => Service['buildmaster'],
129 order => 1,
130 target => 'buildmaster',
131 }
132
133 Service['buildmaster'] <~ Exec <|creates == "$basedir"|>
134 Service['buildmaster'] <~ Exec <|creates == "$basedir/buildbot.tac"|>
135 Service['buildmaster'] <~ Exec <|creates == "$basedir/master.cfg"|>
136
137 Service['buildmaster'] <~ File <|path == "$basedir"|>
138 Service['buildmaster'] <~ File <|path == "$basedir/master.cfg"|>
139 }
140
141 if $ensure == 'purged' {
142 file {$basedir: ensure => 'absent'}
143 }
144 }
OLDNEW

Powered by Google App Engine
This is Rietveld