Пример #1
0
 def test_is_killed_false(self):
     base_task = {
         'id': 'mytask_id',
         'slave_id': 'myslave_id',
         'framework_id': 'myframework_id',
         'state': 'TASK_FALSE',
         'statuses': []
     }
     task = MesosTask(base_task, 'directory')
     self.assertFalse(task.is_killed())
Пример #2
0
 def test_is_killing(self):
     base_task = {
         'id': 'mytask_id',
         'slave_id': 'myslave_id',
         'framework_id': 'myframework_id',
         'state': 'TASK_KILLING',
         'statuses': []
     }
     task = MesosTask(base_task, 'directory')
     self.assertTrue(task.is_killed())
Пример #3
0
 def test_is_failed(self):
     base_task = {
         'id': 'mytask_id',
         'slave_id': 'myslave_id',
         'framework_id': 'myframework_id',
         'state': 'TASK_FAILED',
         'statuses': []
     }
     task = MesosTask(base_task, 'directory')
     self.assertTrue(task.is_failed())
Пример #4
0
    def get_task(self, task_id, slave_id=None):
        """
        Go through all frameworks and executors and get all tasks that
        start with the service_id. Returns the latest task with information
        needed to get the files from the sandbox
        """
        framework_name = 'marathon'
        slave_ids = [slave_id]
        if not slave_id:
            slave_ids = self._get_slave_ids()

        found_tasks = []

        for slave_id in slave_ids:
            slave_state_json = self._get_slave_state(slave_id)

            # Get all 'marathon' frameworks
            marathon_frameworks = []
            marathon_frameworks.extend([
                f for f in slave_state_json['frameworks']
                if f['name'] == framework_name
            ])
            marathon_frameworks.extend([
                f for f in slave_state_json['completed_frameworks']
                if f['name'] == framework_name
            ])

            # Get all executors and completed executors where 'id' of the task
            # starts with the service_id
            executors = []
            for framework in marathon_frameworks:
                executors.extend(
                    [e for e in framework['executors'] if e['id'] == task_id])
                executors.extend([
                    e for e in framework['completed_executors']
                    if e['id'] == task_id
                ])

            for executor in executors:
                for task in executor['tasks']:
                    found_tasks.append(MesosTask(task, executor['directory']))

                for task in executor['completed_tasks']:
                    found_tasks.append(MesosTask(task, executor['directory']))

        # Sort the tasks, so the newest are on top
        found_tasks.sort(key=lambda task: task.timestamp, reverse=True)
        if len(found_tasks) == 0:
            return None

        return found_tasks[0]
Пример #5
0
    def test_not_none(self):
        base_task = {
            'id': 'mytask_id',
            'slave_id': 'myslave_id',
            'framework_id': 'myframework_id',
            'state': 'mystate',
            'statuses': []
        }

        task = MesosTask(base_task, 'directory')
        self.assertIsNotNone(task)
Пример #6
0
    def test_values_set(self):
        base_task = {
            'id': 'mytask_id',
            'slave_id': 'myslave_id',
            'framework_id': 'myframework_id',
            'state': 'mystate',
            'statuses': []
        }

        task = MesosTask(base_task, 'directory')
        self.assertEqual(task.task_id, 'mytask_id')
        self.assertEqual(task.slave_id, 'myslave_id')
        self.assertEqual(task.framework_id, 'myframework_id')
        self.assertEqual(task.state, 'mystate')
        self.assertEqual(task.timestamp, -1)