# build_comment
# build_group
# job
+# mirror
# user
# by_user
# builder
NULL::integer AS build_comment,
NULL::integer AS build_group,
NULL::integer AS job,
+ NULL::integer AS mirror,
NULL::integer AS user,
builds.owner_id AS by_user,
NULL::integer AS builder,
NULL AS build_comment,
NULL AS build_group,
NULL AS job,
+ NULL AS mirror,
NULL AS user,
NULL AS by_user,
NULL AS builder,
NULL AS build_comment,
NULL AS build_group,
NULL AS job,
+ NULL AS mirror,
NULL AS user,
builds.deleted_by AS by_user,
NULL AS builder,
NULL AS build_comment,
NULL AS build_group,
NULL AS job,
+ NULL AS mirror,
NULL AS user,
builds.deprecated_by AS by_user,
NULL AS builder,
build_comments.id AS build_comment,
NULL AS build_group,
NULL AS job,
+ NULL AS mirror,
NULL AS user,
build_comments.user_id AS by_user,
NULL AS builder,
NULL AS build_comment,
NULL AS build_group,
NULL AS job,
+ NULL AS mirror,
build_watchers.user_id AS user,
NULL AS by_user,
NULL AS builder,
NULL AS build_comment,
NULL AS build_group,
NULL AS job,
+ NULL AS mirror,
build_watchers.user_id AS user,
NULL AS by_user,
NULL AS builder,
NULL AS build_comment,
NULL AS build_group,
NULL AS job,
+ NULL AS mirror,
NULL AS user,
repository_builds.added_by AS by_user,
NULL AS builder,
NULL AS build_comment,
NULL AS build_group,
NULL AS job,
+ NULL AS mirror,
NULL AS user,
repository_builds.removed_by AS by_user,
NULL AS builder,
NULL AS build_comment,
NULL AS build_group,
NULL AS job,
+ NULL AS mirror,
NULL AS user,
build_points.user_id AS by_user,
NULL AS builder,
NULL AS build_comment,
build_groups.id AS build_group,
NULL AS job,
+ NULL AS mirror,
NULL AS user,
NULL AS by_user,
NULL AS builder,
NULL AS build_comment,
NULL AS build_group,
jobs.id AS job,
+ NULL AS mirror,
NULL AS user,
NULL AS by_user,
NULL AS builder,
NULL AS build_comment,
NULL AS build_group,
jobs.id AS job,
+ NULL AS mirror,
NULL AS user,
NULL AS by_user,
jobs.builder_id AS builder,
NULL AS build_comment,
NULL AS build_group,
jobs.id AS job,
+ NULL AS mirror,
NULL AS user,
NULL AS by_user,
jobs.builder_id AS builder,
NULL AS build_comment,
NULL AS build_group,
jobs.id AS job,
+ NULL AS mirror,
NULL AS user,
jobs.aborted_by AS by_user,
jobs.builder_id AS builder,
NULL AS build_comment,
NULL AS build_group,
jobs.id AS job,
+ NULL AS mirror,
NULL AS user,
NULL AS by_user,
jobs.builder_id AS builder,
NULL AS build_comment,
NULL AS build_group,
jobs.id AS job,
+ NULL AS mirror,
NULL AS user,
NULL AS by_user,
NULL AS builder,
jobs superseeded_jobs ON superseeded_jobs.superseeded_by = jobs.id
WHERE
jobs.deleted_at IS NULL
+
+ UNION ALL
+
+ -- Mirrors Created
+ SELECT
+ 'mirror-created' AS type,
+ mirrors.created_at AS t,
+ 5 AS priority,
+ NULL AS build,
+ NULL AS by_build,
+ NULL AS build_comment,
+ NULL AS build_group,
+ NULL AS job,
+ mirrors.id AS mirror,
+ NULL AS user,
+ mirrors.created_by AS by_user,
+ NULL AS builder,
+ NULL AS repository,
+ NULL AS points
+ FROM
+ mirrors
+
+ UNION ALL
+
+ -- Mirrors Deleted
+ SELECT
+ 'mirror-deleted' AS type,
+ mirrors.deleted_at AS t,
+ 5 AS priority,
+ NULL AS build,
+ NULL AS by_build,
+ NULL AS build_comment,
+ NULL AS build_group,
+ NULL AS job,
+ mirrors.id AS mirror,
+ NULL AS user,
+ mirrors.deleted_by AS by_user,
+ NULL AS builder,
+ NULL AS repository,
+ NULL AS points
+ FROM
+ mirrors
+ WHERE
+ deleted_at IS NOT NULL
+
+ UNION ALL
+
+ -- Mirror Status Changes
+ SELECT
+ CASE
+ WHEN mirror_status_changes.new_status IS TRUE
+ THEN 'mirror-online'
+ WHEN mirror_status_changes.new_status IS FALSE
+ THEN 'mirror-offline'
+ END AS type,
+ mirror_status_changes.checked_at AS t,
+ 4 AS priority,
+ NULL AS build,
+ NULL AS by_build,
+ NULL AS build_comment,
+ NULL AS build_group,
+ NULL AS job,
+ mirror_status_changes.mirror_id AS mirror,
+ NULL AS user,
+ NULL AS by_user,
+ NULL AS builder,
+ NULL AS repository,
+ NULL AS points
+ FROM (
+ SELECT
+ mirror_checks.mirror_id AS mirror_id,
+ mirror_checks.checked_at AS checked_at,
+ mirror_checks.success AS new_status,
+ LAG(success) OVER (
+ PARTITION BY mirror_id
+ ORDER BY checked_at ASC
+ ) AS old_status
+ FROM
+ mirror_checks
+ ) mirror_status_changes
+ WHERE
+ mirror_status_changes.old_status <> mirror_status_changes.new_status
)
""")
# Jobs
"job" : self.backend.jobs.get_by_id,
+ # Mirrors
+ "mirror" : self.backend.mirrors.get_by_id,
+
# Repositories
"repository" : self.backend.repos.get_by_id,
yield Event(self.backend, event)
def __call__(self, priority=None, offset=None, limit=None,
- build=None, builder=None, user=None):
+ build=None, builder=None, mirror=None, user=None):
"""
Returns all events filtered by the given criteria
"""
conditions.append("events.builder = %s")
values.append(builder)
+ # Filter by mirror
+ if mirror:
+ conditions.append("events.mirror = %s")
+ values.append(mirror)
+
# Filter by user
if user:
conditions.append("(events.user = %s OR events.by_user = %s)")
<p class="icon is-large has-text-danger">
<i class="fa-solid fa-2x fa-flask-vial"></i>
</p>
+ {% elif event.type == "mirror-online" %}
+ <p class="icon is-large has-text-success">
+ <i class="fa-solid fa-2x fa-server"></i>
+ </p>
+ {% elif event.type == "mirror-offline" %}
+ <p class="icon is-large has-text-danger">
+ <i class="fa-solid fa-2x fa-server"></i>
+ </p>
{% else %}
<p class="icon is-large has-text-light">
<i class="fa-solid fa-2x fa-question"></i>
{{ _("Job Dispatched") }}
{% elif event.type == "job-retry" %}
{{ _("Job Restarted") }}
+ {% elif event.type == "mirror-created" %}
+ {{ _("Mirror Created") }}
+ {% elif event.type == "mirror-deleted" %}
+ {{ _("Mirror Deleted") }}
+ {% elif event.type == "mirror-online" %}
+ {{ _("Mirror Came Online") }}
+ {% elif event.type == "mirror-offline" %}
+ {{ _("Mirror Went Offline") }}
{% elif event.type == "repository-build-added" %}
{{ _("Build has been added to repository %s") % event.repository }}
{% elif event.type == "repository-build-removed" %}
</a>
{% end %}
+ {# Mirror #}
+ {% if event.mirror %}
+ <a class="level-item" href="/mirrors/{{ event.mirror.hostname }}">
+ {{ event.mirror }}
+ </a>
+ {% end %}
+
{# Repository #}
{% if event.repository %}
<a class="level-item" href="{{ event.repository.url }}">