コード例 #1
0
    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)
コード例 #2
0
    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)
コード例 #3
0
    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)
コード例 #4
0
ファイル: upstart.py プロジェクト: azov/honcho
    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)
コード例 #5
0
 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('καλημέρα.κόσμε'))
コード例 #6
0
    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)
コード例 #7
0
ファイル: test_export_base.py プロジェクト: migurski/honcho
def test_dashrepl(name_in, name_out):
    assert dashrepl(name_in) == name_out
コード例 #8
0
def test_dashrepl(name_in, name_out):
    assert dashrepl(name_in) == name_out