Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
57 changes: 45 additions & 12 deletions marathon/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,14 +135,19 @@ def create_app(self, app_id, app):
else:
return False

def list_apps(self, cmd=None, embed_tasks=False,
embed_failures=False, embed_task_stats=False, **kwargs):
def list_apps(self, cmd=None, embed_tasks=False, embed_counts=False,
embed_deployments=False, embed_readiness=False,
embed_last_task_failure=False, embed_failures=False,
embed_task_stats=False, **kwargs):
"""List all apps.

:param str app_id: application ID
:param str cmd: if passed, only show apps with a matching `cmd`
:param bool embed_tasks: embed tasks in result
:param bool embed_failures: embed tasks and last task failure in result
:param bool embed_counts: embed all task counts
:param bool embed_deployments: embed all deployment identifier
:param bool embed_readiness: embed all readiness check results
:param bool embed_last_task_failure: embeds the last task failure
:param bool embed_failures: shorthand for embed_last_task_failure
:param bool embed_task_stats: embed task stats in result
:param kwargs: arbitrary search filters

Expand All @@ -153,12 +158,18 @@ def list_apps(self, cmd=None, embed_tasks=False,
if cmd:
params['cmd'] = cmd

if embed_failures:
params['embed'] = 'apps.failures'
elif embed_tasks:
params['embed'] = 'apps.tasks'
elif embed_task_stats:
params['embed'] = 'apps.taskStats'
embed_params = {
'app.tasks': embed_tasks,
'app.counts': embed_counts,
'app.deployments': embed_deployments,
'app.readiness': embed_readiness,
'app.lastTaskFailure': embed_last_task_failure,
'app.failures': embed_failures,
'app.taskStats': embed_task_stats
}
filtered_embed_params = [k for (k, v) in embed_params.items() if v]
if filtered_embed_params:
params['embed'] = filtered_embed_params

response = self._do_request('GET', '/v2/apps', params=params)
apps = self._parse_response(
Expand All @@ -167,16 +178,38 @@ def list_apps(self, cmd=None, embed_tasks=False,
apps = [o for o in apps if getattr(o, k) == v]
return apps

def get_app(self, app_id, embed_tasks=False):
def get_app(self, app_id, embed_tasks=False, embed_counts=False,
embed_deployments=False, embed_readiness=False,
embed_last_task_failure=False, embed_failures=False,
embed_task_stats=False):
"""Get a single app.

:param str app_id: application ID
:param bool embed_tasks: embed tasks in result
:param bool embed_counts: embed all task counts
:param bool embed_deployments: embed all deployment identifier
:param bool embed_readiness: embed all readiness check results
:param bool embed_last_task_failure: embeds the last task failure
:param bool embed_failures: shorthand for embed_last_task_failure
:param bool embed_task_stats: embed task stats in result

:returns: application
:rtype: :class:`marathon.models.app.MarathonApp`
"""
params = {'embed': 'apps.tasks'} if embed_tasks else {}
params = {}
embed_params = {
'app.tasks': embed_tasks,
'app.counts': embed_counts,
'app.deployments': embed_deployments,
'app.readiness': embed_readiness,
'app.lastTaskFailure': embed_last_task_failure,
'app.failures': embed_failures,
'app.taskStats': embed_task_stats
}
filtered_embed_params = [k for (k, v) in embed_params.items() if v]
if filtered_embed_params:
params['embed'] = filtered_embed_params

response = self._do_request(
'GET', '/v2/apps/{app_id}'.format(app_id=app_id), params=params)
return self._parse_response(response, MarathonApp, resource_name='app')
Expand Down
6 changes: 4 additions & 2 deletions marathon/models/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,8 @@ def __init__(
max_launch_delay_seconds=None, mem=None, ports=None, require_ports=None, store_urls=None,
task_rate_limit=None, tasks=None, tasks_running=None, tasks_staged=None, tasks_healthy=None,
tasks_unhealthy=None, upgrade_strategy=None, uris=None, user=None, version=None, version_info=None,
ip_address=None, fetch=None, task_stats=None, readiness_checks=None, port_definitions=None, residency=None):
ip_address=None, fetch=None, task_stats=None, readiness_checks=None,
readiness_check_results=None, port_definitions=None, residency=None):

# self.args = args or []
self.accepted_resource_roles = accepted_resource_roles
Expand Down Expand Up @@ -127,6 +128,7 @@ def __init__(
self.ports = ports or []
self.port_definitions = port_definitions or []
self.readiness_checks = readiness_checks or []
self.readiness_check_results = readiness_check_results or []
self.residency = residency
self.require_ports = require_ports
self.store_urls = store_urls or []
Expand All @@ -146,7 +148,7 @@ def __init__(
self.version = version
self.version_info = version_info if (isinstance(version_info, MarathonAppVersionInfo) or version_info is None) \
else MarathonAppVersionInfo.from_json(version_info)
self.task_stats = version_info if (isinstance(task_stats, MarathonTaskStats) or task_stats is None) \
self.task_stats = task_stats if (isinstance(task_stats, MarathonTaskStats) or task_stats is None) \
else MarathonTaskStats.from_json(task_stats)


Expand Down