{%- if dead_clients -%}

Dead clients

Note that clients in repair are not listed here. {%- for info in dead_clients | natsort(attribute='client.id') -%} {%- endfor -%}
Client Last ping Problem
{{ info.client['id'] }} {{ info.client['last_activity'] | parse_dt | format_dt_relative }} {{ info.problem or 'Unknown problem' }}
{%- endif -%} {%- if clients_with_blocking_tags -%}

Clients with blocking tags

Note that dead clients and clients in repair are not listed here. {%- for tag, clients in clients_with_blocking_tags | dictsort -%}

{{ tag }}

{%- endfor -%} {%- endif -%} {%- if clients_with_maintenance_tags -%}

Clients with maintenance tags

{%- endif -%} {%- if clients_with_insufficient_space -%}

Clients with insufficient free space

Note that space used by running tasks is also "free" in this context. {%- for info in clients_with_insufficient_space | natsort(attribute='client.id') -%} {%- endfor -%}
Client Free space
{{ info.client['id'] }} {{ (info.free_space / 1024 ** 3) | round(2) }} GB
{%- endif -%} {%- if clients_with_hung_tasks -%}

Clients with hung tasks

{%- for info in clients_with_hung_tasks | natsort(attribute='client.id') -%} {%- endfor -%}
Client Tasks
{{ info.client['id'] }} {%- set comma = joiner(', ') -%} {%- for task in info.tasks -%} {{ comma() }}task #{{ task['id'] }} {%- endfor -%}
{%- endif -%} {%- if idle_clients -%}

Idle clients

These clients do nothing for too long. Note that clients with blocking tags are not mentioned here. {%- for info in idle_clients | natsort(attribute='client.id') -%} {%- endfor -%}
Client Idle period
{{ info.client['id'] }} {{ info.idle_period | format_time_delta }}
{%- endif -%} {%- if clients_in_repair -%}

Clients in repair

{%- for info in clients_in_repair | natsort(attribute='client.id') -%} {%- endfor -%}
Client Last ping Issue Issue created Issue tags Comment
{{ info.client['id'] }} {{ info.client['last_activity'] | parse_dt | format_dt_relative }} {{ info.issue.key }} {{ info.issue.createdAt | parse_dt | format_dt('%Y-%m-%d') }} {{ info.issue.tags | sort | join(', ') }} {{ info.comment }}
{%- endif -%}

The report is produced by Sandbox task #{{ current_task.id }}.