Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/fabfile/slave.py
blob: e441eb9eeacc6a2294080c6216b21180e594ab36 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import string
import StringIO
import os
import random

from fabric.api import task
from fabric.api import run
from fabric.api import env
from fabric.api import prefix
from fabric.api import put
from fabric.api import roles
from fabric.api import with_settings

from common import slaves
from common import slave_gateway
from common import instances
from common import activate_virtualenv
from common import get_instance_name


admin = "Daniel Narvaez <dwnarvaez@gmail.com>"

env.roledefs["slave"] = slaves.keys()

settings = {"gateway": slave_gateway}


@task
@roles("slave")
@with_settings(**settings)
def create(instance_name=get_instance_name()):
    instance_info = instances[instance_name]

    run("rm -rf sandbox")

    run("virtualenv --system-site-packages sandbox")

    chars = string.ascii_lowercase + string.ascii_uppercase + string.digits
    password = ''.join(random.choice(chars) for x in range(16))

    with prefix(activate_virtualenv):
        run("pip install buildbot-slave")

        name = slaves[env.host_string]

        run("rm -rf %s" % instance_info["slave_dir"])

        run("buildslave create-slave %s "
            "buildbot.sugarlabs.org:%d "
            "%s %s" % (instance_info["slave_dir"],
                       instance_info["config"]["slaves_port"],
                       name, password))

        put(StringIO.StringIO(admin),
            os.path.join(instance_info["slave_dir"], "info", "admin"))
        put(StringIO.StringIO(name),
            os.path.join(instance_info["slave_dir"], "info", "host"))


@task
@roles("slave")
@with_settings(**settings)
def start(instance_name=get_instance_name()):
    with prefix(activate_virtualenv):
        run("buildslave start %s" % instances[instance_name]["slave_dir"])


@task
@roles("slave")
@with_settings(**settings)
def stop(instance_name=get_instance_name()):
    with prefix(activate_virtualenv):
        run("buildslave stop %s" % instances[instance_name]["slave_dir"])


@task
@roles("slave")
@with_settings(**settings)
def restart(instance_name=get_instance_name()):
    with prefix(activate_virtualenv):
        run("buildslave restart %s" % instances[instance_name]["slave_dir"])