Skip to content

Commit 21f08bc

Browse files
Merge pull request #24 from DataKitchen/release/2.3.2
Release/2.3.2
2 parents b0663f1 + c174ac2 commit 21f08bc

24 files changed

+163
-58
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -169,3 +169,6 @@ observability_ui/node_modules/
169169

170170
# Terraform
171171
.terraform*
172+
173+
# Helm
174+
**/*.tgz

common/apscheduler_extensions.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ def validate_cron_expression(expression: str) -> list[str]:
5858
if len(values) != 5:
5959
errors.append(f"Got {len(values)} fields. Expected 5.")
6060

61-
for (field_name, field_class), value in zip(CRON_EXPRESSION_FIELDS, values, strict=True):
61+
for (field_name, field_class), value in zip(CRON_EXPRESSION_FIELDS, values, strict=False):
6262
try:
6363
field_class(field_name, value)
6464
except ValueError:

common/entity_services/project_service.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ def get_test_outcomes_with_rules(
5858
query = TestOutcome.select(TestOutcome).where(TestOutcome.component.in_(project.components))
5959
if rules.search is not None:
6060
query = query.where(
61-
((TestOutcome.name ** f"%{rules.search}%") | (TestOutcome.description ** f"%{rules.search}%"))
61+
(TestOutcome.name ** f"%{rules.search}%") | (TestOutcome.description ** f"%{rules.search}%")
6262
)
6363
if filters:
6464
if statuses := filters.statuses:

deploy/charts/observability-app/Chart.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apiVersion: v2
22
name: dataops-observability-app
33
type: application
44
appVersion: "2.x.x"
5-
version: "2.1.0"
5+
version: "2.2.0"
66

77
description: DataOps Observability
88
home: https://datakitchen.io

deploy/charts/observability-app/templates/agent-api.yaml

+8
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ spec:
6161
name: {{ .Values.observability.keys_secrets_name | quote }}
6262
key: AGENT_API_KEY_FLASK_SECRET
6363
{{- end }}
64+
{{- with .Values.extraVolumeMounts }}
65+
volumeMounts:
66+
{{ toYaml . | nindent 12 }}
67+
{{- end }}
6468
command: [ "/dk/bin/gunicorn" ]
6569
args: [ "-c", "/dk/gunicorn.conf.py", "agent_api.app:app" ]
6670
readinessProbe:
@@ -74,6 +78,10 @@ spec:
7478
- name: Host
7579
value: {{ tpl .Values.agent_api.hostname . | quote }}
7680
{{- end }}
81+
{{- with .Values.extraVolumes }}
82+
volumes:
83+
{{ toYaml . | nindent 8 }}
84+
{{- end }}
7785
{{- with .Values.agent_api.nodeSelector }}
7886
nodeSelector:
7987
{{- toYaml . | nindent 8 }}
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,23 @@
1-
{{- range .Values.cli_hook.enable }}
1+
{{- range $index, $job := .Values.cli_hook.enable }}
22
apiVersion: batch/v1
33
kind: Job
44
metadata:
5-
name: "cli-job"
5+
name: cli-job-{{ default $index .name }}
66
annotations:
77
"helm.sh/hook": {{ join ", " .phases }}
88
"helm.sh/hook-weight": {{ default 0 .weight | quote }}
99
"helm.sh/hook-delete-policy": hook-succeeded, before-hook-creation
1010
spec:
1111
template:
1212
metadata:
13-
name: "cli-job"
13+
name: cli-job-{{ default $index .name }}
1414
spec:
1515
restartPolicy: Never
1616
{{- with $.Values.imagePullSecrets }}
1717
imagePullSecrets:
1818
{{- toYaml . | nindent 8 }}
1919
{{- end }}
20+
serviceAccountName: {{ include "observability.serviceAccountName" $ }}
2021
containers:
2122
- name: cli-hook
2223
image: {{ include "observability.cli_hook.image" $ | quote }}
@@ -25,9 +26,21 @@ spec:
2526
{{- include "observability.environment.base" $ | nindent 12 }}
2627
{{- include "observability.environment.database" $ | nindent 12 }}
2728
{{- include "observability.environment.pythonpath" $ | nindent 12 }}
29+
{{- with $.Values.extraVolumeMounts }}
30+
volumeMounts:
31+
{{ toYaml . | nindent 12 }}
32+
{{- end }}
2833
command:
2934
{{- range .command }}
3035
- {{ . | quote -}}
3136
{{- end }}
37+
args:
38+
{{- range .args }}
39+
- {{ . | quote -}}
40+
{{- end }}
41+
{{- with $.Values.extraVolumes }}
42+
volumes:
43+
{{ toYaml . | nindent 8 }}
44+
{{- end }}
3245
---
3346
{{- end }}

deploy/charts/observability-app/templates/event-api.yaml

+8-1
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ spec:
6262
name: {{ .Values.observability.keys_secrets_name | quote }}
6363
key: EVENTS_KEY_FLASK_SECRET
6464
{{- end }}
65+
{{- with .Values.extraVolumeMounts }}
66+
volumeMounts:
67+
{{ toYaml . | nindent 12 }}
68+
{{- end }}
6569
command: [ "/dk/bin/gunicorn" ]
6670
args: [ "-c", "/dk/gunicorn.conf.py", "event_api.app:app" ]
6771
readinessProbe:
@@ -75,7 +79,10 @@ spec:
7579
- name: Host
7680
value: {{ tpl .Values.event_api.hostname . | quote }}
7781
{{- end }}
78-
82+
{{- with .Values.extraVolumes }}
83+
volumes:
84+
{{ toYaml . | nindent 8 }}
85+
{{- end }}
7986
{{- with .Values.event_api.nodeSelector }}
8087
nodeSelector:
8188
{{- toYaml . | nindent 8 }}

deploy/charts/observability-app/templates/observability-api.yaml

+8
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,10 @@ spec:
6161
name: {{ .Values.observability.keys_secrets_name | quote }}
6262
key: OBSERVABILITY_KEY_FLASK_SECRET
6363
{{- end }}
64+
{{- with .Values.extraVolumeMounts }}
65+
volumeMounts:
66+
{{ toYaml . | nindent 12 }}
67+
{{- end }}
6468
command: [ "/dk/bin/gunicorn" ]
6569
args: [ "-c", "/dk/gunicorn.conf.py", "observability_api.app:app" ]
6670
readinessProbe:
@@ -74,6 +78,10 @@ spec:
7478
- name: Host
7579
value: {{ tpl .Values.observability_api.hostname . | quote }}
7680
{{- end }}
81+
{{- with .Values.extraVolumes }}
82+
volumes:
83+
{{ toYaml . | nindent 8 }}
84+
{{- end }}
7785
{{- with .Values.observability_api.nodeSelector }}
7886
nodeSelector:
7987
{{- toYaml . | nindent 8 }}

deploy/charts/observability-app/templates/rules-engine.yaml

+8
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,16 @@ spec:
4545
{{- include "observability.environment.database" . | nindent 12 }}
4646
{{- include "observability.environment.kafka" . | nindent 12 }}
4747
{{- include "observability.environment.smtp" . | nindent 12 }}
48+
{{- with .Values.extraVolumeMounts }}
49+
volumeMounts:
50+
{{ toYaml . | nindent 12 }}
51+
{{- end }}
4852
command: [ "/dk/bin/rules-engine" ]
4953
{{- include "observability.probes.readiness_cmd" "rules-engine" | nindent 10 -}}
54+
{{- with .Values.extraVolumes }}
55+
volumes:
56+
{{ toYaml . | nindent 8 }}
57+
{{- end }}
5058
{{- with .Values.rules_engine.nodeSelector }}
5159
nodeSelector:
5260
{{- toYaml . | nindent 8 }}

deploy/charts/observability-app/templates/run-manager.yaml

+8
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,16 @@ spec:
4444
{{- include "observability.environment.base" . | nindent 12 }}
4545
{{- include "observability.environment.database" . | nindent 12 }}
4646
{{- include "observability.environment.kafka" . | nindent 12 }}
47+
{{- with .Values.extraVolumeMounts }}
48+
volumeMounts:
49+
{{ toYaml . | nindent 12 }}
50+
{{- end }}
4751
command: ["/dk/bin/run-manager"]
4852
{{- include "observability.probes.readiness_cmd" "run-manager" | nindent 10 -}}
53+
{{- with .Values.extraVolumes }}
54+
volumes:
55+
{{ toYaml . | nindent 8 }}
56+
{{- end }}
4957
{{- with .Values.run_manager.nodeSelector }}
5058
nodeSelector:
5159
{{- toYaml . | nindent 8 }}

deploy/charts/observability-app/templates/scheduler.yaml

+8
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,16 @@ spec:
4444
{{- include "observability.environment.base" . | nindent 12 }}
4545
{{- include "observability.environment.database" . | nindent 12 }}
4646
{{- include "observability.environment.kafka" . | nindent 12 }}
47+
{{- with .Values.extraVolumeMounts }}
48+
volumeMounts:
49+
{{ toYaml . | nindent 12 }}
50+
{{- end }}
4751
command: [ "/dk/bin/scheduler" ]
4852
{{- include "observability.probes.readiness_cmd" "scheduler" | nindent 10 -}}
53+
{{- with .Values.extraVolumes }}
54+
volumes:
55+
{{ toYaml . | nindent 8 }}
56+
{{- end }}
4957
{{- with .Values.scheduler.nodeSelector }}
5058
nodeSelector:
5159
{{- toYaml . | nindent 8 }}

observability_ui/apps/shell/src/app/projects/instances/instance-tests/instance-tests.component.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@
183183
<span headerLabel="start_time">Start Time</span>
184184
</ng-container>
185185
<ng-container *matCellDef="let test">
186-
<div dkTooltip="{{test.start_time | date: 'medium'}}">{{test.start_time | date: 'hh:mm:ss a'}}</div>
186+
<div dkTooltip="{{test.start_time | date: 'medium'}}">{{test.start_time | date: 'h:mm:ss a'}}</div>
187187
</ng-container>
188188
</ng-container>
189189
<ng-container matColumnDef="end_time"
@@ -193,7 +193,7 @@
193193
<span headerLabel="end_time">End Time</span>
194194
</ng-container>
195195
<ng-container *matCellDef="let test">
196-
<div dkTooltip="{{test.end_time | date: 'medium'}}">{{test.end_time | date: 'hh:mm:ss a'}}</div>
196+
<div dkTooltip="{{test.end_time | date: 'medium'}}">{{test.end_time | date: 'h:mm:ss a'}}</div>
197197
</ng-container>
198198
</ng-container>
199199
<ng-container matColumnDef="actions"

observability_ui/apps/shell/src/app/projects/instances/instance-timeline/instance-timeline.component.html

+4-3
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212
[start]="ganttStartDate$ | async"
1313
[end]="ganttEndDate$ | async"
1414
[nowBar]="instanceIsActive$ | async"
15-
[timeformat]="timeformat$ | async"
16-
[showDays]="spansMultipleDays$ | async">
15+
[timeformat]="timeformat$ | async">
1716

1817
<ng-template ganttLabel
1918
let-taskGroup="group">
@@ -49,8 +48,10 @@
4948
<ng-template #barTooltip>
5049
<div class="gantt-bar-tooltip">
5150
<span class="gantt-bar-tooltip--line gantt-bar-tooltip--name">{{ run.pipeline.display_name }}</span>
51+
<span *ngIf="run.pipeline.key !== run.pipeline.display_name"
52+
class="gantt-bar-tooltip--line gantt-bar-tooltip--key">Key: {{ run.pipeline.key ?? '-' }}</span>
5253
<span class="gantt-bar-tooltip--line gantt-bar-tooltip--status">{{ 'runStatus.' + run.status | translate }}</span>
53-
<span class="gantt-bar-tooltip--line gantt-bar-tooltip--key">Key: {{ run.key ?? '-' }}</span>
54+
<span class="gantt-bar-tooltip--line gantt-bar-tooltip--key">Run Key: {{ run.key ?? '-' }}</span>
5455
<span *ngIf="run.hasTime"
5556
class="gantt-bar-tooltip--line gantt-bar-tooltip--start">Start Time: {{ run.start_time | date: (timeformat$ | async) }}</span>
5657
<span *ngIf="run.hasTime && run.status !== 'RUNNING'"

observability_ui/apps/shell/src/app/projects/instances/instance-timeline/instance-timeline.component.ts

+3-8
Original file line numberDiff line numberDiff line change
@@ -56,16 +56,11 @@ export class InstanceTimelineComponent implements OnInit, OnDestroy {
5656
map(([ start, end ]) => {
5757
const timespan = end.getTime() - start.getTime();
5858
if (timespan <= this.minTimespanInMilliseconds) {
59-
return 'hh:mm:ss a';
59+
return 'MMM d, h:mm:ss a';
6060
}
61-
return 'hh:mm a';
62-
}),
63-
startWith('hh:mm a'),
64-
);
65-
spansMultipleDays$ = combineLatest([ this.ganttStartDate$, this.ganttEndDate$ ]).pipe(
66-
map(([ start, end ]) => {
67-
return (end.getTime() - start.getTime()) > 24 * 60 * 60 * 1000;
61+
return 'MMM d, h:mm a';
6862
}),
63+
startWith('MMM d, h:mm a'),
6964
);
7065

7166
private minTimespanInMilliseconds: number = 1 * 60 * 1000;

observability_ui/apps/shell/src/app/projects/overview/overview.component.html

+10-10
Original file line numberDiff line numberDiff line change
@@ -145,22 +145,22 @@ <h1 class="page-title">{{ 'overview' | translate }}</h1>
145145
<span class="gantt-bar-tooltip--line">{{ instance.errorAlertsCount }}
146146
errors, {{ instance.warningAlertsCount }} warnings</span>
147147
<span class="gantt-bar-tooltip--line gantt-bar-tooltip--runs">Total Runs: {{ instance.runsCount }}</span>
148-
<span class="gantt-bar-tooltip--line gantt-bar-tooltip--start">Start Time: {{ instance.start_time | date:'MMM d, hh:mm a' }}</span>
148+
<span class="gantt-bar-tooltip--line gantt-bar-tooltip--start">Start Time: {{ instance.start_time | date:'MMM d, h:mm a' }}</span>
149149
<span *ngIf="!instance.active"
150-
class="gantt-bar-tooltip--line gantt-bar-tooltip--end">End Time: {{ instance.end_time | date:'MMM d, hh:mm a' }}</span>
150+
class="gantt-bar-tooltip--line gantt-bar-tooltip--end">End Time: {{ instance.end_time | date:'MMM d, h:mm a' }}</span>
151151
<span class="gantt-bar-tooltip--line gantt-bar-tooltip--duration">Duration: {{ instance.start_time | duration:instance.end_time }}</span>
152152
</ng-container>
153153

154154
<ng-container *ngIf="instance.status === 'UPCOMING'">
155155

156156
<span *ngIf="instance.expected_start_time"
157157
class="gantt-bar-tooltip--line gantt-bar-tooltip--start">
158-
Expected Start Time: {{ instance.start_time | date:'MMM d, hh:mm a' }}
158+
Expected Start Time: {{ instance.start_time | date:'MMM d, h:mm a' }}
159159
</span>
160160

161161
<span *ngIf="instance.expected_end_time"
162162
class="gantt-bar-tooltip--line gantt-bar-tooltip--end">
163-
Expected End Time: {{ instance.end_time | date:'MMM d, hh:mm a' }}
163+
Expected End Time: {{ instance.end_time | date:'MMM d, h:mm a' }}
164164
</span>
165165

166166
</ng-container>
@@ -246,22 +246,22 @@ <h1 class="page-title">{{ 'overview' | translate }}</h1>
246246
<span class="gantt-bar-tooltip--line gantt-bar-tooltip--runs">{{ directive.value.active ? 'Active' : 'Ended' }}</span>
247247
<span class="gantt-bar-tooltip--line gantt-bar-tooltip--status">{{ directive.value.errorAlertsCount }}
248248
errors, {{ directive.value.warningAlertsCount }} warnings</span>
249-
<span class="gantt-bar-tooltip--line gantt-bar-tooltip--start">Start Time: {{ directive.value.start_time | date:'MMM d, hh:mm a' }}</span>
249+
<span class="gantt-bar-tooltip--line gantt-bar-tooltip--start">Start Time: {{ directive.value.start_time | date:'MMM d, h:mm a' }}</span>
250250
<span *ngIf="!directive.value.active"
251-
class="gantt-bar-tooltip--line gantt-bar-tooltip--end">End Time: {{ directive.value.end_time | date:'MMM d, hh:mm a' }}</span>
251+
class="gantt-bar-tooltip--line gantt-bar-tooltip--end">End Time: {{ directive.value.end_time | date:'MMM d, h:mm a' }}</span>
252252
<span class="gantt-bar-tooltip--line gantt-bar-tooltip--duration">Duration: {{ directive.value.start_time | duration:directive.value.end_time }}</span>
253253
<span class="gantt-bar-tooltip--line gantt-bar-tooltip--runs">Total Runs: {{ directive.value.runsCount }}</span>
254254
</ng-container>
255255

256256
<ng-container *ngIf="directive.value.status === 'UPCOMING'">
257257
<span *ngIf="directive.value.expected_start_time"
258258
class="gantt-bar-tooltip--line gantt-bar-tooltip--start mt-2">
259-
Expected Start Time: {{ directive.value.start_time | date:'MMM d, hh:mm a' }}
259+
Expected Start Time: {{ directive.value.start_time | date:'MMM d, h:mm a' }}
260260
</span>
261261

262262
<span *ngIf="directive.value.expected_end_time"
263263
class="gantt-bar-tooltip--line gantt-bar-tooltip--end">
264-
Expected End Time: {{ directive.value.end_time | date:'MMM d, hh:mm a' }}
264+
Expected End Time: {{ directive.value.end_time | date:'MMM d, h:mm a' }}
265265
</span>
266266

267267
</ng-container>
@@ -290,9 +290,9 @@ <h1 class="page-title">{{ 'overview' | translate }}</h1>
290290
<span class="gantt-bar-tooltip--line gantt-bar-tooltip--status">{{ 'runStatus.' + run.status | translate }}</span>
291291
<span class="gantt-bar-tooltip--line gantt-bar-tooltip--key">Key: {{ run.key ?? '-' }}</span>
292292
<span *ngIf="run.hasTime"
293-
class="gantt-bar-tooltip--line gantt-bar-tooltip--start">Start Time: {{ run.start_time | date: 'MMM d, hh:mm a' }}</span>
293+
class="gantt-bar-tooltip--line gantt-bar-tooltip--start">Start Time: {{ run.start_time | date: 'MMM d, h:mm a' }}</span>
294294
<span *ngIf="run.hasTime && run.status !== 'RUNNING'"
295-
class="gantt-bar-tooltip--line gantt-bar-tooltip--end">End Time: {{ run.end_time | date: 'MMM d, hh:mm a' }}</span>
295+
class="gantt-bar-tooltip--line gantt-bar-tooltip--end">End Time: {{ run.end_time | date: 'MMM d, h:mm a' }}</span>
296296
<span *ngIf="run.hasTime"
297297
class="gantt-bar-tooltip--line gantt-bar-tooltip--duration">Duration: {{ run.start_time | duration: (run.end_time ?? (now$ | async)) }}</span>
298298
</div>

0 commit comments

Comments
 (0)