def render(self, processes, context): master_tpl = self.get_template('upstart/master.conf') process_master_tpl = self.get_template('upstart/process_master.conf') process_tpl = self.get_template('upstart/process.conf') groups = groupby(processes, lambda p: p.name.split('.')[0]) master = "{0}.conf".format(context['app']) yield master, master_tpl.render(context) for name, procs in groups: group_name = "{0}-{1}".format(context['app'], name) ctx = context.copy() ctx.update({'group_name': group_name}) process_master = "{0}.conf".format(group_name) yield process_master, process_master_tpl.render(ctx) for p in procs: ctx = context.copy() ctx.update({'group_name': group_name, 'process': p}) process = "{0}-{1}.conf".format(context['app'], dashrepl(p.name)) yield process, process_tpl.render(ctx)
def render(self, processes, context): master_tpl = self.get_template('master.target') process_master_tpl = self.get_template('process_master.target') process_tpl = self.get_template('process.service') app_name = context['app'] process_groups = groupby(processes, lambda proc: proc.name.split(".")[0]) process_groups = [ ("-".join([app_name, group_name]), [("-".join([app_name, dashrepl(proc.name)]), proc) for proc in procs]) for group_name, procs in process_groups ] master_wants = [".".join([group[0], "target"]) for group in process_groups] context['master_wants'] = " ".join(master_wants) context['process_groups'] = process_groups yield "{}.target".format(app_name), master_tpl.render(context) for process_master_name, proc_groups in process_groups: process_master_wants = [".".join([p[0], "service"]) for p in proc_groups] context['process_master_wants'] = " ".join(process_master_wants) yield "{}.target".format(process_master_name), process_master_tpl.render(context) for process_name, process in proc_groups: context['process'] = process yield "{}.service".format(process_name), process_tpl.render(context)
def render(self, processes, context): master_tpl = self.get_template('master.target') process_master_tpl = self.get_template('process_master.target') process_tpl = self.get_template('process.service') app_name = context['app'] process_groups = groupby(processes, lambda proc: proc.name.split(".")[0]) process_groups = [("-".join([app_name, group_name]), [ ("-".join([app_name, dashrepl(proc.name)]), proc) for proc in procs ]) for group_name, procs in process_groups] master_wants = [ ".".join([group[0], "target"]) for group in process_groups ] context['master_wants'] = " ".join(master_wants) context['process_groups'] = process_groups yield "{}.target".format(app_name), master_tpl.render(context) for process_master_name, proc_groups in process_groups: process_master_wants = [ ".".join([p[0], "service"]) for p in proc_groups ] context['process_master_wants'] = " ".join(process_master_wants) yield "{}.target".format( process_master_name), process_master_tpl.render(context) for process_name, process in proc_groups: context['process'] = process yield "{}.service".format(process_name), process_tpl.render( context)
def render(self, processes, context): master_tpl = self.get_template('master.conf') process_master_tpl = self.get_template('process_master.conf') process_tpl = self.get_template('process.conf') groups = groupby(processes, lambda p: p.name.split('.')[0]) master = "{0}.conf".format(context['app']) yield master, master_tpl.render(context) for name, procs in groups: group_name = "{0}-{1}".format(context['app'], name) ctx = context.copy() ctx.update({'group_name': group_name}) process_master = "{0}.conf".format(group_name) yield process_master, process_master_tpl.render(ctx) for p in procs: ctx = context.copy() ctx.update({'group_name': group_name, 'process': p}) process = "{0}-{1}.conf".format(context['app'], dashrepl(p.name)) yield process, process_tpl.render(ctx)
def test_dashrepl(self): self.assertEqual('foo', dashrepl('foo')) self.assertEqual('foo-1', dashrepl('foo.1')) self.assertEqual('foo-bar-baz', dashrepl('foo.bar.baz')) self.assertEqual('foo_bar_baz', dashrepl('foo_bar_baz')) self.assertEqual('foo-bar-baz', dashrepl('foo!bar:baz')) self.assertEqual('καλημέρα-κόσμε', dashrepl('καλημέρα.κόσμε'))
def render(self, processes, context): run_tpl = self.get_template('run') log_tpl = self.get_template('log/run') for p in processes: ctx = context.copy() ctx.update({'process': p}) name = '{0}-{1}'.format(ctx['app'], dashrepl(p.name)) # Create an envdir for k, v in p.env.items(): yield File(os.path.join(name, 'env', k), v) # Startup file yield File(os.path.join(name, 'run'), run_tpl.render(ctx), executable=True) # Logger yield File(os.path.join(name, 'log', 'run'), log_tpl.render(ctx), executable=True)
def test_dashrepl(name_in, name_out): assert dashrepl(name_in) == name_out