diff --git a/application-quality-reference-deployment/grafana/dashboards/eoap-validator-dashboard.json b/application-quality-reference-deployment/grafana/dashboards/eoap-validator-dashboard.json new file mode 100644 index 0000000..62f87fc --- /dev/null +++ b/application-quality-reference-deployment/grafana/dashboards/eoap-validator-dashboard.json @@ -0,0 +1,182 @@ +{ + "folderUid": "application-quality-service-reports", + "overwrite": false, + "dashboard": { + "description": "Dashboard displaying the report generated by the [EO AP Validation tool](https://github.com/EOEPCA/app-package-validation).", + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 20, + "links": [ + { + "asDropdown": false, + "icon": "dashboard", + "includeVars": true, + "keepTime": false, + "tags": [ + "pipeline-execution-dashboard" + ], + "targetBlank": false, + "title": "Pipeline Execution Dashboard", + "tooltip": "Go to pipeline execution dashboard", + "type": "dashboards", + "url": "" + } + ], + "panels": [ + { + "gridPos": { + "h": 9, + "w": 7, + "x": 0, + "y": 0 + }, + "id": 1, + "libraryPanel": { + "name": "Pipeline Execution Report Header", + "uid": "pipeline-execution-report-header" + }, + "title": "", + "type": "library-panel-ref" + }, + { + "gridPos": { + "h": 9, + "w": 13, + "x": 7, + "y": 0 + }, + "id": 4, + "libraryPanel": { + "name": "EO AP Validation Report Metadata", + "uid": "eoap-validation-report-metadata" + }, + "title": "EO Application Package Validation Report", + "type": "library-panel-ref" + }, + { + "gridPos": { + "h": 9, + "w": 4, + "x": 20, + "y": 0 + }, + "id": 5, + "libraryPanel": { + "name": "EO AP Validation Report Statistics", + "uid": "eoap-validation-report-statistics" + }, + "title": "Statistics", + "type": "library-panel-ref" + }, + { + "gridPos": { + "h": 13, + "w": 24, + "x": 0, + "y": 9 + }, + "id": 3, + "libraryPanel": { + "name": "EO AP Validation Report Results", + "uid": "eoap-validation-report-results" + }, + "title": "Issues", + "type": "library-panel-ref" + } + ], + "preload": false, + "schemaVersion": 41, + "tags": [], + "templating": { + "list": [ + { + "allowCustomValue": false, + "current": { + "text": "6", + "value": "6" + }, + "datasource": { + "type": "grafana-postgresql-datasource", + "uid": "application-quality-db" + }, + "definition": "SELECT pipeline_id FROM executions_admin WHERE id = $execution_id", + "hide": 2, + "label": "Pipeline ID", + "name": "pipeline_id", + "options": [], + "query": "SELECT pipeline_id FROM executions_admin WHERE id = $execution_id", + "refresh": 1, + "regex": "", + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "Python pipeline", + "value": "Python pipeline" + }, + "datasource": { + "type": "grafana-postgresql-datasource", + "uid": "application-quality-db" + }, + "definition": "SELECT pipeline_name FROM executions_admin WHERE id = $execution_id", + "hide": 2, + "label": "Pipeline Name", + "name": "pipeline_name", + "options": [], + "query": "SELECT pipeline_name FROM executions_admin WHERE id = $execution_id", + "refresh": 1, + "regex": "", + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "6", + "value": "6" + }, + "datasource": { + "type": "grafana-postgresql-datasource", + "uid": "application-quality-db" + }, + "definition": "SELECT run_id FROM reports_admin WHERE id = $report_id", + "hide": 2, + "label": "Execution ID", + "name": "execution_id", + "options": [], + "query": "SELECT run_id FROM reports_admin WHERE id = $report_id", + "refresh": 1, + "regex": "", + "type": "query" + }, + { + "allowCustomValue": false, + "current": { + "text": "2", + "value": "2" + }, + "datasource": { + "type": "grafana-postgresql-datasource", + "uid": "application-quality-db" + }, + "definition": "SELECT id FROM reports_admin WHERE name = 'bandit'", + "hide": 2, + "label": "Report ID", + "name": "report_id", + "options": [], + "query": "SELECT id FROM reports_admin WHERE name = 'bandit'", + "refresh": 1, + "regex": "", + "type": "query" + } + ] + }, + "timepicker": { + "hidden": true + }, + "timezone": "browser", + "title": "EO Application Package Validation Report", + "uid": "default-ap_validator-report" + } +} \ No newline at end of file diff --git a/application-quality-reference-deployment/grafana/dashboards/notebook-bp-validator-dashboard.json b/application-quality-reference-deployment/grafana/dashboards/notebook-bp-validator-dashboard.json index 03b2c02..5ae587f 100644 --- a/application-quality-reference-deployment/grafana/dashboards/notebook-bp-validator-dashboard.json +++ b/application-quality-reference-deployment/grafana/dashboards/notebook-bp-validator-dashboard.json @@ -49,7 +49,7 @@ "id": 3, "libraryPanel": { "name": "Notebook BP Validator Report", - "uid": "dey5uyuuv1ji8e" + "uid": "notebook-bp-validator-report" }, "title": "Notebook BP Validator Report", "type": "library-panel-ref" diff --git a/application-quality-reference-deployment/grafana/dashboards/papermill-dashboard.json b/application-quality-reference-deployment/grafana/dashboards/papermill-dashboard.json new file mode 100644 index 0000000..fd49dbb --- /dev/null +++ b/application-quality-reference-deployment/grafana/dashboards/papermill-dashboard.json @@ -0,0 +1,150 @@ +{ + "folderUid": "application-quality-service-reports", + "overwrite": false, + "dashboard": { + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "id": 17, + "links": [ + { + "asDropdown": false, + "icon": "dashboard", + "includeVars": true, + "keepTime": false, + "tags": [ + "pipeline-execution-dashboard" + ], + "targetBlank": false, + "title": "Pipeline Execution Dashboard", + "tooltip": "Go to pipeline execution dashboard", + "type": "dashboards", + "url": "" + } + ], + "panels": [ + { + "gridPos": { + "h": 12, + "w": 7, + "x": 0, + "y": 0 + }, + "id": 1, + "libraryPanel": { + "name": "Pipeline Execution Report Header", + "uid": "pipeline-execution-report-header" + }, + "title": "", + "type": "library-panel-ref" + }, + { + "gridPos": { + "h": 12, + "w": 17, + "x": 7, + "y": 0 + }, + "id": 772, + "libraryPanel": { + "name": "Papermill Report Metadata", + "uid": "papermill-report-metadata" + }, + "title": "Papermill Execution Properties", + "type": "library-panel-ref" + }, + { + "gridPos": { + "h": 10, + "w": 24, + "x": 0, + "y": 12 + }, + "id": 773, + "libraryPanel": { + "name": "Papermill Notebook Details", + "uid": "papermill-report-notebook" + }, + "title": "Notebook Outputs", + "type": "library-panel-ref" + } + ], + "preload": false, + "schemaVersion": 41, + "tags": [], + "templating": { + "list": [ + { + "datasource": { + "type": "grafana-postgresql-datasource", + "uid": "application-quality-db" + }, + "definition": "SELECT pipeline_id FROM executions_admin WHERE id = $execution_id", + "hide": 2, + "label": "Pipeline ID", + "name": "pipeline_id", + "options": [], + "query": "SELECT pipeline_id FROM executions_admin WHERE id = $execution_id", + "refresh": 1, + "regex": "", + "type": "query" + }, + { + "current": { + "text": "Notebook execution pipeline", + "value": "Notebook execution pipeline" + }, + "datasource": { + "type": "grafana-postgresql-datasource", + "uid": "application-quality-db" + }, + "definition": "SELECT pipeline_name FROM executions_admin WHERE id = $execution_id", + "hide": 2, + "label": "Pipeline Name", + "name": "pipeline_name", + "options": [], + "query": "SELECT pipeline_name FROM executions_admin WHERE id = $execution_id", + "refresh": 1, + "regex": "", + "type": "query" + }, + { + "datasource": { + "type": "grafana-postgresql-datasource", + "uid": "application-quality-db" + }, + "definition": "SELECT run_id FROM reports_admin WHERE id = $report_id", + "hide": 2, + "label": "Execution ID", + "name": "execution_id", + "options": [], + "query": "SELECT run_id FROM reports_admin WHERE id = $report_id", + "refresh": 1, + "regex": "", + "type": "query" + }, + { + "datasource": { + "type": "grafana-postgresql-datasource", + "uid": "application-quality-db" + }, + "definition": "SELECT id FROM reports_admin WHERE name = 'bandit'", + "hide": 2, + "label": "Report ID", + "name": "report_id", + "options": [], + "query": "SELECT id FROM reports_admin WHERE name = 'bandit'", + "refresh": 1, + "regex": "", + "type": "query" + } + ] + }, + "timepicker": { + "hidden": true + }, + "timezone": "browser", + "title": "Papermill Report", + "uid": "default-papermill-report" + } +} \ No newline at end of file diff --git a/application-quality-reference-deployment/grafana/dashboards/pipeline-execution.json b/application-quality-reference-deployment/grafana/dashboards/pipeline-execution.json index 7610c48..63cfba5 100644 --- a/application-quality-reference-deployment/grafana/dashboards/pipeline-execution.json +++ b/application-quality-reference-deployment/grafana/dashboards/pipeline-execution.json @@ -38,7 +38,7 @@ "showLineNumbers": false, "showMiniMap": false }, - "content": "# Pipeline Execution\n\n* Pipeline: **${pipeline_name}** (ID: ${pipeline_id})\n* Execution ID: **${execution_id}**", + "content": "# ${pipeline_name}\n## Pipeline Execution\n* Pipeline ID: **${pipeline_id}**\n* Pipeline execution ID: **${execution_id}**", "mode": "markdown" }, "pluginVersion": "12.0.1", diff --git a/application-quality-reference-deployment/grafana/library-panels/eoap-validation-report-metadata.json b/application-quality-reference-deployment/grafana/library-panels/eoap-validation-report-metadata.json new file mode 100644 index 0000000..4eb321b --- /dev/null +++ b/application-quality-reference-deployment/grafana/library-panels/eoap-validation-report-metadata.json @@ -0,0 +1,138 @@ +{ + "folderUid": "application-quality-service-reports", + "uid": "eoap-validation-report-metadata", + "name": "EO AP Validation Report Metadata", + "kind": 1, + "type": "table", + "description": "", + "model": { + "datasource": { + "type": "grafana-postgresql-datasource", + "uid": "application-quality-db" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Artifact Name" + }, + "properties": [ + { + "id": "custom.width", + "value": 197 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Property" + }, + "properties": [ + { + "id": "custom.width", + "value": 367 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "output" + }, + "properties": [ + { + "id": "custom.width", + "value": 258 + } + ] + } + ] + }, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "enablePagination": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": false, + "sortBy": [] + }, + "pluginVersion": "12.0.1", + "targets": [ + { + "datasource": { + "type": "grafana-postgresql-datasource", + "uid": "application-quality-db" + }, + "editorMode": "code", + "format": "table", + "hide": false, + "rawQuery": true, + "rawSql": "SELECT\n 'Value' AS \"Property\",\n instance AS \"File\",\n output -> 'valid' AS \"Is Valid\",\n -- created_at AS \"Report Time\",\n TO_CHAR(\n created_at,\n 'DD Month YYYY at HH24:MI:SS'\n ) AS \"Report Time\",\n jsonb_array_length(output -> 'issues') AS \"Outputs\"\nFROM\n reports_admin\nWHERE\n id = ${report_id}\n", + "refId": "A", + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + } + } + ], + "title": "EO Application Package Validation Report", + "transformations": [ + { + "id": "transpose", + "options": { + "firstFieldName": "Property", + "restFieldsName": "Value" + } + } + ], + "type": "table" + } +} \ No newline at end of file diff --git a/application-quality-reference-deployment/grafana/library-panels/eoap-validation-report-results.json b/application-quality-reference-deployment/grafana/library-panels/eoap-validation-report-results.json new file mode 100644 index 0000000..0de32e4 --- /dev/null +++ b/application-quality-reference-deployment/grafana/library-panels/eoap-validation-report-results.json @@ -0,0 +1,259 @@ +{ + "folderUid": "application-quality-service-reports", + "uid": "eoap-validation-report-results", + "name": "EO AP Validation Report Results", + "kind": 1, + "type": "table", + "description": "", + "model": { + "datasource": { + "type": "grafana-postgresql-datasource", + "uid": "application-quality-db" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "transparent", + "mode": "fixed" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto", + "wrapText": false + }, + "filterable": false, + "inspect": false, + "minWidth": 80 + }, + "fieldMinMax": false, + "mappings": [ + { + "options": { + "error": { + "color": "dark-red", + "index": 0, + "text": "Error" + }, + "hint": { + "color": "semi-dark-blue", + "index": 1, + "text": "Hint" + }, + "note": { + "color": "dark-green", + "index": 2, + "text": "Note" + } + }, + "type": "value" + } + ], + "noValue": "-", + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "transparent", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Requirement ID" + }, + "properties": [ + { + "id": "custom.width", + "value": 134 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Type" + }, + "properties": [ + { + "id": "custom.width", + "value": 80 + }, + { + "id": "custom.cellOptions", + "value": { + "type": "color-background" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Issue" + }, + "properties": [ + { + "id": "custom.width", + "value": 889 + }, + { + "id": "custom.inspect", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Req ID" + }, + "properties": [ + { + "id": "custom.width", + "value": 74 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Req ID" + }, + "properties": [ + { + "id": "links", + "value": [ + { + "targetBlank": true, + "title": "OGC Best Practice", + "url": "https://docs.ogc.org/bp/20-089r1.html" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Requirement" + }, + "properties": [ + { + "id": "custom.inspect", + "value": true + } + ] + } + ] + }, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "enablePagination": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "frameIndex": 1, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "12.0.1", + "targets": [ + { + "datasource": { + "type": "grafana-postgresql-datasource", + "uid": "application-quality-db" + }, + "editorMode": "code", + "format": "table", + "hide": false, + "rawQuery": true, + "rawSql": "SELECT\n issues ->> 'type' AS \"Type\",\n issues ->> 'message' AS \"Issue\",\n issues ->> 'req' AS \"Requirement ID\"\nFROM\n (\n SELECT\n jsonb_array_elements(output :: jsonb -> 'issues') AS issues\n FROM\n reports_admin\n WHERE\n id = ${report_id}\n ) AS sub;", + "refId": "A", + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + } + }, + { + "datasource": { + "type": "grafana-postgresql-datasource", + "uid": "application-quality-db" + }, + "editorMode": "code", + "format": "table", + "hide": false, + "rawQuery": true, + "rawSql": "SELECT\n req ->> 'key' AS \"Requirement ID\",\n req ->> 'value' AS \"Requirement\"\nFROM\n (\n SELECT\n to_jsonb(jsonb_each(output :: jsonb -> 'requirements')) AS req\n FROM\n reports_admin\n WHERE\n id = ${report_id}\n ) AS sub;", + "refId": "B", + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + } + } + ], + "title": "Output", + "transformations": [ + { + "id": "joinByField", + "options": { + "byField": "Requirement ID", + "mode": "outer" + } + }, + { + "id": "organize", + "options": { + "excludeByName": {}, + "includeByName": {}, + "indexByName": { + "Issue": 1, + "Requirement": 3, + "Requirement ID": 2, + "Type": 0 + }, + "renameByName": { + "Requirement ID": "Req ID" + } + } + } + ], + "type": "table" + } +} \ No newline at end of file diff --git a/application-quality-reference-deployment/grafana/library-panels/eoep-validation-report-statistics.json b/application-quality-reference-deployment/grafana/library-panels/eoep-validation-report-statistics.json new file mode 100644 index 0000000..e9859f4 --- /dev/null +++ b/application-quality-reference-deployment/grafana/library-panels/eoep-validation-report-statistics.json @@ -0,0 +1,159 @@ +{ + "folderUid": "application-quality-service-reports", + "uid": "eoap-validation-report-statistics", + "name": "EO AP Validation Report Statistics", + "kind": 1, + "type": "piechart", + "description": "", + "model": { + "datasource": { + "type": "grafana-postgresql-datasource", + "uid": "application-quality-db" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "palette-classic" + }, + "custom": { + "hideFrom": { + "legend": false, + "tooltip": false, + "viz": false + } + }, + "fieldMinMax": false, + "mappings": [ + { + "options": { + "error": { + "index": 0, + "text": "Errors" + }, + "hint": { + "index": 1, + "text": "Hints" + }, + "note": { + "index": 2, + "text": "Note" + } + }, + "type": "value" + } + ] + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Errors" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "semi-dark-red", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Hints" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "semi-dark-blue", + "mode": "fixed" + } + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Note" + }, + "properties": [ + { + "id": "color", + "value": { + "fixedColor": "semi-dark-green", + "mode": "fixed" + } + } + ] + } + ] + }, + "options": { + "displayLabels": [ + "name", + "value" + ], + "legend": { + "displayMode": "table", + "placement": "bottom", + "showLegend": true, + "sortBy": "Value", + "sortDesc": true, + "values": [ + "percent", + "value" + ] + }, + "pieType": "pie", + "reduceOptions": { + "calcs": [ + "lastNotNull" + ], + "fields": "", + "values": true + }, + "tooltip": { + "hideZeros": false, + "mode": "single", + "sort": "none" + } + }, + "pluginVersion": "12.0.1", + "targets": [ + { + "datasource": { + "type": "grafana-postgresql-datasource", + "uid": "application-quality-db" + }, + "editorMode": "code", + "format": "table", + "rawQuery": true, + "rawSql": "SELECT\n severity,\n COUNT(*) AS total_count\nFROM\n (\n SELECT\n jsonb_array_elements(output :: jsonb -> 'issues') ->> 'type' AS severity\n FROM\n reports_admin\n WHERE\n id = ${report_id}\n ) AS sub\nGROUP BY\n severity\nORDER BY\n CASE severity\n WHEN 'Error' THEN 1\n WHEN 'Hint' THEN 2\n ELSE 3\n END;", + "refId": "A", + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + } + } + ], + "title": "Statistics", + "type": "piechart" + } +} \ No newline at end of file diff --git a/application-quality-reference-deployment/grafana/library-panels/papermill-report-metadata.json b/application-quality-reference-deployment/grafana/library-panels/papermill-report-metadata.json new file mode 100644 index 0000000..17ec1cf --- /dev/null +++ b/application-quality-reference-deployment/grafana/library-panels/papermill-report-metadata.json @@ -0,0 +1,126 @@ +{ + "folderUid": "application-quality-service-reports", + "uid": "papermill-report-metadata", + "name": "Papermill Report Metadata", + "kind": 1, + "type": "table", + "description": "", + "model": { + "datasource": { + "type": "grafana-postgresql-datasource", + "uid": "application-quality-db" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "mode": "thresholds" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto" + }, + "inspect": false + }, + "mappings": [], + "thresholds": { + "mode": "absolute", + "steps": [ + { + "color": "green", + "value": null + }, + { + "color": "red", + "value": 80 + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Artifact Name" + }, + "properties": [ + { + "id": "custom.width", + "value": 197 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Property" + }, + "properties": [ + { + "id": "custom.width", + "value": 367 + } + ] + } + ] + }, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "enablePagination": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "12.0.1", + "targets": [ + { + "datasource": { + "type": "grafana-postgresql-datasource", + "uid": "application-quality-db" + }, + "editorMode": "code", + "format": "table", + "hide": false, + "rawQuery": true, + "rawSql": "SELECT\n 'Value' AS \"Property\", -- Becomes table headers\n -- metadata -> 'papermill' ->> 'input_path' AS \"Notebook\",\n SUBSTRING(\n input_path, \n POSITION('/./' IN input_path) + 3 -- Start after the last '/' in '/./'\n ) AS \"Notebook\",\n metadata -> 'papermill' ->> 'parameters' AS \"Parameters\",\n metadata -> 'papermill' ->> 'default_parameters' AS \"Default parameters\",\n metadata -> 'papermill' ->> 'environment_variables' AS \"environment variables\",\n metadata -> 'papermill' ->> 'version' AS \"Papermill version\",\n -- metadata -> 'papermill' ->> 'start_time' AS \"Start\",\n TO_CHAR(\n TO_TIMESTAMP(\n (metadata -> 'papermill' ->> 'start_time'),\n 'YYYY-MM-DD\"T\"HH24:MI:SS'\n ),\n 'DD Month YYYY at HH24:MI:SS'\n ) AS \"Start time\",\n -- metadata -> 'papermill' ->> 'end_time' AS \"End\",\n TO_CHAR(\n TO_TIMESTAMP(\n (metadata -> 'papermill' ->> 'end_time'),\n 'YYYY-MM-DD\"T\"HH24:MI:SS'\n ),\n 'DD Month YYYY at HH24:MI:SS'\n ) AS \"End time\",\n metadata -> 'papermill' ->> 'duration' AS \"Duration (s)\",\n metadata -> 'kernelspec' ->> 'name' AS \"Kernel name\",\n metadata -> 'kernelspec' ->> 'display_name' AS \"Kernel display name\",\n metadata -> 'kernelspec' ->> 'language' AS \"Kernel language\",\n metadata -> 'language_info' ->> 'version' AS \"Kernel language version\",\n metadata -> 'papermill' ->> 'exception' AS \"Exception\"\nFROM\n (\n SELECT\n (output :: jsonb -> 'metadata') AS metadata,\n (output :: jsonb -> 'metadata' -> 'papermill' ->> 'input_path') AS input_path\n FROM\n reports_admin\n WHERE\n id = ${report_id}\n ) AS sub;", + "refId": "A", + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + } + } + ], + "title": "Papermill Execution Properties", + "transformations": [ + { + "id": "transpose", + "options": { + "firstFieldName": "Property", + "restFieldsName": "Value" + } + } + ], + "type": "table" + } +} \ No newline at end of file diff --git a/application-quality-reference-deployment/grafana/library-panels/papermill-report-notebook.json b/application-quality-reference-deployment/grafana/library-panels/papermill-report-notebook.json new file mode 100644 index 0000000..4b8da29 --- /dev/null +++ b/application-quality-reference-deployment/grafana/library-panels/papermill-report-notebook.json @@ -0,0 +1,289 @@ +{ + "folderUid": "application-quality-service-reports", + "uid": "papermill-report-notebook", + "name": "Papermill Notebook Outputs", + "kind": 1, + "type": "table", + "description": "", + "model": { + "datasource": { + "type": "grafana-postgresql-datasource", + "uid": "application-quality-db" + }, + "description": "", + "fieldConfig": { + "defaults": { + "color": { + "fixedColor": "transparent", + "mode": "fixed" + }, + "custom": { + "align": "auto", + "cellOptions": { + "type": "auto", + "wrapText": false + }, + "filterable": false, + "inspect": false, + "minWidth": 80 + }, + "fieldMinMax": false, + "mappings": [], + "noValue": "-", + "thresholds": { + "mode": "percentage", + "steps": [ + { + "color": "transparent", + "value": null + } + ] + } + }, + "overrides": [ + { + "matcher": { + "id": "byName", + "options": "Cell Type" + }, + "properties": [ + { + "id": "custom.filterable", + "value": true + }, + { + "id": "custom.width", + "value": 125 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Status" + }, + "properties": [ + { + "id": "custom.filterable", + "value": true + }, + { + "id": "custom.width", + "value": 107 + }, + { + "id": "custom.cellOptions", + "value": { + "applyToRow": false, + "mode": "basic", + "type": "color-background", + "wrapText": false + } + }, + { + "id": "mappings", + "value": [ + { + "options": { + "completed": { + "color": "green", + "index": 0, + "text": "Completed" + }, + "failed": { + "color": "semi-dark-red", + "index": 1, + "text": "Failed" + }, + "pending": { + "color": "transparent", + "index": 2, + "text": "Pending" + } + }, + "type": "value" + } + ] + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Error" + }, + "properties": [ + { + "id": "custom.filterable", + "value": true + }, + { + "id": "custom.width", + "value": 104 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Duration [s]" + }, + "properties": [ + { + "id": "custom.width", + "value": 121 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Start time" + }, + "properties": [ + { + "id": "custom.width", + "value": 106 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "End time" + }, + "properties": [ + { + "id": "custom.width", + "value": 98 + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Exec Count" + }, + "properties": [ + { + "id": "custom.width", + "value": 100 + }, + { + "id": "noValue" + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Outputs" + }, + "properties": [ + { + "id": "custom.inspect", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Output Type" + }, + "properties": [ + { + "id": "custom.width", + "value": 133 + }, + { + "id": "custom.filterable", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Cell Content" + }, + "properties": [ + { + "id": "custom.inspect", + "value": true + } + ] + }, + { + "matcher": { + "id": "byName", + "options": "Output Data" + }, + "properties": [ + { + "id": "custom.inspect", + "value": true + } + ] + } + ] + }, + "options": { + "cellHeight": "sm", + "footer": { + "countRows": false, + "enablePagination": false, + "fields": "", + "reducer": [ + "sum" + ], + "show": false + }, + "showHeader": true, + "sortBy": [] + }, + "pluginVersion": "12.0.1", + "targets": [ + { + "datasource": { + "type": "grafana-postgresql-datasource", + "uid": "application-quality-db" + }, + "editorMode": "code", + "format": "table", + "hide": false, + "rawQuery": true, + "rawSql": "SELECT\n cell ->> 'cell_type' AS \"Cell Type\",\n cell ->> 'execution_count' AS \"Exec Count\",\n -- cell -> 'metadata' -> 'papermill' ->> 'start_time' AS \"Start\",\n TO_CHAR(\n TO_TIMESTAMP(\n (cell -> 'metadata' -> 'papermill' ->> 'start_time'),\n 'YYYY-MM-DD\"T\"HH24:MI:SS'\n ),\n 'HH24:MI:SS'\n ) AS \"Start time\",\n -- cell -> 'metadata' -> 'papermill' ->> 'end_time' AS \"End\",\n TO_CHAR(\n TO_TIMESTAMP(\n (cell -> 'metadata' -> 'papermill' ->> 'end_time'),\n 'YYYY-MM-DD\"T\"HH24:MI:SS'\n ),\n 'HH24:MI:SS'\n ) AS \"End time\",\n\n cell -> 'metadata' -> 'papermill' ->> 'duration' AS \"Duration [s]\",\n cell -> 'metadata' -> 'papermill' ->> 'status' AS \"Status\",\n -- cell -> 'metadata' -> 'papermill' ->> 'exception' AS \"Error\",\n -- cell -> 'source' AS \"Cell Content\",\n array_to_string(ARRAY(SELECT jsonb_array_elements_text(cell -> 'source')), '') AS \"Cell Content\",\n CONCAT (cell -> 'outputs' -> 0 ->> 'output_type', ' ', cell -> 'outputs' -> 0 ->> 'name') AS \"Output Type\",\n -- cell -> 'outputs' -> 0 -> 'data' AS \"Output Data\",\n -- cell -> 'outputs' -> 0 -> 'text' ->> 0 AS \"Output Text\",\n -- Remove ANSI color codes (at least required for displaying tracebacks)\n regexp_replace(\n CONCAT(\n array_to_string(ARRAY(SELECT jsonb_array_elements_text(cell -> 'outputs' -> 0 -> 'text')), ''),\n array_to_string(ARRAY(SELECT jsonb_array_elements_text(cell -> 'outputs' -> 0 -> 'data' -> 'text/html')), ''),\n array_to_string(ARRAY(SELECT jsonb_array_elements_text(cell -> 'outputs' -> 0 -> 'data' -> 'text/plain')), ''),\n array_to_string(ARRAY(SELECT jsonb_array_elements_text(cell -> 'outputs' -> 0 -> 'traceback')), E'\\n')\n ),\n E'\\\\x1b\\\\[[0-9;]*[a-zA-Z]', '', 'g') AS \"Outputs\"\n -- CONCAT(cell -> 'outputs' -> 0 ->> 'data', cell -> 'outputs' -> 0 ->> 'text') AS \"Outputs\"\n -- cell ->> 'outputs' AS \"Outputs\"\nFROM\n (\n SELECT\n jsonb_array_elements(output :: jsonb -> 'cells') AS cell\n FROM\n reports_admin\n WHERE\n id = ${report_id}\n ) AS sub;", + "refId": "A", + "sql": { + "columns": [ + { + "parameters": [], + "type": "function" + } + ], + "groupBy": [ + { + "property": { + "type": "string" + }, + "type": "groupBy" + } + ], + "limit": 50 + } + } + ], + "title": "Notebook Details", + "transformations": [ + { + "id": "formatString", + "options": { + "outputFormat": "Sentence Case", + "stringField": "Cell Type" + } + } + ], + "type": "table" + } +} \ No newline at end of file diff --git a/application-quality-reference-deployment/grafana/library-panels/pipeline-execution-report-header.json b/application-quality-reference-deployment/grafana/library-panels/pipeline-execution-report-header.json index bd65ff5..86cb3d4 100644 --- a/application-quality-reference-deployment/grafana/library-panels/pipeline-execution-report-header.json +++ b/application-quality-reference-deployment/grafana/library-panels/pipeline-execution-report-header.json @@ -13,7 +13,7 @@ "showLineNumbers": false, "showMiniMap": false }, - "content": "# Pipeline Execution Report\n\nSee below the details of the execution report ...\n\n* Pipeline: **${pipeline_name}** (ID: ${pipeline_id})\n* Pipeline execution ID: [**${execution_id}**](/d/pipeline-execution/pipeline-execution?)\n* Execution report ID: **${report_id}**", + "content": "# **${pipeline_name}**\n## Execution Report\n* Pipeline ID: **${pipeline_id}**\n* Pipeline execution ID: **${execution_id}**\n* Execution report ID: **${report_id}**", "mode": "markdown" }, "pluginVersion": "12.0.1", diff --git a/application-quality-reference-deployment/grafana/library-panels/pipeline-execution-reports-list.json b/application-quality-reference-deployment/grafana/library-panels/pipeline-execution-reports-list.json index 250dba9..66e1f5b 100644 --- a/application-quality-reference-deployment/grafana/library-panels/pipeline-execution-reports-list.json +++ b/application-quality-reference-deployment/grafana/library-panels/pipeline-execution-reports-list.json @@ -91,7 +91,7 @@ "format": "table", "hide": false, "rawQuery": true, - "rawSql": "SELECT name AS \"Tool\", created_at AS \"Created\", id AS \"Report\" FROM reports_admin WHERE run_id = ${execution_id:int}", + "rawSql": "SELECT name AS \"Tool\", instance AS \"Instance\", created_at AS \"Created\", id AS \"Report\" FROM reports_admin WHERE run_id = ${execution_id:int}", "refId": "A", "sql": { "columns": [ diff --git a/application-quality-reference-deployment/grafana/library-panels/pipeline-executions-list.json b/application-quality-reference-deployment/grafana/library-panels/pipeline-executions-list.json index 2a44569..dcb9e39 100644 --- a/application-quality-reference-deployment/grafana/library-panels/pipeline-executions-list.json +++ b/application-quality-reference-deployment/grafana/library-panels/pipeline-executions-list.json @@ -30,7 +30,7 @@ "mode": "absolute", "steps": [ { - "color": "green", + "color": "text", "value": null } ] @@ -97,6 +97,42 @@ { "id": "custom.filterable", "value": true + }, + { + "id": "custom.cellOptions", + "value": { + "type": "color-text" + } + }, + { + "id": "mappings", + "value": [ + { + "options": { + "Active": { + "color": "purple", + "index": 3 + }, + "Failed": { + "color": "semi-dark-red", + "index": 2 + }, + "Running": { + "color": "semi-dark-yellow", + "index": 1 + }, + "Starting": { + "color": "semi-dark-blue", + "index": 4 + }, + "Succeeded": { + "color": "semi-dark-green", + "index": 0 + } + }, + "type": "value" + } + ] } ] } diff --git a/application-quality-reference-deployment/values.yaml b/application-quality-reference-deployment/values.yaml index 54d2c9b..4692992 100644 --- a/application-quality-reference-deployment/values.yaml +++ b/application-quality-reference-deployment/values.yaml @@ -27,13 +27,13 @@ application-quality: api: image: repository: eoepca/eoepca-appquality-backend - tag: 2.0.0-rc3 + tag: 2.0.0-rc4 # Application Quality frontend web: image: repository: eoepca/eoepca-appquality-frontend - tag: 2.0.0-rc3 + tag: 2.0.0-rc4 publicUrl: "https://application-quality.develop.eoepca.org" persistence: @@ -66,13 +66,27 @@ application-quality: oidc: enabled: true + realm: eoepca realmBaseUrl: https://iam-auth.apx.develop.eoepca.org/realms/eoepca - clientId: application-quality-bb - clientSecret: "" + # clientId: application-quality-bb + # clientSecret: "" postLogoutRedirectUrl: https://application-quality.develop.eoepca.org/ loginRedirectUrl: https://application-quality.develop.eoepca.org/ rpRedirectUri: https://application-quality.develop.eoepca.org/ + iam_provisioning: + enabled: false + # keycloakProviderConfig: keycloak-provider-config + # clientName: Application Quality BB + # clientDescription: Application Quality Web Portal and Grafana OIDC + # clientSecretName: application-quality-iam-client + # clientSecretKey: client_secret + # clientEnabled: true + # namespace: iam-management + # accessType: PUBLIC + # httpScheme: https + # initialiseTestUsers: false + sonarqube: enabled: false serverUrl: application-quality-sonarqube-sonarqube.application-quality.svc.cluster.local:9000 @@ -95,6 +109,19 @@ application-quality: type: ClusterIP port: 80 + notifications: + enabled: true + middleware: "knative" + brokerName: "primary" + brokerNamespace: "default" + # Also used as type prefix for incoming notifications + channelPrefix: "org.eoepca.application-quality" + responseSource: "/eoepca/application-quality" + responseTypePrefix: "org.eoepca.application-quality.response" + + automations: + enabled: false + # https://github.com/grafana/helm-charts/blob/main/charts/grafana/values.yaml grafana: rbac: @@ -295,13 +322,15 @@ grafana: name: "EOEPCA+ IAM" #client_id: -- Found in GF_AUTH_GENERIC_OAUTH_CLIENT_ID #client_secret: -- Found in GF_AUTH_GENERIC_OAUTH_CLIENT_SECRET - scopes: openid email profile + scopes: openid email profile roles auth_url: https://iam-auth.develop.eoepca.org/realms/eoepca/protocol/openid-connect/auth token_url: https://iam-auth.develop.eoepca.org/realms/eoepca/protocol/openid-connect/token api_url: https://iam-auth.develop.eoepca.org/realms/eoepca/protocol/openid-connect/userinfo use_pkce: true use_refresh_token: true signout_redirect_url: https://iam-auth.develop.eoepca.org/realms/eoepca/protocol/openid-connect/logout?client_id=application-quality-bb&response_type=code&post_logout_redirect_uri=https://application-quality.develop.eoepca.org/dashboards/ + # Client roles created in iam-client-provisioning.yaml + role_attribute_path: "contains(roles[*], 'application-quality-grafana-admin') && 'Admin' || contains(roles[*], 'application-quality-grafana-editor') && 'Editor' || 'Viewer'" server: root_url: https://application-quality.develop.eoepca.org/dashboards diff --git a/helm/templates/api-configmap.yaml b/helm/templates/api-configmap.yaml index d9534e6..8264389 100644 --- a/helm/templates/api-configmap.yaml +++ b/helm/templates/api-configmap.yaml @@ -4,13 +4,14 @@ metadata: name: {{ include "application-quality.fullname" . }}-api-env data: PUBLIC_URL: {{ .Values.web.publicUrl }} + ADDITIONAL_ALLOWED_HOSTS: {{ .Values.api.additionalAllowedHosts | quote }} {{- if .Values.vclusters.enabled }} BACKEND_SERVICE_HOST: backend-service.default.svc.local.cluster {{- else }} BACKEND_SERVICE_HOST: {{ include "application-quality.fullname" . }}-api.{{ .Release.Namespace }}.svc.cluster.local {{- end }} - BACKEND_SERVICE_PORT: {{ .Values.api.containerPort | quote }} + BACKEND_SERVICE_PORT: {{ .Values.api.servicePort | quote }} BACKEND_SERVICE_ADMIN_USER: {{ .Values.api.adminUser | quote }} BACKEND_SERVICE_ADMIN_PASSWORD: {{ .Values.api.adminPassword | quote }} @@ -34,6 +35,7 @@ data: AQBB_MAXCORES: {{ .Values.calrissian.maxCores | quote }} AQBB_MAXRAM: {{ .Values.calrissian.maxRam | quote }} + # OpenID Connect OIDC_ENABLED: {{ .Values.oidc.enabled | default false | quote }} {{- if .Values.oidc.enabled }} # From Sealed Secret: OIDC_RP_CLIENT_ID: {{ .Values.oidc.clientId }} @@ -57,6 +59,7 @@ data: SONARQUBE_SERVER: {{ .Values.sonarqube.serverUrl }} SONARQUBE_TOKEN: {{ .Values.sonarqube.accessToken }} {{- end }} + # vCluster SHARED_VCLUSTER_ENABLED: {{ .Values.vclusters.enabled | default false | quote }} {{- if .Values.vclusters.enabled }} @@ -72,4 +75,13 @@ data: {{- if .Values.workspace.vcluster.enabled }} WORKSPACE_VCLUSTER_REQUIRED: {{ .Values.workspace.vcluster.required | default false | quote }} WORKSPACE_API_SERVICE_URL: {{ .Values.workspace.apiServiceUrl | default "" }} - {{- end }} \ No newline at end of file + {{- end }} + + # Notifications + NOTIF_ENABLED: {{ .Values.notifications.enabled | default false | quote }} + {{- if and .Values.notifications.enabled (eq .Values.notifications.middleware "knative") }} + NOTIF_MIDDLEWARE: {{ .Values.notifications.middleware }} + NOTIF_CHANNEL_PREFIX: {{ .Values.notifications.channelPrefix }} + NOTIF_RESPONSE_SOURCE: {{ .Values.notifications.responseSource }} + NOTIF_RESPONSE_TYPE_PREFIX: {{ .Values.notifications.responseTypePrefix }} + {{- end }} diff --git a/helm/templates/api-notifications.yaml b/helm/templates/api-notifications.yaml new file mode 100644 index 0000000..e09cef8 --- /dev/null +++ b/helm/templates/api-notifications.yaml @@ -0,0 +1,26 @@ +{{- if and .Values.notifications.enabled (eq .Values.notifications.middleware "knative")}} +apiVersion: eventing.knative.dev/v1 +kind: Trigger +metadata: + name: {{ .Values.notifications.channelPrefix }}.events + # The Trigger must be in the same namespace as the Broker + namespace: {{ .Values.notifications.brokerNamespace }} +spec: + broker: {{ .Values.notifications.brokerName }} + # Filter dialects: https://knative.dev/docs/eventing/triggers/#supported-filter-dialects + filters: + - any: + - prefix: + type: {{ .Values.notifications.channelPrefix }}.probes. + - prefix: + type: {{ .Values.notifications.channelPrefix }}.events. + subscriber: + ref: + # If using a Knative Service, the port is deduced from its definition. + # If using a Kubernetes Service, the port must be 80. + apiVersion: v1 + kind: Service + name: {{ include "application-quality.fullname" . }}-api + namespace: {{ .Release.Namespace }} + uri: /api/events/ +{{- end }} \ No newline at end of file diff --git a/helm/templates/iam-client-provisioning.yaml b/helm/templates/iam-client-provisioning.yaml new file mode 100644 index 0000000..37d5c51 --- /dev/null +++ b/helm/templates/iam-client-provisioning.yaml @@ -0,0 +1,142 @@ +{{- if and .Values.oidc.enabled .Values.oidc.iam_provisioning.enabled }} + +apiVersion: openidclient.keycloak.m.crossplane.io/v1alpha1 +kind: Client +metadata: + name: {{ .Values.oidc.clientId }} + namespace: {{ .Values.oidc.iam_provisioning.namespace }} +spec: + forProvider: + realmId: {{ .Values.oidc.realm }} + clientId: {{ .Values.oidc.clientId }} + name: {{ .Values.oidc.iam_provisioning.clientName }} + description: {{ .Values.oidc.iam_provisioning.clientDescription }} + enabled: {{ .Values.oidc.iam_provisioning.clientEnabled }} + accessType: {{ .Values.oidc.iam_provisioning.accessType }} + rootUrl: {{ .Values.oidc.loginRedirectUrl }} + baseUrl: {{ .Values.oidc.loginRedirectUrl }} + adminUrl: {{ .Values.oidc.loginRedirectUrl }} + fullScopeAllowed: true + serviceAccountsEnabled: false + directAccessGrantsEnabled: true + standardFlowEnabled: true + implicitFlowEnabled: false + oauth2DeviceAuthorizationGrantEnabled: true + useRefreshTokens: true + validRedirectUris: + - "/*" + webOrigins: + - "/*" + clientSecretSecretRef: + # The Secret used by the Application Quality backend/api could also be used here + name: {{ .Values.oidc.iam_provisioning.clientSecretName }} + key: {{ .Values.oidc.iam_provisioning.clientSecretKey }} + # namespace: {{ .Release.Namespace }} + providerConfigRef: + name: {{ .Values.oidc.iam_provisioning.keycloakProviderConfig }} + kind: ProviderConfig + +--- + +kind: Role +metadata: + name: {{ .Values.oidc.clientId }}-grafana-viewer + namespace: {{ .Values.oidc.iam_provisioning.namespace }} +spec: + forProvider: + # Used in Value grafana.ini.auth.generic_oauth.role_attribute_path + name: application-quality-grafana-viewer + realmId: {{ .Values.oidc.realm }} + clientIdRef: + name: {{ .Values.oidc.clientId }} + description: "Viewer role for {{ .Values.oidc.clientId }} dashboards" + providerConfigRef: + name: {{ .Values.oidc.iam_provisioning.keycloakProviderConfig }} + kind: ProviderConfig + +--- + +kind: Role +metadata: + name: {{ .Values.oidc.clientId }}-grafana-editor + namespace: {{ .Values.oidc.iam_provisioning.namespace }} +spec: + forProvider: + # Used in Value grafana.ini.auth.generic_oauth.role_attribute_path + name: application-quality-grafana-editor + realmId: {{ .Values.oidc.realm }} + clientIdRef: + name: {{ .Values.oidc.clientId }} + description: "Editor role for {{ .Values.oidc.clientId }} dashboards" + providerConfigRef: + name: {{ .Values.oidc.iam_provisioning.keycloakProviderConfig }} + kind: ProviderConfig + +--- + +kind: Role +metadata: + name: {{ .Values.oidc.clientId }}-grafana-admin + namespace: {{ .Values.oidc.iam_provisioning.namespace }} +spec: + forProvider: + # Used in Value grafana.ini.auth.generic_oauth.role_attribute_path + name: application-quality-grafana-admin + realmId: {{ .Values.oidc.realm }} + clientIdRef: + name: {{ .Values.oidc.clientId }} + description: "Admin role for {{ .Values.oidc.clientId }} dashboards" + providerConfigRef: + name: {{ .Values.oidc.iam_provisioning.keycloakProviderConfig }} + kind: ProviderConfig + +--- + +apiVersion: openidclient.keycloak.m.crossplane.io/v1alpha1 +kind: ClientDefaultScopes +metadata: + name: {{ .Values.oidc.clientId }}-default-scopes + namespace: {{ .Values.oidc.iam_provisioning.namespace }} +spec: + forProvider: + clientIdRef: + name: {{ .Values.oidc.clientId }} + defaultScopes: + - openid + - profile + - email + - roles + realmId: eoepca + initProvider: {} + providerConfigRef: + name: {{ .Values.oidc.iam_provisioning.keycloakProviderConfig }} + kind: ProviderConfig + +--- + +apiVersion: client.keycloak.m.crossplane.io/v1alpha1 +kind: ProtocolMapper +metadata: + name: {{ .Values.oidc.clientId }}-roles-in-tokens + namespace: {{ .Values.oidc.iam_provisioning.namespace }} +spec: + forProvider: + clientIdRef: + name: {{ .Values.oidc.clientId }} + realmId: {{ .Values.oidc.realm }} + name: "client-roles-mapper" + protocol: "openid-connect" + protocolMapper: "oidc-usermodel-client-role-mapper" + config: { + "multivalued": "true", + "claim.name": "roles", + "jsonType.label": "String", + "id.token.claim": "true", + "access.token.claim": "true", + "userinfo.token.claim": "true", + } + providerConfigRef: + name: {{ .Values.oidc.iam_provisioning.keycloakProviderConfig }} + kind: ProviderConfig + +{{- end }} \ No newline at end of file diff --git a/helm/values.yaml b/helm/values.yaml index 6dd1b99..5a29ba6 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -16,11 +16,12 @@ web: pullPolicy: IfNotPresent #pullSecrets: # - name: spaceapps-nexus-asb-ro - serviceType: NodePort + serviceType: ClusterIP servicePort: 80 containerPort: 80 replicaCount: 1 - # The URL used to access the frontend (required by the backend to authorize the requests) + # The full URL of the frontend + # Also used by the backend to authorize the requests (see also api.additionalAllowedHosts, below) publicUrl: "" api: @@ -30,13 +31,15 @@ api: pullPolicy: IfNotPresent #pullSecrets: # - name: spaceapps-nexus-asb-ro - serviceType: NodePort - servicePort: 8000 + serviceType: ClusterIP + servicePort: 80 containerPort: 8000 replicaCount: 1 adminUser: "" adminPassword: "" adminEmail: "" + # Comma-separated list of domain names (will be added to web.publicUrl) + additionalAllowedHosts: "" persistence: enabled: true @@ -109,6 +112,7 @@ nodeSelector: {} oidc: enabled: false + realm: eoepca realmBaseUrl: ".../realms/master" # Client ID and Secret set in SealedSecret clientId: "" @@ -123,6 +127,19 @@ oidc: rpRedirectUri: "" rpSignAlgo: "RS256" + iam_provisioning: + enabled: false + keycloakProviderConfig: keycloak-provider-config + clientName: Application Quality BB + clientDescription: Application Quality Web Portal and Grafana OIDC + clientSecretName: application-quality-iam-client + clientSecretKey: client_secret + clientEnabled: true + namespace: iam-management + accessType: PUBLIC + httpScheme: https + initialiseTestUsers: false + sonarqube: enabled: false serverUrl: "" @@ -135,4 +152,17 @@ tolerations: [] affinity: {} serviceAccount: - create: false \ No newline at end of file + create: false + +notifications: + enabled: false + middleware: "knative" + brokerName: "primary" + brokerNamespace: "default" + # Also used as type prefix for incoming notifications + channelPrefix: "org.eoepca.application-quality" + responseSource: "/eoepca/application-quality" + responseTypePrefix: "org.eoepca.application-quality.response" + +automations: + enabled: false \ No newline at end of file