Source code for marathon.models.endpoint

from .base import MarathonObject


[docs]class MarathonEndpoint(MarathonObject): """Marathon Endpoint helper object for service discovery. It describes a single port mapping for a running task. :param str app_id: application id :param str host: mesos slave running the task :param str task_id: task id :param int service_port: application service port :param int task_port: port allocated on the slave """ def __repr__(self): return "{clazz}::{app_id}::{service_port}::{task_id}::{task_port}".format( clazz=self.__class__.__name__, app_id=self.app_id, service_port=self.service_port, task_id=self.task_id, task_port=self.task_port ) def __init__(self, app_id=None, service_port=None, host=None, task_id=None, task_port=None): self.app_id = app_id self.service_port = service_port self.host = host self.task_id = task_id self.task_port = task_port @classmethod
[docs] def from_tasks(cls, tasks): """Construct a list of MarathonEndpoints from a list of tasks. :param list[:class:`marathon.models.MarathonTask`] tasks: list of tasks to parse :rtype: list[:class:`MarathonEndpoint`] """ endpoints = [ [ MarathonEndpoint(task.app_id, task.service_ports[ port_index], task.host, task.id, port) for port_index, port in enumerate(task.ports) ] for task in tasks ] # Flatten result return [item for sublist in endpoints for item in sublist]