예제 #1
0
파일: genconfig.py 프로젝트: wimglenn/devpi
def gen_supervisor(tw, config, argv, writer):
    import getpass
    devpibin = get_devpibin()
    assert devpibin.exists()
    content = render(
            tw, "supervisor-devpi.conf",
            server_args=subprocess.list2cmdline(argv),
            user=getpass.getuser(),
            devpibin=devpibin,
    )
    writer("supervisor-devpi.conf", content)
    content = render(
            tw, "supervisord.conf",
    )
    writer("supervisord.conf", content)
예제 #2
0
def gen_windows_service(tw, config, argv, writer):
    devpibin = py.path.local(sys.argv[0])
    assert devpibin.exists()
    content = render(
        tw, "windows-service.txt",
        server_args=subprocess.list2cmdline(argv),
        devpibin=devpibin)
    writer("windows-service.txt", content)
예제 #3
0
def gen_systemd(tw, config, argv, writer):
    import getpass
    devpibin = py.path.local(sys.argv[0])
    assert devpibin.exists()
    content = render(
        tw, "devpi.service",
        server_args=subprocess.list2cmdline(argv),
        user=getpass.getuser(),
        devpibin=devpibin,
    )
    writer("devpi.service", content)
예제 #4
0
def gen_launchd(tw, config, argv, writer):
    devpibin = py.path.local(sys.argv[0])
    plist_content = write_plist_to_bytes(OrderedDict([
        ("Label", "net.devpi"),
        ("ProgramArguments", [str(devpibin)] + argv),
        ("RunAtLoad", True),
    ]))
    writer("net.devpi.plist", plist_content)
    content = render(
        tw, "launchd-macos.txt")
    writer("launchd-macos.txt", content)
예제 #5
0
파일: genconfig.py 프로젝트: uceo/uceo-2015
def gen_supervisor(tw, config, writer):
    import getpass
    devpibin = py.path.local(sys.argv[0])
    assert devpibin.exists()
    content = render(
            tw, "supervisord.conf",
            server_args=subprocess.list2cmdline(config.args._raw),
            user=getpass.getuser(),
            devpibin=devpibin,
    )
    writer("supervisor-devpi.conf", content)
예제 #6
0
파일: genconfig.py 프로젝트: t-8ch/devpi
def gen_supervisor(tw, config, writer):
    import getpass
    devpibin = py.path.local(sys.argv[0])
    assert devpibin.exists()
    content = render(
        tw,
        "supervisord.conf",
        server_args=subprocess.list2cmdline(config.args._raw),
        user=getpass.getuser(),
        devpibin=devpibin,
    )
    writer("supervisor-devpi.conf", content)
예제 #7
0
def create_devpictl(tw, tmpdir):
    devpiserver = tmpdir.join("bin", "devpi-server")
    if not devpiserver.check():
        tw.line("created fake devpictl", red=True)
        return tmpdir.join("bin", "devpi-ctl")
    firstline = devpiserver.readlines(cr=0)[0]

    devpictlpy = py.path.local(__file__).dirpath("ctl.py").read()
    devpictl = render(tw, devpiserver.dirpath(), "devpi-ctl",
                      firstline=firstline,
                      devpictlpy=devpictlpy)
    s = py.std.stat
    setmode = s.S_IXUSR  # | s.S_IXGRP | s.S_IXOTH
    devpictl.chmod(devpictl.stat().mode | setmode)
    return devpictl
예제 #8
0
def gen_systemd(tw, config, argv, writer):
    import getpass
    devpibin = py.path.local(sys.argv[0])
    assert devpibin.exists()
    serverdir = config.args.serverdir
    pid_file = os.path.join(os.path.expanduser(serverdir),
                            '.xproc/devpi-server/xprocess.PID')
    content = render(
        tw,
        "devpi.service",
        server_args=subprocess.list2cmdline(argv),
        pid_file=pid_file,
        user=getpass.getuser(),
        devpibin=devpibin,
    )
    writer("devpi.service", content)
예제 #9
0
def gen_nginx(tw, config, argv, writer):
    outside_url = config.args.outside_url
    if outside_url is None: # default
        outside_url = "http://localhost:80"

    parts = URL(outside_url).netloc.split(":")
    if len(parts) < 2:
        parts.append(80)
    outside_host, outside_port = parts

    nginxconf = render(tw, "nginx-devpi.conf", format=1,
                       outside_url=outside_url,
                       outside_host = outside_host,
                       outside_port = outside_port,
                       port=config.args.port,
                       serverdir=config.serverdir)
    writer("nginx-devpi.conf", nginxconf)
예제 #10
0
파일: genconfig.py 프로젝트: uceo/uceo-2015
def gen_systemd(tw, config, writer):
    import getpass
    devpibin = py.path.local(sys.argv[0])
    assert devpibin.exists()
    serverdir = config.args.serverdir
    if serverdir is None:
        serverdir = get_default_serverdir()
    pid_file = os.path.join(os.path.expanduser(serverdir),
                            '.xproc/devpi-server/xprocess.PID')
    content = render(
        tw, "devpi.service",
        server_args=subprocess.list2cmdline(config.args._raw),
        pid_file=pid_file,
        user=getpass.getuser(),
        devpibin=devpibin,
    )
    writer("devpi.service", content)
예제 #11
0
파일: genconfig.py 프로젝트: uceo/uceo-2015
def gen_nginx(tw, config, writer):
    outside_url = config.args.outside_url
    if outside_url is None: # default
        outside_url = "http://localhost:80"

    parts = URL(outside_url).netloc.split(":")
    if len(parts) < 2:
        parts.append(80)
    outside_host, outside_port = parts

    nginxconf = render(tw, "nginx-devpi.conf", format=1,
                       outside_url=outside_url,
                       outside_host = outside_host,
                       outside_port = outside_port,
                       port=config.args.port,
                       serverdir=config.serverdir)
    writer("nginx-devpi.conf", nginxconf)
예제 #12
0
def gen_cron(tw, config, argv, writer):
    import getpass
    content = render(
        tw, "crontab",
        user=getpass.getuser())
    writer("crontab", content)
예제 #13
0
def gendeploycfg(config, venvdir, tw=None):
    """ generate etc/ structure with supervisord.conf for running
    devpi-server under supervisor control. """
    if tw is None:
        tw = py.io.TerminalWriter()
        tw.cwd = py.path.local()

    #tw.line("creating etc/ directory for supervisor configuration", bold=True)
    etc = venvdir.ensure("etc", dir=1)
    orig_args = list(config.args._raw)

    # filter out --gendeploy option
    for i, val in enumerate(orig_args):
        if val.startswith("--gendeploy="):
            del orig_args[i]
            break
        elif val == "--gendeploy":
            del orig_args[i:i+2]
            break

    if not config.args.serverdir:  # default
        serverdir = venvdir.ensure("data", dir=1)
    else:
        serverdir = config.serverdir
    orig_args.extend(["--serverdir", str(serverdir)])

    logdir = venvdir.ensure("log", dir=1)

    render(tw, etc, "supervisord.conf", venvdir=venvdir,
           server_args=subprocess.list2cmdline(orig_args),
           logdir=logdir)
    outside_url = config.args.outside_url
    if outside_url is None: # default
        outside_host = "localhost"
        outside_port = 80
    else:
        parsed = urlparse(outside_url)
        parts = list(parsed.netloc.split(":"))
        if len(parts) < 2:
            parts.append(80)
        outside_host, outside_port = parts

    nginxconf = render(tw, etc, "nginx-devpi.conf", format=1,
                       outside_host=outside_host,
                       outside_port=outside_port,
                       port=config.args.port,
                       serverdir=serverdir)
    devpictl = create_devpictl(tw, venvdir)
    cron = create_crontab(tw, etc, devpictl)
    tw.line("created and configured %s" % venvdir, bold=True)
    tw.line(py.std.textwrap.dedent("""\
    To control supervisor's deployment of devpi-server set:

        alias devpi-ctl='%(devpictl)s'

    and then start the server process:

        devpi-ctl start all
    %(cron)s
    We prepared an nginx configuration at:

        %(nginxconf)s

    which you might modify and copy to your /etc/nginx/sites-enabled
    directory.
    """) % locals())
    tw.line("may quick reliable pypi installations be with you :)",
            green=True)