def install_package(filename, num):
    ip = get_ip(num)
    print "Uploading pi-workerfarm package to %s" % ip
    scp(filename, "root@%s:/root/" % ip)
    print "Done."

    print "Installing workerfarm package on %s" % ip
    ssh("root@%s" % ip, "dpkg -i /root/%s" % filename)
    print "Done."
    return
def install_prereqs(num):
    ip = get_ip(num)
    print "Uploading workerfarm.sh to %s" % ip
    scp("-o", "StrictHostKeyChecking=no", "./workerfarm.sh", "root@%s:/root/" % ip)
    print "Done."

    print "Running workerfarm.sh on %s" % ip
    ssh("root@%s" % ip, "bash /root/workerfarm.sh")
    print "Done."
    return
def edit_network_config(num, gateway):
    hostname = get_hostname(num)
    ip = get_ip(num)

    fo = open("hostname", "wb")
    fo.write(hostname)
    fo.close()

    print "Uploading new hostname file for %s" % hostname
    scp("-o", "StrictHostKeyChecking=no", "./hostname", "[email protected]:/etc/hostname")
    print "Done."

    interfaces = """# This file describes the network interfaces available on your system
    # and how to activate them. For more information, see interfaces(5).

    # The loopback network interface
    auto lo
    iface lo inet loopback

    # The primary network interface
    auto eth0
    iface eth0 inet static
        address %s
        netmask 255.255.255.0
        network 172.16.1.0
        broadcast 172.16.1.255
        gateway %s
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 8.8.8.8
        dns-search chi.monitorengine.com
    """ % (ip, gateway)

    fo = open("interfaces", "wb")
    fo.write(interfaces)
    fo.close()

    print "Uploading new interfaces file with %s" % ip
    scp("./interfaces", "[email protected]:/etc/network/interfaces")
    print "Done."

    print "Rebooting remote machine..."
    ssh("[email protected]", "reboot")
    print "Done."

    sleep(25)
    return
def restart_supervisor(num):
    ip = get_ip(num)
    ssh("root@%s" % ip, "supervisorctl restart pi-workerfarm")