예제 #1
0
def assignMasterSlave(robot1, robot2):

    if robot1.type == robot2.type:
        printc("On ne peut pas permuter 2 " + robot2.type, 'Fail')

    if robot1.type == "Slave":
        slave = Slave(robot1.s, robot1.hostname)
        master = Master(robot2.s, robot2.hostname)
    else:
        slave = Slave(robot2.s, robot2.hostname)
        master = Master(robot1.s, robot1.hostname)
    return master, slave
예제 #2
0
 def GetStations(self):
     if (not self.isLoggedIn):
         raise Exception("You are not logged in")
     try:
         slaves = []
         r = requests.get(self.address + "/GetStations",
                          cookies=self.jar,
                          timeout=1)
         stations = json.loads(r.text)
         stations = stations["stations"]
         for station in stations:
             slaves.append(
                 Slave(int(station["StationID"]), station["Name"],
                       int(station["refTime"]), station["enableSettings"]))
     except RequestException as e:
         raise Exception(str(e))
     except Exception as e:
         raise Exception("Error occurred during slaves loading")
     else:
         return slaves
예제 #3
0
    def Machine(self, mtype, ip_port, clock_time, logs_file, **kwargs):
        i = 0
        if mtype is 'm':
            master = Master(ip_port, clock_time, logs_file, kwargs['d'],
                            kwargs['slaves_file'])
            while True:
                i += 1
                print("Execution ", i)
                master.get_slaves_time()
                master.calculate_time()
                time.sleep(5)

        elif mtype is 's':
            slave = Slave(ip_port, clock_time, logs_file)
            from rpyc.utils.server import ThreadedServer
            print("Slave machine")
            t = ThreadedServer(slave,
                               port=int(ip_port[ip_port.index(':') + 1:]))
            t.start()
        else:
            print("Option not available")
예제 #4
0
    def run(self):
        nb_stack = 0
        nb_slave = 0
        value = 1
        
        while True:

            print("Broadcasting cpu request")
            self.__udp_comm.broadcast(self.__commands.get_index("cpu")+";", self.__master.get_cluster_ip_addresses())
            
            data, addr = self.__udp_comm.receive(1024)    
            print("received message: {} from {}".format(data, addr))
                            
            print(data[:-1])
            if data[:-1] == b"configure;":#To-Do: check why data is bstr
                if(nb_slave <= 5):
                    stack = self.__master.get_stack(nb_stack)
                    #To-do : check for ip_address conflict, implement some kind of simple DHCP. May look for DHCP Py libs
                    new_slave = Slave(nb_stack + RASP_CLASS_ADDRESSES[int(data[10:])-1], nb_stack, "AA:AA:AA:AA:AA:AA", addr[0], int(data.decode().split(";")[1]))
                    self.__master.get_stack(nb_stack).add_pi_device(new_slave)
                    value = value + 1
                    self.__udp_comm.send(self.__commands.get_index("configure") + ";" + addr[0] + ";", new_slave.get_ip_address())
                    print("Configured new slave of ip_addr {}".format(addr[0]))
                    nb_slave = nb_slave + 1
                else:
                    nb_stack = nb_stack + 1
                    new_stack = Stack(nb_stack, nb_stack)
                    self.__master.add_stack(new_stack)
                    nb_slave = 0


            elif data[:4] == b"cpu;":
                cpu_value = data.decode().split(";")[1]
                self.__master.get_slave_by_ip(addr[0]).set_cpu_usage(cpu_value)
                value = value + 1
                print("Received cpu_usage ({}) from slave {}, updating value".format(addr[0], cpu_value))
예제 #5
0
 def __init__(self):
     self.master = Master()
     self.slave = Slave()
예제 #6
0
 def get_server(self):
     if (self.master[0] == self.ip and self.master[1] == self.port):
         return Master(self.zookeeper, self.ip, self.socket)
     else:
         self.socket.close()
         return Slave(self.zookeeper, self.master, self.ip)
예제 #7
0
if __name__ == '__main__':
    # initial logger
    root.setLevel(logging.DEBUG)
    fh = logging.FileHandler('slave.log')
    fh.setLevel(logging.DEBUG)
    formatter = logging.Formatter(
        '%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    fh.setFormatter(formatter)
    root.addHandler(fh)

    if True:
        std = logging.StreamHandler(sys.stdout)
        root.addHandler(std)
    root.debug('logger stand by...')

    slave = Slave()
    slave.start()

    msgCenter = slave.getMsgCenter()
    ec = slave.getEncoder()
    lm = slave.getLocalMachine()
    while True:
        cmd = input(
            "start to start, 1 - 5 to change request, stop to stop, t to terminate\n"
        )
        msg = None
        if cmd == "start":
            msg = ec.encodeMsg_out("sys", "start transmit", lm.getName())
        elif cmd == "stop":
            msg = ec.encodeMsg_out("sys", "stop transmit", lm.getName())
        elif cmd == "t":
from threading import Thread
from Slave import Slave
from Master import Master
from time import sleep

if __name__ == '__main__':
    master = Master()
    print("Master tiempo {}".format(master.get_human_time()))
    slave1 = Slave(10000)
    slave2 = Slave(10001)
    slave3 = Slave(10002)
    slave4 = Slave(10003)
    master.registrar_slave(10000)
    master.registrar_slave(10001)
    master.registrar_slave(10002)
    master.registrar_slave(10003)
    print("slave 1 tiempo {}".format(slave1.get_human_time()))
    t1 = Thread(target=slave1.escuchar)
    t1.start()
    print("slave 2 tiempo {}".format(slave2.get_human_time()))
    t2 = Thread(target=slave2.escuchar)
    t2.start()
    print("slave 3 tiempo {}".format(slave3.get_human_time()))
    t3 = Thread(target=slave3.escuchar)
    t3.start()
    print("slave 4 tiempo {}".format(slave4.get_human_time()))
    t4 = Thread(target=slave4.escuchar)
    t4.start()
    master.work()
    print("Diferencia media {}[s]".format(master.diferencia_media))
    print("Master ajustado tiempo {}".format(master.get_human_time()))
예제 #9
0
    'log_file_path'] if 'log_file_path' in config else tempfile.gettempdir(
    ) + os.path.sep + 'puha-manager.log'
logging.basicConfig(filename=log_path,
                    format='%(asctime)s %(message)s',
                    level=logging.DEBUG)

db_path = config[
    'db_file_path'] if 'db_file_path' in config else tempfile.gettempdir(
    ) + os.path.sep + 'puha-manager-data.db'
Database(db_path)

slaves = []
slave_names = []
for slave_params in config['slaves']:
    slaves.append(
        Slave(slave_params['ip'], slave_params['port'], slave_params['name'],
              config))
    slave_names.append(slave_params['name'])

selected_slave_index = 0
slave = slaves[selected_slave_index]

header_data = {
    'site_title':
    config['site_title'],
    'navigation': [{
        'url': '/',
        'name': 'LED Control'
    }, {
        'url': '/temperature',
        'name': 'Temperature'
    }, {
예제 #10
0
import sys
import os
sys.path.append('src')
from Slave import Slave
import shutil


def copyDirectory(src, dest):
    try:
        shutil.copytree(src, dest)
    # Directories are the same
    except shutil.Error as e:
        print('Directory not copied. Error: %s' % e)
    # Any error saying that the directory doesn't exist
    except OSError as e:
        print('Directory not copied. Error: %s' % e)


if os.path.exists('Testing/TestImagesTmp'):
    shutil.rmtree('Testing/TestImagesTmp')
copyDirectory('Testing/TestImages', 'Testing/TestImagesTmp')

s0 = Slave(name='Slave01',
           folder_loc='Testing/TestImagesTmp/Ingest_01',
           host='localhost',
           port=8080,
           debug=True)
s0.setParameters(name='Params', destination='Testing/Params')
s0.run()