def statusUpdate (self, driver, update):

        logging.debug("Mesos Scheduler: task %s is in state %d", update.task_id.value, update.state)

        if update.state == mesos_pb2.TASK_FINISHED:
            self.tasksFinished += 1
            slave_id, executor_id = self.taskData[update.task_id.value]

            # update WorkerInfo with telemetry from initial discovery task
            telemetry = loads(str(update.data))
            logging.info("telemetry from slave %s, executor %s\n%s", slave_id.value, executor_id.value, str(update.data))

            exe = self.lookup_executor(slave_id.value, executor_id.value)
            exe.ip_addr = telemetry["ip_addr"]

            ## NB: TODO make the service port a parameter
            exe.port = Worker.DEFAULT_PORT

            if self.tasksFinished == self._n_workers:
                logging.info("Mesos Scheduler: %d init tasks completed", self._n_workers)

            # request to launch service as a child process
            self.messagesSent += 1
            message = str(dumps([ self._exe_path, "-p", exe.port ]))
            driver.sendFrameworkMessage(executor_id, slave_id, message)
Invoked when the status of a task has changed (e.g., a slave
dataset/ETHPy150Open ceteri/exelixi/src/resource.py/MesosScheduler.statusUpdate