builds board: a Grafana dashboard of the container builds, from the lines hive-c0re logs
A builds tab (counts, failures, longest, builds over time by outcome, a table of each build) and an output tab (every line of the build picked in the Build filter). The table joins its grouped stats by labels, one row per build.
This commit is contained in:
parent
febeb0d395
commit
ab30c3dc7d
3 changed files with 732 additions and 0 deletions
|
|
@ -271,6 +271,7 @@ let
|
|||
"agents.json"
|
||||
"authelia.json"
|
||||
"bao.json"
|
||||
"builds.json"
|
||||
"ci.json"
|
||||
"claude-usage.json"
|
||||
"collector.json"
|
||||
|
|
|
|||
684
nix/host-modules/swarm-grafana/dashboards/builds.json
Normal file
684
nix/host-modules/swarm-grafana/dashboards/builds.json
Normal file
|
|
@ -0,0 +1,684 @@
|
|||
{
|
||||
"apiVersion": "dashboard.grafana.app/v2beta1",
|
||||
"kind": "Dashboard",
|
||||
"metadata": {
|
||||
"name": "hyperhive-builds"
|
||||
},
|
||||
"spec": {
|
||||
"title": "hyperhive · builds",
|
||||
"description": "Container builds on every hive: what ran, how it ended, how long it took, and its output.",
|
||||
"editable": true,
|
||||
"cursorSync": "Off",
|
||||
"liveNow": false,
|
||||
"preload": false,
|
||||
"tags": ["hyperhive", "swarm", "builds"],
|
||||
"links": [],
|
||||
"annotations": [
|
||||
{
|
||||
"kind": "AnnotationQuery",
|
||||
"spec": {
|
||||
"query": {
|
||||
"kind": "DataQuery",
|
||||
"group": "grafana",
|
||||
"version": "v0",
|
||||
"datasource": {
|
||||
"name": "-- Grafana --"
|
||||
},
|
||||
"spec": {}
|
||||
},
|
||||
"enable": true,
|
||||
"hide": true,
|
||||
"iconColor": "rgba(0, 211, 255, 1)",
|
||||
"name": "Annotations & Alerts",
|
||||
"builtIn": true,
|
||||
"legacyOptions": {
|
||||
"type": "dashboard"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"variables": [
|
||||
{
|
||||
"kind": "QueryVariable",
|
||||
"spec": {
|
||||
"name": "agent",
|
||||
"label": "Agent",
|
||||
"hide": "dontHide",
|
||||
"refresh": "onTimeRangeChanged",
|
||||
"skipUrlSync": false,
|
||||
"query": {
|
||||
"kind": "DataQuery",
|
||||
"group": "victoriametrics-logs-datasource",
|
||||
"version": "v0",
|
||||
"datasource": {
|
||||
"name": "@logsDatasourceUid@"
|
||||
},
|
||||
"spec": {
|
||||
"refId": "agent",
|
||||
"type": "fieldValue",
|
||||
"field": "F_AGENT",
|
||||
"query": "_SYSTEMD_UNIT:\"hive-c0re.service\" TARGET:\"nixos-container\" F_EVENT:finish",
|
||||
"limit": 200
|
||||
}
|
||||
},
|
||||
"regex": "",
|
||||
"options": [],
|
||||
"allowCustomValue": true,
|
||||
"current": {
|
||||
"text": "All",
|
||||
"value": "$__all"
|
||||
},
|
||||
"sort": "alphabeticalAsc",
|
||||
"multi": true,
|
||||
"includeAll": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"kind": "QueryVariable",
|
||||
"spec": {
|
||||
"name": "build",
|
||||
"label": "Build",
|
||||
"hide": "dontHide",
|
||||
"refresh": "onTimeRangeChanged",
|
||||
"skipUrlSync": false,
|
||||
"query": {
|
||||
"kind": "DataQuery",
|
||||
"group": "victoriametrics-logs-datasource",
|
||||
"version": "v0",
|
||||
"datasource": {
|
||||
"name": "@logsDatasourceUid@"
|
||||
},
|
||||
"spec": {
|
||||
"refId": "build",
|
||||
"type": "fieldValue",
|
||||
"field": "F_BUILD_ID",
|
||||
"query": "_SYSTEMD_UNIT:\"hive-c0re.service\" TARGET:\"nixos-container\" F_EVENT:start",
|
||||
"limit": 200
|
||||
}
|
||||
},
|
||||
"regex": "",
|
||||
"options": [],
|
||||
"allowCustomValue": true,
|
||||
"current": {},
|
||||
"sort": "numericalDesc",
|
||||
"multi": false,
|
||||
"includeAll": false
|
||||
}
|
||||
}
|
||||
],
|
||||
"timeSettings": {
|
||||
"timezone": "utc",
|
||||
"from": "now-24h",
|
||||
"to": "now",
|
||||
"autoRefresh": "1m",
|
||||
"autoRefreshIntervals": [
|
||||
"5s",
|
||||
"10s",
|
||||
"30s",
|
||||
"1m",
|
||||
"5m",
|
||||
"15m",
|
||||
"30m",
|
||||
"1h",
|
||||
"2h",
|
||||
"1d"
|
||||
],
|
||||
"hideTimepicker": false,
|
||||
"fiscalYearStartMonth": 0
|
||||
},
|
||||
"elements": {
|
||||
"panel-1": {
|
||||
"kind": "Panel",
|
||||
"spec": {
|
||||
"id": 1,
|
||||
"title": "Builds",
|
||||
"description": "Container builds that finished in the range; zero means the log feed is down.",
|
||||
"links": [],
|
||||
"data": {
|
||||
"kind": "QueryGroup",
|
||||
"spec": {
|
||||
"queries": [
|
||||
{
|
||||
"kind": "PanelQuery",
|
||||
"spec": {
|
||||
"query": {
|
||||
"kind": "DataQuery",
|
||||
"group": "victoriametrics-logs-datasource",
|
||||
"version": "v0",
|
||||
"datasource": {
|
||||
"name": "@logsDatasourceUid@"
|
||||
},
|
||||
"spec": {
|
||||
"expr": "_SYSTEMD_UNIT:\"hive-c0re.service\" TARGET:\"nixos-container\" F_EVENT:finish | filter F_AGENT:$agent | stats count() as builds",
|
||||
"queryType": "stats"
|
||||
}
|
||||
},
|
||||
"refId": "A",
|
||||
"hidden": false
|
||||
}
|
||||
}
|
||||
],
|
||||
"transformations": [],
|
||||
"queryOptions": {}
|
||||
}
|
||||
},
|
||||
"vizConfig": {
|
||||
"kind": "VizConfig",
|
||||
"group": "stat",
|
||||
"version": "",
|
||||
"spec": {
|
||||
"options": {
|
||||
"colorMode": "value",
|
||||
"graphMode": "none",
|
||||
"justifyMode": "auto",
|
||||
"reduceOptions": {
|
||||
"calcs": ["lastNotNull"],
|
||||
"fields": "",
|
||||
"values": false
|
||||
},
|
||||
"textMode": "auto"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"unit": "short",
|
||||
"decimals": 0,
|
||||
"color": {
|
||||
"mode": "thresholds"
|
||||
},
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "green",
|
||||
"value": null
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"overrides": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"panel-2": {
|
||||
"kind": "Panel",
|
||||
"spec": {
|
||||
"id": 2,
|
||||
"title": "Failed builds",
|
||||
"description": "Builds that ended in failure; open the output tab to read one.",
|
||||
"links": [],
|
||||
"data": {
|
||||
"kind": "QueryGroup",
|
||||
"spec": {
|
||||
"queries": [
|
||||
{
|
||||
"kind": "PanelQuery",
|
||||
"spec": {
|
||||
"query": {
|
||||
"kind": "DataQuery",
|
||||
"group": "victoriametrics-logs-datasource",
|
||||
"version": "v0",
|
||||
"datasource": {
|
||||
"name": "@logsDatasourceUid@"
|
||||
},
|
||||
"spec": {
|
||||
"expr": "_SYSTEMD_UNIT:\"hive-c0re.service\" TARGET:\"nixos-container\" F_EVENT:finish | filter F_AGENT:$agent | filter F_STATUS:fail | stats count() as failed",
|
||||
"queryType": "stats"
|
||||
}
|
||||
},
|
||||
"refId": "A",
|
||||
"hidden": false
|
||||
}
|
||||
}
|
||||
],
|
||||
"transformations": [],
|
||||
"queryOptions": {}
|
||||
}
|
||||
},
|
||||
"vizConfig": {
|
||||
"kind": "VizConfig",
|
||||
"group": "stat",
|
||||
"version": "",
|
||||
"spec": {
|
||||
"options": {
|
||||
"colorMode": "value",
|
||||
"graphMode": "none",
|
||||
"justifyMode": "auto",
|
||||
"reduceOptions": {
|
||||
"calcs": ["lastNotNull"],
|
||||
"fields": "",
|
||||
"values": false
|
||||
},
|
||||
"textMode": "auto"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"unit": "short",
|
||||
"decimals": 0,
|
||||
"color": {
|
||||
"mode": "thresholds"
|
||||
},
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "orange",
|
||||
"value": null
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"overrides": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"panel-3": {
|
||||
"kind": "Panel",
|
||||
"spec": {
|
||||
"id": 3,
|
||||
"title": "Longest build",
|
||||
"description": "The longest build in the range, in seconds.",
|
||||
"links": [],
|
||||
"data": {
|
||||
"kind": "QueryGroup",
|
||||
"spec": {
|
||||
"queries": [
|
||||
{
|
||||
"kind": "PanelQuery",
|
||||
"spec": {
|
||||
"query": {
|
||||
"kind": "DataQuery",
|
||||
"group": "victoriametrics-logs-datasource",
|
||||
"version": "v0",
|
||||
"datasource": {
|
||||
"name": "@logsDatasourceUid@"
|
||||
},
|
||||
"spec": {
|
||||
"expr": "_SYSTEMD_UNIT:\"hive-c0re.service\" TARGET:\"nixos-container\" F_EVENT:finish | filter F_AGENT:$agent | stats max(F_RUNTIME_SECS) as seconds",
|
||||
"queryType": "stats"
|
||||
}
|
||||
},
|
||||
"refId": "A",
|
||||
"hidden": false
|
||||
}
|
||||
}
|
||||
],
|
||||
"transformations": [],
|
||||
"queryOptions": {}
|
||||
}
|
||||
},
|
||||
"vizConfig": {
|
||||
"kind": "VizConfig",
|
||||
"group": "stat",
|
||||
"version": "",
|
||||
"spec": {
|
||||
"options": {
|
||||
"colorMode": "value",
|
||||
"graphMode": "none",
|
||||
"justifyMode": "auto",
|
||||
"reduceOptions": {
|
||||
"calcs": ["lastNotNull"],
|
||||
"fields": "",
|
||||
"values": false
|
||||
},
|
||||
"textMode": "auto"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"unit": "s",
|
||||
"decimals": 0,
|
||||
"color": {
|
||||
"mode": "thresholds"
|
||||
},
|
||||
"thresholds": {
|
||||
"mode": "absolute",
|
||||
"steps": [
|
||||
{
|
||||
"color": "blue",
|
||||
"value": null
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"overrides": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"panel-4": {
|
||||
"kind": "Panel",
|
||||
"spec": {
|
||||
"id": 4,
|
||||
"title": "Builds over time by status",
|
||||
"description": "Finished builds per outcome over the range.",
|
||||
"links": [],
|
||||
"data": {
|
||||
"kind": "QueryGroup",
|
||||
"spec": {
|
||||
"queries": [
|
||||
{
|
||||
"kind": "PanelQuery",
|
||||
"spec": {
|
||||
"query": {
|
||||
"kind": "DataQuery",
|
||||
"group": "victoriametrics-logs-datasource",
|
||||
"version": "v0",
|
||||
"datasource": {
|
||||
"name": "@logsDatasourceUid@"
|
||||
},
|
||||
"spec": {
|
||||
"expr": "_SYSTEMD_UNIT:\"hive-c0re.service\" TARGET:\"nixos-container\" F_EVENT:finish | filter F_AGENT:$agent | stats by (F_STATUS) count() as builds",
|
||||
"queryType": "statsRange",
|
||||
"legendFormat": "{{F_STATUS}}"
|
||||
}
|
||||
},
|
||||
"refId": "A",
|
||||
"hidden": false
|
||||
}
|
||||
}
|
||||
],
|
||||
"transformations": [],
|
||||
"queryOptions": {}
|
||||
}
|
||||
},
|
||||
"vizConfig": {
|
||||
"kind": "VizConfig",
|
||||
"group": "timeseries",
|
||||
"version": "",
|
||||
"spec": {
|
||||
"options": {
|
||||
"legend": {
|
||||
"displayMode": "list",
|
||||
"placement": "bottom",
|
||||
"showLegend": true
|
||||
},
|
||||
"tooltip": {
|
||||
"mode": "multi",
|
||||
"sort": "desc"
|
||||
}
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"unit": "short",
|
||||
"decimals": 0,
|
||||
"color": {
|
||||
"mode": "palette-classic"
|
||||
},
|
||||
"custom": {
|
||||
"drawStyle": "bars",
|
||||
"lineWidth": 1,
|
||||
"fillOpacity": 60,
|
||||
"showPoints": "never",
|
||||
"spanNulls": false,
|
||||
"axisSoftMin": 0
|
||||
}
|
||||
},
|
||||
"overrides": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"panel-5": {
|
||||
"kind": "Panel",
|
||||
"spec": {
|
||||
"id": 5,
|
||||
"title": "Recent builds",
|
||||
"description": "Each build in the range: its id, agent, kind, outcome and runtime. Pick the id on the output tab.",
|
||||
"links": [],
|
||||
"data": {
|
||||
"kind": "QueryGroup",
|
||||
"spec": {
|
||||
"queries": [
|
||||
{
|
||||
"kind": "PanelQuery",
|
||||
"spec": {
|
||||
"query": {
|
||||
"kind": "DataQuery",
|
||||
"group": "victoriametrics-logs-datasource",
|
||||
"version": "v0",
|
||||
"datasource": {
|
||||
"name": "@logsDatasourceUid@"
|
||||
},
|
||||
"spec": {
|
||||
"expr": "_SYSTEMD_UNIT:\"hive-c0re.service\" TARGET:\"nixos-container\" F_EVENT:finish | filter F_AGENT:$agent | stats by (F_BUILD_ID, F_AGENT, F_KIND, F_STATUS) max(F_RUNTIME_SECS) as runtime | sort by (F_BUILD_ID) desc | limit 100",
|
||||
"queryType": "stats"
|
||||
}
|
||||
},
|
||||
"refId": "A",
|
||||
"hidden": false
|
||||
}
|
||||
}
|
||||
],
|
||||
"transformations": [
|
||||
{
|
||||
"kind": "joinByLabels",
|
||||
"spec": {
|
||||
"id": "joinByLabels",
|
||||
"options": {
|
||||
"join": ["F_BUILD_ID", "F_AGENT", "F_KIND", "F_STATUS"],
|
||||
"value": "__name__"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"kind": "organize",
|
||||
"spec": {
|
||||
"id": "organize",
|
||||
"options": {
|
||||
"excludeByName": {
|
||||
"Time": true
|
||||
},
|
||||
"renameByName": {
|
||||
"F_BUILD_ID": "Build",
|
||||
"F_AGENT": "Agent",
|
||||
"F_KIND": "Kind",
|
||||
"F_STATUS": "Status",
|
||||
"runtime": "Runtime (s)"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"queryOptions": {}
|
||||
}
|
||||
},
|
||||
"vizConfig": {
|
||||
"kind": "VizConfig",
|
||||
"group": "table",
|
||||
"version": "",
|
||||
"spec": {
|
||||
"options": {
|
||||
"showHeader": true,
|
||||
"sortBy": [
|
||||
{
|
||||
"displayName": "Build",
|
||||
"desc": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {
|
||||
"unit": "short",
|
||||
"decimals": 0
|
||||
},
|
||||
"overrides": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"panel-6": {
|
||||
"kind": "Panel",
|
||||
"spec": {
|
||||
"id": 6,
|
||||
"title": "Build output",
|
||||
"description": "Every line of the build picked above, oldest first, with its start and finish lines.",
|
||||
"links": [],
|
||||
"data": {
|
||||
"kind": "QueryGroup",
|
||||
"spec": {
|
||||
"queries": [
|
||||
{
|
||||
"kind": "PanelQuery",
|
||||
"spec": {
|
||||
"query": {
|
||||
"kind": "DataQuery",
|
||||
"group": "victoriametrics-logs-datasource",
|
||||
"version": "v0",
|
||||
"datasource": {
|
||||
"name": "@logsDatasourceUid@"
|
||||
},
|
||||
"spec": {
|
||||
"expr": "_SYSTEMD_UNIT:\"hive-c0re.service\" TARGET:\"nixos-container\" F_BUILD_ID:$build | sort by (_time)",
|
||||
"queryType": "instant"
|
||||
}
|
||||
},
|
||||
"refId": "A",
|
||||
"hidden": false
|
||||
}
|
||||
}
|
||||
],
|
||||
"transformations": [],
|
||||
"queryOptions": {}
|
||||
}
|
||||
},
|
||||
"vizConfig": {
|
||||
"kind": "VizConfig",
|
||||
"group": "logs",
|
||||
"version": "",
|
||||
"spec": {
|
||||
"options": {
|
||||
"showTime": true,
|
||||
"wrapLogMessage": true,
|
||||
"prettifyLogMessage": false,
|
||||
"enableLogDetails": true,
|
||||
"sortOrder": "Ascending",
|
||||
"dedupStrategy": "none"
|
||||
},
|
||||
"fieldConfig": {
|
||||
"defaults": {},
|
||||
"overrides": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"layout": {
|
||||
"kind": "TabsLayout",
|
||||
"spec": {
|
||||
"tabs": [
|
||||
{
|
||||
"kind": "TabsLayoutTab",
|
||||
"spec": {
|
||||
"title": "builds",
|
||||
"layout": {
|
||||
"kind": "GridLayout",
|
||||
"spec": {
|
||||
"items": [
|
||||
{
|
||||
"kind": "GridLayoutItem",
|
||||
"spec": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 8,
|
||||
"height": 4,
|
||||
"element": {
|
||||
"kind": "ElementReference",
|
||||
"name": "panel-1"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"kind": "GridLayoutItem",
|
||||
"spec": {
|
||||
"x": 8,
|
||||
"y": 0,
|
||||
"width": 8,
|
||||
"height": 4,
|
||||
"element": {
|
||||
"kind": "ElementReference",
|
||||
"name": "panel-2"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"kind": "GridLayoutItem",
|
||||
"spec": {
|
||||
"x": 16,
|
||||
"y": 0,
|
||||
"width": 8,
|
||||
"height": 4,
|
||||
"element": {
|
||||
"kind": "ElementReference",
|
||||
"name": "panel-3"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"kind": "GridLayoutItem",
|
||||
"spec": {
|
||||
"x": 0,
|
||||
"y": 4,
|
||||
"width": 24,
|
||||
"height": 8,
|
||||
"element": {
|
||||
"kind": "ElementReference",
|
||||
"name": "panel-4"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"kind": "GridLayoutItem",
|
||||
"spec": {
|
||||
"x": 0,
|
||||
"y": 12,
|
||||
"width": 24,
|
||||
"height": 14,
|
||||
"element": {
|
||||
"kind": "ElementReference",
|
||||
"name": "panel-5"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"kind": "TabsLayoutTab",
|
||||
"spec": {
|
||||
"title": "output",
|
||||
"layout": {
|
||||
"kind": "GridLayout",
|
||||
"spec": {
|
||||
"items": [
|
||||
{
|
||||
"kind": "GridLayoutItem",
|
||||
"spec": {
|
||||
"x": 0,
|
||||
"y": 0,
|
||||
"width": 24,
|
||||
"height": 26,
|
||||
"element": {
|
||||
"kind": "ElementReference",
|
||||
"name": "panel-6"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -478,6 +478,52 @@ let
|
|||
]
|
||||
&& (lib.head xf).spec.options.byField == "agent";
|
||||
}
|
||||
{
|
||||
# The builds board reads the fields hive-c0re puts on every container-build
|
||||
# log line: the build id, agent and kind on each, the event on the start and
|
||||
# finish lines, and the status and runtime on the finish line. A renamed
|
||||
# field in hive-c0re is a board of empty panels, so each field the board
|
||||
# filters or groups by must still be set there.
|
||||
name = "the builds dashboard ships, and reads the fields hive-c0re logs on a container build";
|
||||
ok =
|
||||
let
|
||||
provider = lib.head grafanaWithAuthelia.containers.swarm-grafana.config.services.grafana.provision.dashboards.settings.providers;
|
||||
shipped = lib.attrNames provider.options.path.entries;
|
||||
board = builtins.fromJSON (builtins.readFile ../host-modules/swarm-grafana/dashboards/builds.json);
|
||||
exprs = map (e: (lib.head e.spec.data.spec.queries).spec.query.spec.expr) (
|
||||
lib.attrValues board.spec.elements
|
||||
);
|
||||
tabs = map (t: t.spec.title) board.spec.layout.spec.tabs;
|
||||
logged = builtins.readFile ../../hive-c0re/src/lifecycle/mod.rs;
|
||||
tables = lib.filter (e: e.spec.vizConfig.group == "table") (lib.attrValues board.spec.elements);
|
||||
in
|
||||
lib.elem "builds.json" shipped
|
||||
&&
|
||||
tabs == [
|
||||
"builds"
|
||||
"output"
|
||||
]
|
||||
&& lib.all (e: lib.hasInfix "TARGET:\"nixos-container\"" e) exprs
|
||||
&& lib.hasInfix "event = \"finish\"" logged
|
||||
&& lib.hasInfix "event = \"start\"" logged
|
||||
# each field as the logging macro spells it (`status` is a bare local)
|
||||
&& lib.all (f: lib.hasInfix f logged) [
|
||||
"build_id = "
|
||||
"agent = "
|
||||
"kind = "
|
||||
"status,"
|
||||
"runtime_secs = "
|
||||
]
|
||||
&& lib.hasInfix "target: \"nixos-container\"" logged
|
||||
# a grouped stats table is one frame per group: joined by labels, one row per group
|
||||
&& lib.all (
|
||||
e:
|
||||
map (t: t.spec.id) e.spec.data.spec.transformations == [
|
||||
"joinByLabels"
|
||||
"organize"
|
||||
]
|
||||
) tables;
|
||||
}
|
||||
{
|
||||
# The egress board ships, and its queries read the two squid log lines as
|
||||
# squid writes them: the would_deny line's field layout, and the default
|
||||
|
|
|
|||
Loading…
Reference in a new issue