Exemple #1
0
def main():
    my_state = InternalState()
    init()

    logging.info('start service ...')

    try:
        while (my_state.state is not STATE_MASTER):
            client = Client()
            my_state = client.run(4, my_state)
        master = Master()
        master.run(my_state)
    except KeyboardInterrupt:
        sys.exit()
Exemple #2
0
def evo_main():
    comm = MPI.COMM_WORLD
    rank = comm.Get_rank()

    logging.basicConfig(level=logging.DEBUG, format=f'[%(asctime)s][rank {rank}] %(message)s')
    
    pa = ProgramArguments(rank)
    
    gpu_fix(pa.args.gpu_ram)

    if rank == 0:
        max_rank: int = comm.Get_size()

        cute: Cute = Cute(pa)
        master = Master(cute, comm, max_rank)
        master.run()
    else:
        worker = Worker(rank, comm)
        worker.run()
Exemple #3
0
 def run_local_tornado(self, port=8888):
     self.compute_job_graph()
     scheduler = NaiveScheduler(self.job_graph)
     master = Master(scheduler, port)
     success, results = master.run()
     print success
     print "here"
     if not success:
         failed_jobs = filter(lambda x: x.failed, self.jobs.values())
         print "-"*80
         for job in failed_jobs:
             print "Job failed: {0}".format(job.id)
             print self.job_spec(job)
             print "Exception: "
             print results[job.id]
             print results[job.id].traceback
             print "-"*80
     return success
Exemple #4
0
#!/usr/bin/env python

from mpi4py import MPI
from master import Master
from slave import Slave

comm = MPI.COMM_WORLD
rank = comm.Get_rank()
size = comm.Get_size()
assert size > 1

# slaves on ranks [1,size)
if rank:
    slave = Slave()
    slave.run()

# master on rank 0
else:
    options = set(['archive'])

    master = Master(options)
    master.run()
Exemple #5
0
class Dart:
    def __init__(self, dartfile, flags):
        self.df = DartFile(dartfile)
        if flags["preprocessed"]:
            print self.df.preprocessed
            sys.exit(0)
        self.verbose = flags["verbose"]
        self.emulab = Emulab(self.df.pid, self.df.eid, self.df.nsfile,
                             self.df.eipsfile, self.df.iipsfile, self.verbose)
        self.eips = []
        self.iips = []
        self.mastereip = None
        self.masteriip = None
        self.slaveeips = []
        self.slaveiips = []
        self.numnodes = -1
        self.master = None

    def map_vnns(self, vnns, type):
        assert (type == EXTERNAL_IPS or type == INTERNAL_IPS)
        if type == EXTERNAL_IPS:
            allips = self.eips
        else:
            allips = self.iips
        ips = []
        if vnns == "*":
            ips = allips
        else:
            for vnn in vnns:
                ips.append(allips[vnn])
        return ips

    def emulab_setup(self):
        self.emulab.mkexp()
        self.emulab.setup()

    def emulab_teardown(self):
        self.emulab.rmexp()

    def emulab_setips(self):  # Assumes emulab_setup() in prior execution
        self.eips, self.iips = self.emulab.read_ipfiles()
        self.mastereip = self.eips[0]
        self.masteriip = self.iips[0]
        self.slaveeips = self.eips[1:]
        self.slaveiips = self.iips[1:]
        self.numnodes = len(self.eips)

    def emulab_faults(self):
        import tempfile
        s = StringIO.StringIO()
        for i in range(len(self.df.faults)):
            f = self.df.faults[i]
            eips = self.map_vnns(f["vnns"], EXTERNAL_IPS)
            if f["type"] == "node" and f["subtype"] == "reboot":  # Node reboot
                s.write("(sleep %d;" % f["time"])
                s.write("/usr/testbed/bin/node_reboot -w ")
                for ip in eips:
                    m = re.search("^(pc.*?)\.", socket.gethostbyaddr(ip)[0])
                    nodeid = m.group(1)  # (e.g., "pc15")
                    s.write("%s " % nodeid)
                s.write("; ) &\n")
        tmp = tempfile.mktemp(".dart")
        self.emulab.xfer_buf_to(s.getvalue(),
                                tmp)  # NOTE: no setsid on Emulab!
        self.emulab.rexec_detached("sh %s" % tmp)

    def dart_setup(self):
        self.emulab_setips()
        self.master = Master(self, verbose=self.verbose)
        self.master.setup()

    def dart_run(self):
        self.emulab_setips()
        self.master = Master(self, verbose=self.verbose)
        self.master.run()

    def dart_reset(self):
        self.emulab_setips()
        self.master = Master(self, verbose=self.verbose)
        self.master.reset()