Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/fabfile/slave.py
blob: 6e1e791de861842e40ae1f2dcb9964fb969c3b14 (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
82
83
84
85
86
87
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 

slaves = {"buildbot@debian-wheezy-32bit.local": "debian-wheezy-32bit",
          #"buildbot@debian-wheezy-64bit.local": "debian-wheezy-64bit",
          #"buildbot@fedora-17-32bit.local": "fedora-17-32bit",
          #"buildbot@fedora-17-64bit.local": "fedora-17-64bit",
          #"buildbot@fedora-18-32bit.local": "fedora-18-32bit",
          #"buildbot@fedora-18-64bit.local": "fedora-18-64bit",
          #"buildbot@ubuntu-12-10-32bit.local": "ubuntu-12-10-32bit",
          "buildbot@ubuntu-12-10-64bit.local": "ubuntu-12-10-64bit"}

slave_gateway = "dnarvaez@bender.sugarlabs.org"

instances = {"slave": 9989,
             "slave-testing": 9990}

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

activate_virtualenv = "source sandbox/bin/activate"

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

settings = {"gateway": slave_gateway}


@task
@roles("slave")
@with_settings(**settings)
def create():
    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]
        
        for basedir, port in instances.items():
            run("rm -rf %s" % basedir)

            run("buildslave create-slave %s "
                "buildbot.sugarlabs.org:%d "
                "%s %s" % (basedir, port, name, password))
        
            put(StringIO.StringIO(admin),
                os.path.join(basedir, "info", "admin"))
            put(StringIO.StringIO(name),
                os.path.join(basedir, "info", "host"))


@task
@roles("slave")
@with_settings(**settings)
def start(basedir="slave"):
    with prefix(activate_virtualenv):
        run("buildslave start %s" % basedir) 


@task
@roles("slave")
@with_settings(**settings)
def stop(basedir="slave"):
    with prefix(activate_virtualenv):
        run("buildslave stop %s" % basedir) 


@task
@roles("slave")
@with_settings(**settings)
def restart(basedir="slave"):
    with prefix(activate_virtualenv):
        run("buildslave restart %s" % basedir)